
CVE-2026-43813: bypass de enforceEnvironment no CloudAttestation
enforceEnvironment do CloudAttestationAnálise de engenharia reversa da falha de validação de entrada da atestação PCC que a Apple lançou no iOS 26.6, encontrada em CloudAttestation.dylib.
O PCC.ComputeNodeValidator.policy.getter lê o byte com.apple.CloudAttestation.environment do dicionário darwinInit não verificado dentro do protobuf AttestationBundle e o coloca diretamente no NodeValidator.policy retornado ao chamador.
A correção do 26.6 introduz um novo campo de struct que deveria condicionar essa leitura à chave de política do sistema enforceEnvironment no domínio com.apple.CloudAttestation — mas esse campo nunca foi inicializado no 26.5, então a proteção estava efetivamente ausente e um pacote de atestação PCC forjado podia definir um valor de ambiente escolhido pelo atacante na cadeia de políticas do validador.
O byte em si não libera nada sozinho — ele precisa corresponder ao parâmetro expected fornecido pelo chamador para passar por EnvironmentPolicy.evaluate, e o restante da pilha de políticas de produção (requireProdTrustAnchors, requireProdFusing, requireLockedCryptexes, restrictDeveloperMode, strictCertificateValidation, transparencyProofValidation, ensembleTopologyValidation) é lido de os_policy_lookup, não do pacote.
Bancos de dados do IDA (.i64), dumps do BinExport e outros builds intermediários são ignorados pelo Git.
Similaridade Bindiff para o par corrigido: 0.68.
CVE-2026-43813.txt — descrição original do CVE (transcrição fiel da VulDB)releases.txt — IDs de build em ordem cronológicaEsta pesquisa foi fortemente auxiliada pelo MiniMax-M3. Tenha isso em mente ao ler as análises — nenhuma das análises foi verificada de forma independente, e descompilações, endereços ou índices de similaridade citados devem ser verificados novamente antes de se confiar neles.
| Build | Caminho | Função |
|---|
| 23G5057c | 23G5057c_CloudAttestation | 26.6 beta 4 (vulnerável) |
| 23G5065a | 23G5065a_CloudAttestation | 26.6 beta 5 (corrigido) |
| — | 23G5065a_CloudAttestation_vs_23G5057c_CloudAttestation.BinDiff | A diferença entre eles |
| Símbolo | 23G5057c (vulnerável) | 23G5065a (corrigido) |
|---|
PCC.ComputeNodeValidator.policy.getter | 0x235e16f5c (0x1c4) | 0x235e02fa8 (0x1dc) |
PCC.ComputeNodeValidator.init(proxyingAttestation:) | 0x235e15ca0 | 0x235e01bf4 |
Auxiliar de consulta enforceEnvironment da inicialização | (ausente) | 0x235ed01cc |
DarwinInit.environment.getter | 0x235edc880 | igual |