Checkm8-haavoittuvuuden hyödyntäminen A5–A11 Apple-laitteissa iOS 12:ssa ja iOS 16:ssa

axi0mX julkaisi 27. syyskuuta 2019 checkm8:n (lue ”checkmate”), pysyvän ja korjaamattoman bootrom-hyökkäyksen sadoille miljoonille iOS-laitteille. Vuonna 2022 hyökkäys on edelleen käynnissä moderneilla iOS 15- ja iOS 16 -jailbreak-päivityksillä A9–A11 SoC Apple -laitteille.
Mikä on Checkm8?
Checkm8 on bootrom-hyökkäys, jonka CVE-ID on CVE-2019-8900 ja jota käytetään allekirjoittamattoman koodin suorittamiseen iOS:ssä, iPadOS:ssä, tvOS:ssä ja watchOS:ssä A5:n ja A11:n prosessoreilla. Sitä käytetään enimmäkseen Apple-laitteiden jailbreakkaamiseen, ja se on suositun checkra1n-jailbreakin ydin.
Checkm8-pohjaiset jailbreakit ovat osittain kytkettyjä jailbreakeja, koska se hyödyntää USB DFU -pinon use-after-free-ominaisuutta. Sitä käyttävät ipwndfu, Fugu14, checkra1n, Palera1n, Blizzard Jailbreak, ayakurume ja muutamat muut työkalut iOS 12–iOS 17 -käyttöjärjestelmien hyökkäysten hyödyntämiseen.
Checkm8-hyökkäyksen avulla koodin voi suorittaa vain, kun iPhone tai iPad yhdistetään tietokoneeseen DFU-tilassa USB-kaapelilla. checkra1n:n avulla voi jailbreakata iOS 12:n iOS 14:ään asti ja tukee säätöjä, eikä sitä ole koskaan päivitetty lisäämään tukea iOS 15:lle.

Checkm8-käynnistyshaavoittuvuutta hyödyntävä tekijä pystyy myös suorittamaan koodia iOS 15:ssä. Palera1n Jailbreakin kehittäjä Nebula julkaisi ensimmäisen checkm8:aan perustuvan iOS 15 -jailbreakin, jossa oli tweak-injection-tuki iOS 15.0–15.3.1:ssä. Se toimii myös iOS 15.7:ään asti A9-A11-laitteilla ilman tweakeja.
Miten se toimii? C-ohjelmointikielellä funktion malloc tulisi palauttaa NULL, jos se ei pysty varaamaan pyydetyn kokoista muistia. Kutsujan tulisi tarkistaa, onko palautettu osoitin NULL ja käsitellä virhe. S5L8920 bootromissa tätä funktiota ei ole toteutettu oikein. Kun se ei pysty varaamaan muistia, se palauttaa NULL:n sijaan osoittimen muistiosoitteeseen 0x8.
Checkm8 hyödyntää tätä haavoittuvuutta mahdollistaen koodin suorittamisen iOS:ssä, iPadOS:ssä, tvOS:ssä ja watchOS:ssä. Tämä bugi on kaikissa Apple A5–A11 -laitteissa, eikä sitä voida korjata. Siksi iOS 16 on haavoittuvainen ja se voidaan jailbreakata tuetuilla laitteilla.
Huomautus: Useimmat iPhone- ja iPad-sukupolvet ovat haavoittuvia ja niitä voidaan hyödyntää checkm8:lla: iPhone 4S:stä (A5-siru) iPhone 8:aan ja iPhone X:ään (A11-siru).
Uudet laitteet, kuten 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 ja iPhone XS, ovat checkm8-yhteensopivia.
axi0mX, checkm8-hyökkäyksen takana oleva kehittäjä, julkaisi lähdekoodin GPL-3.0-lisenssillä, mikä mahdollistaa toteutuksen kolmannen osapuolen työkaluilla. Lisäksi checkm8-hyökkäys on osa hänen ipwndfu-nimistä avoimen lähdekoodin jailbreak- työkaluaan iOS-laitteille, joka on kirjoitettu Pythonilla ja Assemblylla.
Tämän lisäksi SSH Ramdisk -skripti toteuttaa checkm8-haavoittuvuuden A5–A11-laitteille SSH-ramdiskin luomiseksi ja käynnistämiseksi checkm8-laitteilla. Tätä työkalua voidaan käyttää IPA-tiedostojen pysyviin asentamiseen iOS:n vakiokäyttöjärjestelmään. TrollStore IPA -asennusohjelma ladattiin sivulatauksella tällä tavalla.
checkm8-lähdekoodi
checkm8-hyökkäys on kirjoitettu Assembly-kielellä. Alla voit tarkastella kaikkien arm64-laitteiden checkm8-hyökkäyshyökkäyksen lähdekoodia, jotka sisältävät kaikki iPhone 5S:n, iPhone 5S:n, iPhone SE:n, iPhone 7:n, iPhone 8:n ja iPhone X:n variaatiot. checkm8-lähdekoodi julkaistiin ipwndfu-jailbreakin kautta.
.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]"
Checkm8-jailbreakit
Julkaisupäivästä lähtien monet työkalut ovat käyttäneet checkm8-haavoittuvuutta iOS:n jailbreakkaamiseen. Jotkut niistä ovat julkaistuja ja käyttövalmiita, toiset ovat vasta kehitteillä. Vain Palera1n iOS 15:lle sallii hienosäätöjen asentamisen, muita työkaluja ei ole vielä julkaistu tai ne ovat hyödyllisiä vain kehittäjille.
- palera1n iOS 15.0 – iOS 17:lle.
- Palera1n Windows iOS 15.0 - iOS 17.
- WinRa1n iOS 12:lle ja iOS 17:lle.
- checkra1n iOS 12:lle – iOS 14.8.1.
- iRa1n iOS 12:lle – iOS 14.8.1.
- Fugu14 iOS 14:lle – iOS 14.8.1.
- ipwndfu iPhone 3GS:lle.
- kok3shi15 iOS 15:lle.
- kok3shi16 iOS 16:lle – iOS 16.2:lle.
- Blizzardin jailbreak iOS 15:lle ja iOS 16:lle.
- ayakurume iOS 16:lle.
- checkn1x iOS 12:lle – iOS 14.8.1.
- Odysseyn1x iOS 12:lle – iOS 14.8.1.
- Project36 iOS 15:lle.
- checkra1n Windowsille – iOS 12 ja iOS 14
checkm8 iCloud-ohitustyökalut
checkm8-haavoittuvuudella on myös suuri merkitys kaikkien iCloud Bypass -työkalujen kehityksessä. Työkalut mahdollistavat aktivointi-Hello-näytön poistamisen ja laitteen aloitusnäytön käytön iOS 12:ssa ja iOS 16:ssa. Useimmat työkalut vaativat jailbreakin palera1n:llä tai checkra1n:llä, eivätkä ne toimi SIM-kortin kanssa. Wi-Fi kuitenkin toimii, minkä ansiosta sovelluksia voi ladata sivulle ja käyttää App Storea.
- FrostByte iOS 15:lle – iOS 16.5:lle.
- iSkip iOS 15:lle ja iOS 16:lle.
- Blackw0rm iOS 12:lle ja iOS 14:lle.
- GodsHand iOS 13:lle – iOS 16:lle.
- Euphoria Activator12 iOS 12:lle – iOS 14:lle.
- Goldra1n iOS 15:lle ja iOS 16:lle.
- GreenSn0w iOS 12:lle – iOS 12.5.6.
- BlackRa1n iOS 15:lle.
- DarkRa1n iOS 15 - iOS 16:lle.
- iPass iOS 15:lle – iOS 16:lle.
Comments
J 2 kuukautta sitten
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 1 kuukausi sitten
You can't. There is no working solution for the iPhone 13. Apple patched all exploits.