
Exploit kernel r/w per ANE su iOS 15 e macOS 12
WeightBufs è un exploit di lettura/scrittura del kernel per tutti i dispositivi Apple con supporto Neural Engine.
Bug ed Exploit di @simo36, puoi leggere le mie slide della presentazione al POC per maggiori dettagli sulle vulnerabilità e sulle tecniche di sfruttamento.
L'exploit non si basa su alcun indirizzo o offset hardcoded e dovrebbe funzionare COSÌ COM'È su macOS12 fino a 12.4 e *OS 15 fino a 15.5.
Le vulnerabilità del kernel interessano tutte le versioni di iOS 15 (fino alla 16.0), tuttavia la sandbox escape è stata corretta in iOS 15.6. Di conseguenza, per far funzionare di nuovo le cose su iOS 15.6/15.7 è necessario rompere la catena dell'exploit e utilizzare un'altra sandbox escape. Anche se ho un'altra sandbox escape che funziona fino a iOS 16.1, non sono sicuro che le tecniche di kernel exploit siano ancora utilizzabili su iOS 15.6+.
L'exploit combina 4 vulnerabilità che ho scoperto e segnalato in modo indipendente ad Apple:
CVE-2022-32845 : bypass del controllo della firma aned per model.hwx.CVE-2022-32948 : lettura fuori dai limiti (OOB Read) in DeCxt::FileIndexToWeight() dovuta alla mancanza di convalida dell'indice dell'array.CVE-2022-42805 : lettura arbitraria potenziale in ZinComputeProgramUpdateMutables() dovuta a un problema di integer overflow.CVE-2022-32899 : buffer underflow in DeCxt::RasterizeScaleBiasData() dovuto a un problema di integer overflow.Ci sono alcune situazioni in cui l'exploit potrebbe fallire:
MUTK, tuttavia l'exploit rileva il fallimento in anticipo, evitando che il dispositivo vada in crash. È sufficiente eseguire di nuovo l'exploit e dovrebbe riuscire al secondo tentativo.DEBUG_EXPLOIT_STAGE_2_KERN_PANIC e DEBUG_EXPLOIT_STAGE_3_KERN_PANIC per maggiori dettagli.WeightBufs include i file header del framework AppleNeuralEngine generati da Elias Limneos tramite classdump-dyld 1.0.
WeightBufs è rilasciato sotto licenza MIT.