SELINUX -> SEAndroid 로 바꾸었다.
안드로이드 어플의 기본 패키징 단위는 APK이다. 요샌 보안상 obex인가 obdx인가… 둘로 쪼개서 앱 카피를 힘들게 했다. 그런데 빌드 옵션에 따라 합쳐지게 할 수도 있으니 APK가 하나의 앱 단위로 봐도 되겠다.
맥 퍼미션.xml 파일은 그 APK에서 키를 뽑아(물론 퍼블릭키) 그 키에 맞는 SEINFO 값을 주기 위한 맵이다. 키 값들이 맥 퍼미션에 저장되고 거기에 맞는 SEINFO 값을 적어 준다. 안드로이드 4.3 기준으로 얘는 요기서 부른다.
AOSP/frameworks/base/services/java/com/android/server/pm$
vim SELinuxMMAC.java
// Locations of potential install policy
files.
private static final File[]
INSTALL_POLICY_FILE = {
new
File(Environment.getDataDirectory(), "system/mac_permissions.xml"),
new
File(Environment.getRootDirectory(),
"etc/security/mac_permissions.xml"),
null};
얘다.
sSigSeinfo 해시맵에 키랑 SEINFO를 넣는다. SEINFO는 걍 플래인 텍스트고 한 단어라고 생각하면 된다. Platform 같은.
PackageManagerService.java에 보면(우리가 말하는 안드로이드 패키지 매니저의 본체)
5497 int parseFlags, int scanMode, long currentTime, UserHandle user) {
5498 File scanFile = new File(pkg.mScanPath);
요런애 안에
5517 if (mFoundPolicyFile) {
5518 Slog.w(TAG, "SELinuxMMAC.assignSeinfoValue");
5519 SELinuxMMAC.assignSeinfoValue(pkg);
5520 }
이렇게 쓰인다. 해당패키지에 맞는 키 값의 SEINFO를 써 주는 것이다.
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.