Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-20687-AppleJPEGDriver-UAF — CVE-2026-20687: AppleJPEGDriver startDecoder 타임아웃 UAF — iOS/macOS 커널 취약점으로 지연 패닉 유발 (A19 Pro, iOS 26.3 RC) | Kitploit
도구/GitHubGitHub/0xjohnnydev/cve-2026-20687-applejpegdriver-uaf
iOS SecurityVulnerability AnalysisExploitationMobile SecurityBinary Exploitation
GitHub0xjohnnydev/cve-2026-20687-applejpegdriver-uaf

CVE-2026-20687-AppleJPEGDriver-UAF

CVE-2026-20687: AppleJPEGDriver startDecoder 타임아웃 UAF — iOS/macOS 커널 취약점으로 지연 패닉 유발 (A19 Pro, iOS 26.3 RC)

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트
288382개월 전Kitploit 검토 완료

CVE-2026-20687: AppleJPEGDriver startDecoder() 타임아웃 UAF (지연된 패닉)

CVE-2026-20687 | 작성자: Johnny Franks (@0xjohnny)

구성 요소: 커널

영향: 앱이 예기치 않은 시스템 종료를 유발하거나 커널 메모리에 쓸 수 있음

설명: 메모리 관리 개선을 통해 use after free 문제가 해결되었습니다.

— Apple 보안 콘텐츠, iOS 26.4 및 iPadOS 26.4

이로 인해 기기가 커널 패닉에 빠집니다. 작업 내용을 저장하세요.

iOS 26.3 (23D125), iPhone18,2 (iPhone 17 Pro Max, A19 Pro)에서 테스트되었습니다.

트리거

직접 트리거:

  1. PoC를 실행하고 Panic을 탭합니다 (드라이버를 초기화하고 비동기 작업을 큐에 넣습니다).
  2. 그런 다음 Camera를 엽니다 (영향받는 빌드에서 동기 JPEG 디코드 + 타임아웃을 안정적으로 유발합니다).
  3. 타임아웃 경로는 요청을 해제하지만, 해당 요청에 내장된 큐 노드 포인터를 코덱별 벡터에 그대로 남겨둡니다.
  4. 이후 큐 순회에서 오래된 노드를 역참조하여 커널 패닉이 발생합니다 (MTE 태그 검사 오류).
// PoC: 드라이버를 초기화합니다. 패닉은 보통 Camera를 열 때까지 지연됩니다.
IOServiceOpen("AppleJPEGDriver");
for (int i = 0; i < N; i++) {
  startDecoder_async();                   // queue_io_gated(): vector.push(req + 0x78)
}
IOServiceClose(conn);

// 이후 Camera를 열면 다음이 트리거됩니다:
startDecoder_sync();
  queue_io_gated(): vector.push(req + 0x78);
  wait(10s) -> TIMEOUT;
  pool_free(req);                         // BUG: 디큐하지 않음 (req + 0x78)

// 그 이후 (finish_io_gated):
fullSpeedRequestExist():
  node_ptr = vector[i];                   // 오래된 포인터: node_ptr == (해제된 req + 0x78)
  req2 = *(node_ptr + 0x8);              // req+0x80에 대한 UAF 읽기 -> MTE 태그 오류 -> 패닉

빌드 및 실행

  1. Xcode에서 ios-app/Test.xcodeproj를 엽니다
  2. iOS 기기를 선택합니다 (시뮬레이터는 유용하지 않습니다)
  3. 빌드 및 실행합니다
  4. Panic 버튼을 탭합니다
  5. 지연된 패닉을 트리거하려면 Camera 앱을 엽니다
도구 다운로드