
CVE-2026-43813: Bypass de enforceEnvironment en CloudAttestation
enforceEnvironment en CloudAttestationAnálisis de ingeniería inversa del fallo de validación de entrada de la atestación PCC
que Apple distribuyó en iOS 26.6, encontrado en CloudAttestation.dylib.
PCC.ComputeNodeValidator.policy.getter lee el byte
com.apple.CloudAttestation.environment del diccionario darwinInit no
verificado dentro del protobuf AttestationBundle y lo introduce
directamente en el NodeValidator.policy devuelto al llamador.
El parche de 26.6 introduce un nuevo campo de estructura que se supone que
condiciona esa lectura a la clave de política del sistema enforceEnvironment
en el dominio com.apple.CloudAttestation — pero ese campo nunca se
inicializó en 26.5, por lo que ese control estaba efectivamente ausente
y un paquete de atestación PCC manipulado podía introducir un valor de
entorno elegido por el atacante en la cadena de políticas del validador.
El byte en sí no desbloquea nada por sí solo — debe coincidir con el
parámetro expected suministrado por el llamador para superar
EnvironmentPolicy.evaluate, y el resto de la pila de políticas de
producción (requireProdTrustAnchors, requireProdFusing,
requireLockedCryptexes, restrictDeveloperMode,
strictCertificateValidation, transparencyProofValidation,
ensembleTopologyValidation) se lee de os_policy_lookup, no del paquete.
Las bases de datos de IDA (.i64), los volcados de BinExport y otras
compilaciones intermedias están ignoradas por git.
Similitud de Bindiff para el par parcheado: 0.68.
CVE-2026-43813.txt — descripción original del CVE (texto literal de VulDB)releases.txt — IDs de compilación en orden cronológicoEsta investigación contó con una gran ayuda de MiniMax-M3. Tenlo en cuenta al leer los informes — ninguno de los análisis está verificado de forma independiente, y cualquier descompilación, dirección o puntuación de similitud citada debe volver a comprobarse antes de confiar en ella.
| Compilación | Ruta | Rol |
|---|
| 23G5057c | 23G5057c_CloudAttestation | 26.6 beta 4 (vulnerable) |
| 23G5065a | 23G5065a_CloudAttestation | 26.6 beta 5 (parcheado) |
| — | 23G5065a_CloudAttestation_vs_23G5057c_CloudAttestation.BinDiff | La diferencia entre ambos |
| Símbolo | 23G5057c (vuln) | 23G5065a (parcheado) |
|---|
PCC.ComputeNodeValidator.policy.getter | 0x235e16f5c (0x1c4) | 0x235e02fa8 (0x1dc) |
PCC.ComputeNodeValidator.init(proxyingAttestation:) | 0x235e15ca0 | 0x235e01bf4 |
Helper de búsqueda de enforceEnvironment para el init | (ausente) | 0x235ed01cc |
DarwinInit.environment.getter | 0x235edc880 | igual |