Checkm8 exploit per i dispositivi Apple A5-A11 su iOS 12 - iOS 16

Il 27 settembre 2019 axi0mX ha rilasciato checkm8 (leggi "scacco matto"), un exploit bootrom permanente e non patchabile per centinaia di milioni di dispositivi iOS. Nel 2022, l'exploit è ancora in esecuzione sui moderni jailbreak di iOS 15 e iOS 16 per dispositivi Apple con SoC A9-A11.
Che cos'è Checkm8?
Checkm8 è un exploit bootrom con ID CVE-2019-8900 utilizzato per eseguire codice non firmato su iOS, iPadOS, tvOS e watchOS, con processori compresi tra A5 e A11. Viene utilizzato principalmente per il jailbreak dei dispositivi Apple ed è il cuore del popolare jailbreak checkra1n.
I jailbreak basati su checkm8 sono jailbreak semi-tethered, poiché l'exploit sfrutta un meccanismo "use-after-free" nello stack DFU USB. È utilizzato da ipwndfu, Fugu14, checkra1n, Palera1n, Blizzard Jailbreak, ayakurume e un paio di altri strumenti per exploitare iOS 12 – iOS 17.
Utilizzando l'exploit checkm8, è possibile eseguire il codice solo quando si collega l'iPhone o l'iPad al computer in modalità DFU tramite un cavo USB. checkra1n consente di effettuare il jailbreak da iOS 12 a iOS 14 con supporto per le modifiche e non è mai stato aggiornato per aggiungere il supporto per iOS 15.

L'exploit bootrom Checkm8 è in grado di eseguire codice anche su iOS 15. Nebula, lo sviluppatore di Palera1n Jailbreak, ha rilasciato il primo jailbreak per iOS 15 basato su checkm8 con supporto per tweak injection su iOS 15.0 - 15.3.1. Funziona anche fino a iOS 15.7 su dispositivi A9-A11 senza tweak.
Come funziona? Nel linguaggio di programmazione C, la funzione malloc dovrebbe restituire NULL se non è in grado di allocare memoria della dimensione richiesta. Il chiamante dovrebbe verificare se il puntatore restituito è NULL e gestire l'errore. Nella bootrom S5L8920 questa funzione non è implementata correttamente. Quando non è in grado di allocare memoria, invece di NULL restituisce un puntatore all'indirizzo di memoria 0x8.
Checkm8 sfrutta questa vulnerabilità, rendendo possibile l'esecuzione di codice su iOS, iPadOS, tvOS e watchOS. Questo bug è presente su tutti i dispositivi Apple A5-A11 e non può essere risolto. Pertanto, iOS 16 è vulnerabile e può essere jailbroken sui dispositivi supportati.
Nota: la maggior parte delle generazioni di iPhone e iPad sono vulnerabili e possono essere sfruttate tramite checkm8: dall'iPhone 4S (chip A5) all'iPhone 8 e iPhone X (chip A11).
Nuovi dispositivi come iPhone 14, iPhone 14 Pro, iPhone 13 Mini, iPhone 13, iPhone 13 Pro, iPhone 13 Pro Max, iPhone 12, iPhone 12 Pro, iPhone 12 Mini, iPhone 12 Pro Max, iPhone 11 Pro, iPhone 11, iPhone 11 Pro Max, iPhone XR, iPhone XS Max e iPhone XS sono a prova di checkm8.
axi0mX, lo sviluppatore dell'exploit checkm8, ha rilasciato il codice sorgente con licenza GPL-3.0, rendendo possibile l'implementazione con strumenti di terze parti. Inoltre, l'exploit checkm8 fa parte del suo strumento di jailbreak open source ipwndfu per dispositivi iOS, scritto in Python e Assembly.
Inoltre, l'exploit checkm8 per A5–A11 è implementato anche dallo script SSH Ramdisk per creare e avviare un ramdisk SSH sui dispositivi checkm8. Questo strumento può essere utilizzato per installare file IPA in modo permanente su iOS standard. Il TrollStore IPA Installer è stato trasferito in questo modo.
Codice sorgente di checkm8
L'exploit checkm8 è stato scritto in Assembly. Di seguito, puoi visualizzare il codice sorgente dell'exploit checkm8 per tutti i dispositivi arm64, incluse tutte le varianti di iPhone 5S, iPhone 5S, iPhone SE, iPhone 7, iPhone 8 e iPhone X. Il codice sorgente di checkm8 è stato pubblicato tramite jailbreak di ipwndfu.
.text .pool .set PAYLOAD_OFFSET, 0xBAD00006 .set PAYLOAD_SIZE, 0xBAD00007 .set PAYLOAD_DEST, 0xBAD00005 .set PAYLOAD_PTR, 0xBAD00008 .set gUSBSerialNumber, 0xBAD00002 .set gUSBSRNMStringDescriptor, 0xBAD00004 .set gUSBDescriptors, 0xBAD00001 .set usb_create_string_descriptor, 0xBAD00003 .global _main _main: MOV X19, #0 // HACK: do not free this usb request STP X29, X30, [SP,#-0x10]! MOV X29, SP LDR X0, =gUSBDescriptors LDP X0, X1, [X0] ADR X2, USB_DESCRIPTOR LDP X3, X4, [X2] STP X3, X4, [X0] STP X3, X4, [X1] LDP X3, X4, [X2,#0x10] STP X3, X4, [X0,#0x10] STP X3, X4, [X1,#0x10] LDR X0, =gUSBSerialNumber find_zero_loop: ADD X0, X0, #1 LDRB W1, [X0] CBNZ W1, find_zero_loop ADR X1, PWND_STRING LDP X2, X3, [X1] STP X2, X3, [X0] LDR X0, =gUSBSerialNumber LDR X1, =usb_create_string_descriptor BLR X1 LDR X1, =gUSBSRNMStringDescriptor STRB W0, [X1] LDR X0, =PAYLOAD_DEST ADR X1, _main LDR X2, =PAYLOAD_OFFSET ADD X1, X1, X2 MOV X2, #0 LDR X3, =PAYLOAD_SIZE LDR X4, =PAYLOAD_PTR ADD X5, X0, #0x18 STR X5, [X4] copy_loop: LDP X3, X4, [X1] STP X3, X4, [X0] LDP X3, X4, [X1,#0x10] STP X3, X4, [X0,#0x10] LDP X3, X4, [X1,#0x20] STP X3, X4, [X0,#0x20] LDP X3, X4, [X1,#0x30] STP X3, X4, [X0,#0x30] DC CIVAC, X0 DMB SY ADD X0, X0, #0x40 ADD X1, X1, #0x40 ADD X2, X2, #0x40 CMP X2, X3 B.CC copy_loop SYS #0, c7, c5, #0 DSB SY ISB LDP X29, X30, [SP],#0x10 RET USB_DESCRIPTOR: .word 0x190209, 0x80050101, 0x409fa, 0x1fe0000, 0x21070000, 0xa01, 0x8, 0x0 PWND_STRING: .asciz " PWND:[checkm8]"
Jailbreak di Checkm8
Fin dal giorno del rilascio, l'exploit checkm8 è stato utilizzato da molti strumenti per il jailbreak di iOS. Alcuni di essi sono già pubblicati e pronti all'uso, altri sono ancora in fase di sviluppo. Solo Palera1n per iOS 15 consente di installare modifiche, altri strumenti non sono ancora stati rilasciati o sono utili solo agli sviluppatori.
- palera1n per iOS 15.0 – iOS 17.
- Palera1n Windows per iOS 15.0 – iOS 17.
- WinRa1n per iOS 12 – iOS 17.
- checkra1n per iOS 12 – iOS 14.8.1.
- iRa1n per iOS 12 – iOS 14.8.1.
- Fugu14 per iOS 14 – iOS 14.8.1.
- ipwndfu per iPhone 3GS.
- kok3shi15 per iOS 15.
- kok3shi16 per iOS 16 – iOS 16.2.
- Jailbreak di Blizzard per iOS 15 e iOS 16.
- ayakurume per iOS 16.
- checkn1x per iOS 12 – iOS 14.8.1.
- Odysseyn1x per iOS 12 – iOS 14.8.1.
- Project36 per iOS 15.
- checkra1n per Windows – iOS 12 fino a iOS 14
Strumenti di bypass di iCloud checkm8
L'exploit checkm8 è anche un elemento importante nello sviluppo di tutti gli strumenti di bypass di iCloud, che consentono agli utenti di rimuovere la schermata di attivazione e accedere alla schermata Home del dispositivo su iOS 12 – iOS 16. La maggior parte degli strumenti richiede un jailbreak con palera1n o checkra1n e non funziona con una scheda SIM; tuttavia, il Wi-Fi funziona, consentendo il sideload delle app e l'accesso all'App Store.
- FrostByte per iOS 15 – iOS 16.5.
- iSkip per iOS 15 – iOS 16.
- Blackw0rm per iOS 12 – iOS 14.
- GodsHand per iOS 13 – iOS 16.
- Euphoria Activator12 per iOS 12 – iOS 14.
- Goldra1n per iOS 15 – iOS 16.
- GreenSn0w per iOS 12 – iOS 12.5.6.
- BlackRa1n per iOS 15.
- DarkRa1n per iOS 15 – iOS 16.
- iPass per iOS 15 – iOS 16.
Comments
J 2 mesi fa
Hi Kuba,
My device is passcode locked (my girlfriend forgot the code). I need to reset it and I have limited internet data. I downloaded a beta IPSW but idevicerestore can only use it if I have your bootrom exploit in place. I am on Linux. Is it possible to bootrom exploit the locked phone? It's iPhone 13.Thank you!
qbap 2 mesi fa
You can't. There is no working solution for the iPhone 13. Apple patched all exploits.