
CVE-2026-43813: bypass di enforceEnvironment in CloudAttestation
enforceEnvironment di CloudAttestationAnalisi di reverse engineering del bug di validazione dell'input dell'attestazione PCC che Apple ha distribuito con iOS 26.6, presente in CloudAttestation.dylib.
PCC.ComputeNodeValidator.policy.getter legge il byte com.apple.CloudAttestation.environment dal dizionario darwinInit non verificato all'interno del protobuf AttestationBundle e lo inserisce direttamente nella NodeValidator.policy restituita al chiamante.
La correzione 26.6 introduce un nuovo campo della struct che dovrebbe vincolare quella lettura alla chiave di policy di sistema enforceEnvironment nel dominio com.apple.CloudAttestation — ma quel campo non è mai stato inizializzato in 26.5, quindi il controllo era di fatto assente e un bundle di attestazione PCC appositamente creato poteva inserire un valore di environment scelto dall'attaccante nella catena di policy del validator.
Il byte in sé non sblocca nulla da solo — deve corrispondere al parametro expected fornito dal chiamante per superare EnvironmentPolicy.evaluate, e il resto dello stack di policy di produzione (requireProdTrustAnchors, requireProdFusing, requireLockedCryptexes, restrictDeveloperMode, strictCertificateValidation, transparencyProofValidation, ensembleTopologyValidation) viene letto da os_policy_lookup, non dal bundle.
I database IDA (.i64), i dump BinExport e le altre build intermedie sono ignorati da git.
Similarità Bindiff per la coppia corretta: 0.68.
CVE-2026-43813.txt — descrizione originale della CVE (testo integrale da VulDB)releases.txt — ID delle build in ordine cronologicoQuesta ricerca è stata fortemente assistita da MiniMax-M3. Tienilo presente quando leggi i writeup — nessuna delle analisi è stata verificata in modo indipendente, e qualsiasi decompilazione, indirizzo o punteggio di similarità citato dovrebbe essere ricontrollato prima di farvi affidamento.
| Build | Percorso | Ruolo |
|---|
| 23G5057c | 23G5057c_CloudAttestation | 26.6 beta 4 (vulnerabile) |
| 23G5065a | 23G5065a_CloudAttestation | 26.6 beta 5 (corretto) |
| — | 23G5065a_CloudAttestation_vs_23G5057c_CloudAttestation.BinDiff | Il diff tra i due |
| Simbolo | 23G5057c (vulnerabile) | 23G5065a (corretto) |
|---|
PCC.ComputeNodeValidator.policy.getter | 0x235e16f5c (0x1c4) | 0x235e02fa8 (0x1dc) |
PCC.ComputeNodeValidator.init(proxyingAttestation:) | 0x235e15ca0 | 0x235e01bf4 |
Helper di lookup enforceEnvironment dell'init | (mancante) | 0x235ed01cc |
DarwinInit.environment.getter | 0x235edc880 | stesso |