Android 10~14 버전별 SELinux 정책 변화 분석
Android는 보안을 강화하기 위해 SELinux(보안 강화 리눅스)를 도입하였으며, 각 버전이 업데이트될 때마다 정책이 지속적으로 개선되고 있습니다. 본 글에서는 Android 10부터 Android 14까지의 SELinux 정책 변화를 비교 분석하고, 주요 변경 사항과 그 영향을 설명드리겠습니다.
1. Android 10 (Q)의 SELinux 정책 변화
Android 10에서는 보안 강화를 위한 SELinux 정책 변경이 대폭 이루어졌습니다. 주요 사항은 다음과 같습니다.
1.1 APEX 모듈 도입으로 인한 SELinux 변경
Android 10에서는 APEX(Application Package Extension) 모듈이 도입되면서, 시스템 파일 및 라이브러리의 배포 방식이 변경되었습니다. 이에 따라 SELinux 정책도 다음과 같이 변경되었습니다.
- APEX 관련 보안 컨텍스트 추가
/apex/
디렉토리에 대한 새로운file_contexts
정의system_apex
및vendor_apex
타입 도입- APEX 내 바이너리에 대한 실행 권한 명확화
/apex(/.*)? u:object_r:system_apex_file:s0
1.2 neverallow
규칙 강화
보안 강화를 위해 새로운 neverallow
규칙이 추가되었습니다. 주요 사항은 다음과 같습니다.
init
프로세스가 특정 디렉토리의 파일을 직접 수정하는 것을 차단system_app
이vendor
영역을 직접 접근하지 못하도록 제한untrusted_app
도메인의 권한 축소
neverallow { system_server system_app } vendor_file:dir write;
neverallow untrusted_app devpts:chr_file { read write };
1.3 vendor
와 system
간의 보안 경계 강화
Android 10부터 system
과 vendor
의 분리가 더욱 엄격하게 적용되었습니다. vendor
영역에서 실행되는 바이너리는 system
영역의 리소스에 접근할 수 없도록 정책이 변경되었습니다.
2. Android 11 (R)의 SELinux 정책 변화
Android 11에서는 Scoped Storage와 Background Location 보안 정책 강화에 따라 SELinux 정책도 업데이트되었습니다.
2.1 Scoped Storage와 SELinux
Scoped Storage 정책이 적용되면서 파일 접근 권한이 더욱 제한되었습니다. 이에 따라 SELinux 정책이 다음과 같이 변경되었습니다.
untrusted_app
도메인의 파일 접근 규칙 변경- 미디어 저장소(
/storage/emulated/
)에 대한 SELinux 보안 컨텍스트 강화 system_server
의read
권한 제한 강화
/storage/emulated(/.*)? u:object_r:media_rw_data_file:s0
2.2 Background Location 정책 강화
백그라운드에서 위치 정보를 요청하는 앱에 대한 SELinux 규칙이 강화되었습니다.
location_service
역할을 수행하는 프로세스에 대한allow
정책 변경untrusted_app
이 위치 정보에 접근하는 것을 더욱 제한
allow location_service self:capability net_bind_service;
neverallow untrusted_app self:capability net_bind_service;
3. Android 12 (S)의 SELinux 정책 변화
Android 12에서는 privileged
앱과 system_server
의 보안이 더욱 강화되었습니다.
3.1 privileged
앱의 SELinux 정책 변경
privileged
앱(시스템 앱)은 보안상의 이유로 일부 API 및 리소스에 대한 접근이 제한되었습니다.
privileged_app
도메인의 네트워크 접근 제한 강화- 시스템 서비스 호출 시
audit
로그를 기록하도록 변경
neverallow privileged_app self:socket { create bind connect };
3.2 system_server
의 SELinux 정책 강화
system_server
가 실행하는 서비스와 관련된 정책이 강화되었습니다.
system_server
의 특정 디렉토리 접근 제한neverallow
규칙 추가로 인해 일부 IPC 통신 차단
neverallow system_server vendor_file:dir write;
4. Android 13 (T)의 SELinux 정책 변화
Android 13에서는 Bluetooth
및 Media Provider
관련 SELinux 정책이 크게 변경되었습니다.
4.1 Bluetooth 보안 정책 강화
Bluetooth 관련 공격을 방지하기 위해 bluetooth_service
의 권한이 변경되었습니다.
untrusted_app
이 Bluetooth 프로세스와 직접 통신하는 것을 차단bluetooth_service
의 IPC 권한 제한
neverallow untrusted_app bluetooth_service:service_manager find;
4.2 Media Provider SELinux 정책 변경
미디어 저장소(/data/media/
)에 대한 접근 정책이 강화되었습니다.
untrusted_app
이/data/media/
에 직접 접근하지 못하도록 제한- 특정 미디어 파일에 대한 접근이
mediaprovider_service
를 통해서만 가능하도록 변경
/data/media(/.*)? u:object_r:media_provider_data_file:s0
5. Android 14 (U)의 SELinux 정책 변화
Android 14에서는 AdServices
, Health Connect
, User ID Isolation
등의 새로운 보안 기능이 추가됨에 따라 SELinux 정책도 대폭 변경되었습니다.
5.1 AdServices 관련 SELinux 정책 추가
광고 추적 방지를 위한 AdServices
프로세스가 추가되면서, 이에 대한 SELinux 정책도 추가되었습니다.
adservices
도메인 추가untrusted_app
의adservices
접근 제한
allow adservices self:capability net_bind_service;
neverallow untrusted_app adservices:service_manager find;
5.2 Health Connect 관련 SELinux 정책 추가
healthconnect_service
가 처리하는 파일 및 데이터의 보안 컨텍스트 추가untrusted_app
의healthconnect_service
접근 제한
/data/healthconnect(/.*)? u:object_r:healthconnect_data_file:s0
5.3 User ID Isolation 정책 강화
Android 14에서는 UID 기반의 프로세스 격리를 더욱 강화하여, 각 앱이 다른 UID의 데이터를 직접 읽지 못하도록 SELinux 정책이 변경되었습니다.
neverallow untrusted_app other_apps:dir read;
결론
Android 10부터 Android 14까지 SELinux 정책은 지속적으로 강화되었으며, 특히 APEX, Scoped Storage, Bluetooth, Media Provider, AdServices 등의 변화에 맞추어 다양한 정책이 적용되었습니다. 각 버전별 변경 사항을 잘 파악하고 SELinux 정책을 적용해야 하며, 새로운 버전의 SELinux 변경 사항을 주기적으로 점검하는 것이 중요합니다.
'Android > Seploicy' 카테고리의 다른 글
SELinux 정책 트렌드 및 향후 예상 변화 (0) | 2025.05.19 |
---|---|
최신 Android에서 추가된 보안 정책 및 변경 사항 (0) | 2025.05.18 |
사용자 정의 SELinux 정책이 AOSP 보안 가이드라인을 준수하는지 검토하는 방법 (0) | 2025.05.15 |
SELinux 정책 최소화 및 최적화 기법 (0) | 2025.05.14 |
Sepolicy neverallow 정책을 활용한 보안 강화 (0) | 2025.05.13 |