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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/bytev0rtex/cve-2026-65349
iOS SecurityVulnerability AnalysisExploitationReverse EngineeringBinary Exploitation
GitHubbytev0rtex/cve-2026-65349

CVE-2026-65349

iOS 26.6의 XNU vfs_attr_pack_internal(getattrlist)에서 발생하는 경계를 벗어난 쓰기(Out-of-Bounds Write)에 대한 개념 증명(PoC)으로, 커널 힙 손상과 PAC 포인터 위조를 위한 익스플로잇 노트를 시연합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-65349 — vfs_attr_pack_internal의 getattrlist OOB 쓰기

구성 요소: XNU VFS — vfs_attr_pack_internal (getattrlist syscall)
영향: iOS / iPadOS 26.6 (23G71) 및 이전 버전
수정 버전: iOS / iPadOS 26.6.1 (23G83)
유형: 호출자 버퍼에 대한 Out-of-Bounds 쓰기
영향: 커널 힙 손상; 커널 컨텍스트(커널 r/w 이후)에서 PAC 서명 포인터를 공격자 제어 버퍼에 쓸 수 있음


크레딧

익명의 연구원이 발견
(Apple 보안 권고 — iOS 26.6.1 참조)


근본 원인

vfs_attr_pack_internal은 요청된 속성 비트맵을 반복하며 각 속성을 호출자의 버퍼에 순차적으로 씁니다. 속성 슬롯 51(SETXATTR_SLOT)을 쓰기 전에 현재 출력 오프셋이 bufsize를 초과했는지 확인하지 않습니다.

16자 파일 이름의 경우, 유효한 전체 속성 출력은 0x1a4(420) 바이트입니다. 슬롯 51은 오프셋 0x198(408바이트)에서 시작합니다. 호출자가 0x198 + 8보다 작은 버퍼를 제공하면, 커널은 버퍼 끝 너머로 8바이트를 씁니다:

root@kitploit:~
; vfs_attr_pack_internal (영향 경로, 26.6 / 23G71)
; 슬롯 51 쓰기 — 저장 전 경계 검사 없음
str  x_attr_data, [buf + 0x198]   ; bufsize < 0x198 + 8인 경우 OOB

속성 비트맵

기기 내 프로브(iOS 26.6에서 16자 파일 이름에 대한 getattrlist)로 검증된 유효 속성 마스크:

필드마스크
commonattr0xffe7ffff (이 커널에서는 비트 19, 20이 유효하지 않음)
fileattr0x0000363f
forkattr0xffffe003

16자 파일 이름에 이러한 마스크를 적용하면 총 출력 = 0x1a4 바이트입니다. bufsize < 0x1a0일 때마다 슬롯 51(buf+0x198)에서 OOB가 발생합니다.


iOS 26 악용 참고 사항

iOS 26에서 KHEAP_TEMP 격리로 인해 OOB 쓰기가 사용자 공간에서 인접한 힙 할당을 유용하게 직접 손상시킬 수 없습니다. 이 연구에서는 이 버그를 커널 힙 전용으로 분류합니다:

  • 사용자 공간에서: OOB 쓰기는 호출자 자신의 사용자 스택/힙에 도달 — 관찰 가능하지만 추가 프리미티브 없이는 권한 상승에 악용할 수 없음.
  • 커널 컨텍스트에서(CVE-2026-64788의 커널 쓰기 프리미티브 이후): OOB 오프셋을 통해 PAC 서명 포인터를 커널 버퍼에 쓴 다음, 제어된 호출 사이트에서 vfs_attr_pack_internal을 트리거.

iOS 26.6 탈옥 체인에서 이 버그는 최종 단계에서 호출자 버퍼에 인접한 커널 할당에 PACIA 위조 포인터를 쓰는 데 사용됩니다.


PoC 동작

poc_getattrlist_oob.c는 세 번의 호출로 OOB 경계를 시연합니다:

PoC는 테스트 대상으로 16자 파일 이름(/var/root/aaaaaaaaaaaaaaaa)을 생성하고, 세 번의 getattrlist() 호출을 모두 실행한 후 반환 코드를 출력합니다. 커널 패닉 로그(트리거된 경우)는 buf+0x198에서 오류를 표시합니다.


요구 사항

  • iOS 26.6 (23G71) 또는 이전 버전
  • /var/root/ 쓰기 권한(16자 테스트 파일 생성용; 경로는 쓰기 가능한 위치로 조정 가능)
  • 자격(entitlement) 불필요

빌드

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

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

타임라인

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

참고 자료

  • Apple 보안 권고 — iOS 26.6.1
도구 다운로드
호출버퍼 크기예상 결과
164바이트커널이 0x1a4바이트를 씀 → buf+0x198에서 OOB (끝에서 344B 초과)
20x198바이트OOB 쓰기가 버퍼 끝에서 정확히 시작
30x1a4바이트정확한 유효 크기 → 정상 성공