2013년 9월 25일 수요일

SEAndroid 024 - mac_permission.xml

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 보면(우리가 말하는 안드로이드 패키지 매니저의 본체)

 private PackageParser.Package scanPackageLI(PackageParser.Package pkg,
   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 주는 것이다.


댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...