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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/bytev0rtex/cve-2026-65330
Privilege EscalationiOS SecurityVulnerability AnalysisExploitationReverse EngineeringMobile SecurityBinary Exploitation
GitHubbytev0rtex/cve-2026-65330

CVE-2026-65330

iOS 26.6의 tmpfs setxattr 핸들러에서 수정된 PAC diversifier 우회에 대한 개념 증명으로, 사용자 공간에서 취약한 서명 경로에 도달 가능함을 보여줍니다.

저장소 보기
19시간 41분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-65330 — tmpfs setxattr PAC 우회

구성 요소: XNU VFS — default_setxattr_doubleagent (tmpfs VNOP)
영향: iOS / iPadOS 26.6 (23G71) 및 이전 버전
수정 버전: iOS / iPadOS 26.6.1 (23G83)
유형: xattr 핸들러 포인터 서명의 고정 PAC diversifier
영향: 커널 컨텍스트에서 PC 제어; 커널 쓰기 프리미티브와 결합 시 전체 권한 상승


크레딧

발견자: Bhaswanth Chigurupati, Billy Jheng Bing Jhong, Pan Zhenpeng (@Peterpan0927) — STAR Labs SG Pte. Ltd.
(Apple 보안 권고 — iOS 26.6.1 참조)


근본 원인

default_setxattr_doubleagent는 tmpfs 파일시스템의 VNOP xattr 핸들러로, xattr 핸들러 함수 포인터를 고정된 컴파일 타임 상수 PAC diversifier #0x307a 로 서명합니다.

root@kitploit:~
; XNU 커널 — default_setxattr_doubleagent (디컴파일됨)
handler_ptr = vnode_operations[VNOP_SETXATTR_SLOT];   // vnop 테이블에서 읽기
signed_ptr  = PACDA(handler_ptr, 0x307a);             // 고정 diversifier로 서명
... call AUTDA(signed_ptr, 0x307a) → BLR             // 인증 후 분기

diversifier가 고정되어 있고 공개적으로 알려져 있기 때문에, 커널 쓰기 프리미티브를 가진 공격자는 다음을 수행할 수 있습니다:

  1. 임의의 커널 주소에 대한 PAC 서명 포인터를 위조:
    forged = PACIA(shellcode_addr, 0x307a)
  2. 대상 vnode의 vnode_operations 테이블의 해당 슬롯에 forged를 기록합니다.
  3. tmpfs 마운트의 모든 파일에 setxattr() 호출 → 커널이 shellcode_addr을 실행합니다.

익스플로잇 체인에서의 역할

iOS 26.6 커널 권한 상승 체인에서:

root@kitploit:~
CVE-2026-64788 (IOGPUFamily UAF)  →  커널 읽기/쓰기 프리미티브
CVE-2026-65330 (이 버그)          →  PC 제어 → root (uid=0)

sign_ptr 프리미티브(diversifier #0x307a를 사용한 PACIA)는 탈옥 POC에서 인라인 ARM64e 어셈블리로 구현됩니다. 커널 읽기/쓰기 프리미티브는 다음 용도로 사용됩니다:

  1. 대상 vnode의 v_op 포인터를 찾습니다.
  2. 위조된 PAC 포인터를 vnode_operations[VNOP_SETXATTR_SLOT]에 기록합니다.
  3. setxattr("/tmp/trigger", ...)를 통해 실행을 트리거합니다.

PoC 동작

독립형 PoC(poc_pac_bypass.c)는 취약한 VNOP 경로를 실행합니다:

  • /var/root/poc65330_test에 테스트 파일 생성
  • XATTR_NAME="com.apple.poc.cve65330.test"로 setxattr() 호출 → default_setxattr_doubleagent에 도달
  • VNOP가 반복적으로 실행되는지 확인하기 위해 10회 반복 스트레스 패스 실행
  • 정리 경로에 도달하기 위해 removexattr() 호출
  • 테스트 파일 정리

PoC는 PAC 포인터를 위조하거나 커널 데이터를 덮어쓰지 않습니다 — 일반적인 setxattr() syscall을 통해 사용자 공간에서 취약한 #0x307a 서명 경로에 도달할 수 있음을 보여줄 뿐입니다.


요구 사항

  • iOS 26.6 (23G71) 또는 이전 버전
  • /var/root/ 파일 생성을 위한 탈옥 또는 샌드박스 이탈 (setxattr 호출 자체는 모든 프로세스에서 도달 가능 — 파일 경로는 샌드박스에서 쓰기 가능한 위치로 조정 가능)
  • 전체 PC 제어 익스플로잇을 위한 커널 쓰기 프리미티브 필요

빌드

root@kitploit:~
# 독립형 C 바이너리 (프레임워크 불필요)
clang -arch arm64 -o poc poc/poc_pac_bypass.c

# 기기 내 실행용 (서명 포함):
clang -arch arm64 -isysroot $(xcrun --sdk iphoneos --show-sdk-path) \
      -o poc poc/poc_pac_bypass.c
codesign -s "Apple Development" poc

Diversifier 검증

고정 diversifier 0x307a는 26.6 (23G71) kernelcache의 디스어셈블리에서 검증되었습니다:

root@kitploit:~
; default_setxattr_doubleagent + 0x?? (근사치)
MOVZ  x1, #0x307a          ; diversifier 상수
PACDA x0, x1               ; 핸들러 포인터 서명

호출 지점의 해당 AUTDA x0, x1은 동일한 상수를 사용하므로, diversifier 0x307a로 PACIA 위조된 모든 포인터가 성공적으로 인증됨을 확인합니다.


타임라인

날짜이벤트
2026-08-17수정 사항이 포함된 iOS 26.6.1 릴리스
2026-08-17Apple 보안 권고에 크레딧 게시

참고 자료

  • Apple 보안 권고 — iOS 26.6.1
도구 다운로드