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

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

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/enfilade-labs/cve-2026-20687-applejpegdriver-uaf
iOS SecurityMemory ForensicsVulnerability AnalysisExploitationReverse EngineeringMobile SecurityBinary Exploitation
GitHubenfilade-labs/cve-2026-20687-applejpegdriver-uaf

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-20687-AppleJPEGDriver-UAF

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

저장소 보기
24개월 전아직 검토되지 않음

CVE-2026-20687 — AppleJPEGDriver startDecoder 타임아웃 UAF

CVE-2026-20687 · Enfilade · enfilade.io

구성 요소: 커널

영향: 앱이 예기치 않은 시스템 종료를 유발하거나 커널 메모리에 쓰기를 수행할 수 있습니다.

설명: 향상된 메모리 관리를 통해 use after free 문제가 해결되었습니다.

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

대상

iOS26.3 (23D125) (테스트 완료)
macOS—
구성 요소AppleJPEGDriver
패치 버전iOS 26.4 / iPadOS 26.4
하드웨어iPhone18,2 (iPhone 17 Pro Max, A19 Pro)

경고

PoC를 실행하면 기기가 커널 패닉에 빠집니다. 실행 전에 작업을 저장하세요. 반복적인 패닉은 파일 시스템 손상을 유발할 수 있습니다. 보안 연구 목적으로만 사용하세요.

취약점

startDecoder_sync의 타임아웃 경로는 요청을 해제하지만 임베디드 큐 노드 포인터를 코덱별 벡터에 남겨둡니다. 이후 큐 순회가 오래된 노드를 역참조하고, MTE 태그 검사 적용 하에서 커널이 패닉에 빠집니다. 패닉은 일반적으로 이후 동기식 JPEG 디코딩이 실행될 때까지 지연됩니다. iPhone에서는 카메라 앱을 열 때 이 현상이 확실하게 발생합니다.

개념 증명

root@kitploit:~
// 드라이버를 준비합니다. 패닉은 일반적으로 카메라가 열릴 때까지 지연됩니다.
IOServiceOpen("AppleJPEGDriver");
for (int i = 0; i < N; i++) {
    startDecoder_async();                   // queue_io_gated: vector.push(req + 0x78)
}
IOServiceClose(conn);

// 이후 카메라를 열면 다음이 트리거됩니다:
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);               // UAF 읽기 -> MTE 태그 오류 -> 패닉

빌드 및 실행

  1. Xcode에서 ios-app/Test.xcodeproj를 엽니다.
  2. 실제 iOS 기기를 선택합니다 (시뮬레이터는 드라이버에 도달할 수 없습니다).
  3. 빌드, 실행 후 Panic을 탭합니다 (드라이버를 준비하고 비동기 작업을 큐에 넣습니다).
  4. 카메라 앱을 열어 지연된 패닉을 트리거합니다.

라이선스

LICENSE를 참조하세요.

도구 다운로드