
CVE-2026-43813: CloudAttestation enforceEnvironment bypass
enforceEnvironment de CloudAttestationAnalyse par rétro-ingénierie du bug de validation des entrées de l'attestation PCC
qu'Apple a livré avec iOS 26.6, présent dans CloudAttestation.dylib.
PCC.ComputeNodeValidator.policy.getter lit l'octet
com.apple.CloudAttestation.environment dans le dictionnaire darwinInit
non vérifié contenu dans le protobuf AttestationBundle et
le fourre directement dans la NodeValidator.policy renvoyée à l'appelant.
Le correctif 26.6 introduit un nouveau champ de structure censé conditionner cette
lecture à la clé de politique système enforceEnvironment dans le
domaine com.apple.CloudAttestation — mais ce champ n'a jamais été
initialisé dans 26.5, de sorte que la condition était en pratique absente et qu'un
bundle d'attestation PCC spécialement conçu pouvait insérer une valeur d'environnement choisie par l'attaquant dans
la chaîne de politiques du validateur.
L'octet lui-même ne déverrouille rien par lui-même — il doit correspondre au
paramètre expected fourni par l'appelant pour passer EnvironmentPolicy.evaluate,
et le reste de la pile de politiques de production (requireProdTrustAnchors,
requireProdFusing, requireLockedCryptexes, restrictDeveloperMode,
strictCertificateValidation, transparencyProofValidation,
ensembleTopologyValidation) est lu depuis os_policy_lookup, et non depuis
le bundle.
Les bases de données IDA (.i64), les dumps BinExport et les autres builds intermédiaires sont
ignorés par Git.
Similarité Bindiff pour la paire corrigée : 0.68.
CVE-2026-43813.txt — description originale de la CVE (copie conforme de VulDB)releases.txt — identifiants de build dans l'ordre chronologiqueCette recherche a été fortement assistée par MiniMax-M3. Gardez cela à l'esprit en lisant les analyses — aucune de ces analyses n'est vérifiée de manière indépendante, et toute décompilation, adresse ou score de similarité cité doit être revérifié avant de s'y fier.
| Build | Chemin | Rôle |
|---|
| 23G5057c | 23G5057c_CloudAttestation | 26.6 bêta 4 (vulnérable) |
| 23G5065a | 23G5065a_CloudAttestation | 26.6 bêta 5 (corrigé) |
| — | 23G5065a_CloudAttestation_vs_23G5057c_CloudAttestation.BinDiff | Le diff entre les deux |
| Symbole | 23G5057c (vulnérable) | 23G5065a (corrigé) |
|---|
PCC.ComputeNodeValidator.policy.getter | 0x235e16f5c (0x1c4) | 0x235e02fa8 (0x1dc) |
PCC.ComputeNodeValidator.init(proxyingAttestation:) | 0x235e15ca0 | 0x235e01bf4 |
Helper de recherche enforceEnvironment de l'init | (manquant) | 0x235ed01cc |
DarwinInit.environment.getter | 0x235edc880 | identique |