
Exploit de leitura/escrita (r/w) do kernel ANE para iOS 15 e macOS 12
WeightBufs é um exploit de leitura/escrita (r/w) no kernel para todos os dispositivos Apple com suporte a Neural Engine.
Bugs e exploit por @simo36; você pode ler meus slides de apresentação no POC para mais detalhes sobre as vulnerabilidades e as técnicas de exploração.
O exploit não depende de nenhum endereço ou offset fixo (hardcoded) e deve funcionar como está no macOS12 até 12.4 e no *OS 15 até 15.5.
As vulnerabilidades do kernel afetam todas as versões do iOS 15 (até 16.0), no entanto o escape de sandbox foi corrigido no iOS 15.6. Como resultado, é necessário quebrar a cadeia do exploit e encontrar outro escape de sandbox para que as coisas voltem a funcionar no iOS 15.6/15.7. Embora eu tenha outro escape de sandbox que funciona até o iOS 16.1, não tenho certeza se as técnicas de exploração do kernel ainda são utilizáveis no iOS 15.6+.
O exploit encadeia 4 vulnerabilidades que descobri de forma independente e reportei à Apple:
CVE-2022-32845 : bypass da verificação de assinatura do aned para model.hwx.CVE-2022-32948 : DeCxt::FileIndexToWeight() leitura fora dos limites (OOB Read) devido à falta de validação do índice do array.CVE-2022-42805 : ZinComputeProgramUpdateMutables() possível leitura arbitrária devido a um problema de estouro de inteiro.CVE-2022-32899 : DeCxt::RasterizeScaleBiasData() underflow de buffer devido a um problema de estouro de inteiro.Existem algumas situações em que o exploit pode falhar:
MUTK, no entanto o exploit detecta a falha antecipadamente, impedindo que o dispositivo trave. Basta executar o exploit novamente e ele deve ter sucesso na segunda tentativa.DEBUG_EXPLOIT_STAGE_2_KERN_PANIC e DEBUG_EXPLOIT_STAGE_3_KERN_PANIC para mais detalhes.WeightBufs inclui arquivos de cabeçalho do framework AppleNeuralEngine gerados por Elias Limneos via classdump-dyld 1.0.
WeightBufs é distribuído sob a licença MIT.