
CVE-2026-43813: CloudAttestation enforceEnvironment bypass
enforceEnvironment 우회Apple이 iOS 26.6에 포함시킨 PCC 증명 입력 검증 버그의 리버스 엔지니어링 분석. CloudAttestation.dylib에서 발견됨.
PCC.ComputeNodeValidator.policy.getter는
AttestationBundle protobuf 내부의 검증되지 않은
darwinInit 딕셔너리에서
com.apple.CloudAttestation.environment 바이트를 읽어
호출자에게 반환되는 NodeValidator.policy에 그대로 집어넣는다.
26.6 수정 패치는 com.apple.CloudAttestation 도메인의
시스템 정책 키 enforceEnvironment에 해당 읽기를 제한하도록 되어 있는
새로운 구조체 필드를 도입한다 — 그러나 그 필드는 26.5에서
전혀 초기화되지 않았고, 따라서 해당 게이트는 사실상 존재하지 않았으며,
조작된 PCC 증명 번들은 검증자의 정책 체인에
공격자가 선택한 환경 값을 설정할 수 있었다.
그 바이트 자체만으로는 아무것도 잠금 해제되지 않는다 — EnvironmentPolicy.evaluate를
통과하려면 호출자가 제공한 expected 매개변수와 일치해야 하며,
나머지 프로덕션 정책 스택(requireProdTrustAnchors,
requireProdFusing, requireLockedCryptexes, restrictDeveloperMode,
strictCertificateValidation, transparencyProofValidation,
ensembleTopologyValidation)은 번들이 아닌
os_policy_lookup에서 읽힌다.
IDA 데이터베이스(.i64), BinExport 덤프 및 기타 중간 빌드는
gitignore 처리되어 있다.
패치 전후 쌍의 Bindiff 유사도: 0.68.
CVE-2026-43813.txt — 원본 CVE 설명 (VulDB에서 그대로 인용)releases.txt — 빌드 ID를 시간순으로 정리이 연구는 MiniMax-M3의 지원을 크게 받았다. 분석 문서를 읽을 때 이 점을 유의하라 — 어떤 분석도 독립적으로 검증되지 않았으며, 인용된 디컴파일 결과, 주소 또는 유사도 점수는 신뢰하기 전에 다시 확인해야 한다.
| 빌드 | 경로 | 역할 |
|---|
| 23G5057c | 23G5057c_CloudAttestation | 26.6 beta 4 (취약) |
| 23G5065a | 23G5065a_CloudAttestation | 26.6 beta 5 (패치됨) |
| — | 23G5065a_CloudAttestation_vs_23G5057c_CloudAttestation.BinDiff | 둘 사이의 차이 |
| 심볼 | 23G5057c (취약) | 23G5065a (패치됨) |
|---|
PCC.ComputeNodeValidator.policy.getter | 0x235e16f5c (0x1c4) | 0x235e02fa8 (0x1dc) |
PCC.ComputeNodeValidator.init(proxyingAttestation:) | 0x235e15ca0 | 0x235e01bf4 |
Init enforceEnvironment 조회 헬퍼 | (없음) | 0x235ed01cc |
DarwinInit.environment.getter | 0x235edc880 | 동일 |