Checkm8-angrep for Apple-enheter av typen A5–A11 på iOS 12–iOS 16

27. september 2019 lanserte axi0mX checkm8 (les «sjakkmatt»), en permanent, uoppdaterbar bootrom-utnyttelse for hundrevis av millioner iOS-enheter. I 2022 kjører utnyttelsen fortsatt på moderne iOS 15- og iOS 16-jailbreaks for Apple-enheter med A9–A11 SoC.
Hva er Checkm8?
Checkm8 er en bootrom-utnyttelse med CVE-ID-en CVE-2019-8900 som brukes til å kjøre usignert kode på iOS, iPadOS, tvOS og watchOS, med prosessorer mellom A5 og A11. Den brukes hovedsakelig til å jailbreake Apple-enheter, og utnyttelsen er kjernen i den populære checkra1n-jailbreaken.
Jailbreaks basert på checkm8 er semi-tethered jailbreaks, ettersom utnyttelsen fungerer ved å utnytte en use-after-free-funksjon i USB DFU-stakken. Den brukes av ipwndfu, Fugu14, checkra1n, Palera1n, Blizzard Jailbreak, ayakurume og et par andre verktøy for å utnytte iOS 12–iOS 17.
Med checkm8 exploit er det bare mulig å kjøre koden når du kobler iPhone eller iPad til datamaskinen i DFU-modus via en USB-kabel. checkra1n lar deg jailbreake iOS 12 opp til iOS 14 med støtte for tweaks og ble aldri oppdatert for å legge til støtte for iOS 15.

Checkm8 bootrom-utnyttelse kan også kjøre kode i iOS 15. Nebula, utvikleren bak Palera1n Jailbreak, lanserte den første iOS 15-jailbreaken basert på checkm8 med støtte for tweak-injeksjon på iOS 15.0–15.3.1. Den fungerer også opp til iOS 15.7 på A9-A11-enheter uten tweaks.
Hvordan fungerer det? I programmeringsspråket C skal funksjonen malloc returnere NULL hvis den ikke klarer å allokere minne av den forespurte størrelsen. Kalleren skal sjekke om den returnerte pekeren er NULL og håndtere feilen. I S5L8920 bootrom er ikke denne funksjonen implementert riktig. Når den ikke klarer å allokere minne, returnerer den en peker til minneadresse 0x8 i stedet for NULL.
Checkm8 utnytter denne sårbarheten, og gjør det mulig å kjøre kode på iOS, iPadOS, tvOS og watchOS. Denne feilen finnes på alle Apple A5–A11-enheter og kan ikke fikses. Derfor er iOS 16 sårbar og kan jailbreakes på støttede enheter.
Merk: De fleste generasjoner av iPhones og iPads er sårbare og kan utnyttes med checkm8: fra iPhone 4S (A5-brikke) til iPhone 8 og iPhone X (A11-brikke).
Nye enheter som 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 og iPhone XS er sjekksikre.
axi0mX, utvikleren bak checkm8 exploit, ga ut kildekoden under GPL-3.0-lisensen, noe som gjør det mulig å implementere den for tredjepartsverktøy. I tillegg er checkm8 exploit en del av hans ipwndfu-verktøy med åpen kildekode for iOS-enheter, skrevet i Python og Assembly.
I tillegg til dette implementeres checkm8-utnyttelsen for A5–A11 også av SSH Ramdisk Script for å opprette og starte en SSH ramdisk på checkm8-enheter. Dette verktøyet kan brukes til å installere permanente IPA-filer på standard iOS. TrollStore IPA Installer ble sidelastet på denne måten.
checkm8 kildekode
checkm8 exploit ble skrevet i Assembly. Nedenfor kan du se kildekoden for checkm8 exploit for alle arm64-enheter som inkluderer alle varianter av iPhone 5S, iPhone 5S, iPhone SE, iPhone 7, iPhone 8 og iPhone X. checkm8-kildekoden ble publisert gjennom ipwndfu jailbreak.
.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 Jailbreaks
Siden utgivelsesdagen har checkm8 exploit blitt brukt av mange verktøy for å jailbreake iOS. Noen av dem er publiserte og klare til bruk, andre er så vidt under utvikling. Bare Palera1n for iOS 15 lar deg installere justeringer, andre verktøy er ikke utgitt ennå eller er bare nyttige for utviklere.
- palera1n for iOS 15.0 – iOS 17.
- Palera1n Windows for iOS 15.0 – iOS 17.
- WinRa1n for iOS 12–iOS 17.
- checkra1n for iOS 12 – iOS 14.8.1.
- iRa1n for iOS 12 – iOS 14.8.1.
- Fugu14 for iOS 14 – iOS 14.8.1.
- ipwndfu for iPhone 3GS.
- kok3shi15 for iOS 15.
- kok3shi16 for iOS 16 – iOS 16.2.
- Blizzard Jailbreak for iOS 15 og iOS 16.
- Ayakurume for iOS 16.
- checkn1x for iOS 12 – iOS 14.8.1.
- Odysseyn1x for iOS 12 – iOS 14.8.1.
- Project36 for iOS 15.
- checkra1n for Windows – iOS 12 og oppover fra iOS 14
checkm8 iCloud Bypass-verktøy
checkm8-utnyttelsen er også en stor del av utviklingen av alle iCloud Bypass-verktøy som lar brukere fjerne aktiveringsskjermen og få tilgang til enhetens startskjerm på iOS 12–iOS 16. De fleste verktøyene krever jailbreak med palera1n eller checkra1n og fungerer ikke med SIM-kort. Wi-Fi fungerer derimot, slik at du kan sidelaste apper og få tilgang til App Store.
- FrostByte for iOS 15 – iOS 16.5.
- iSkip for iOS 15–iOS 16.
- Blackw0rm for iOS 12–iOS 14.
- GodsHand for iOS 13–iOS 16.
- Euphoria Activator12 for iOS 12 – iOS 14.
- Goldra1n for iOS 15–iOS 16.
- GreenSn0w for iOS 12 – iOS 12.5.6.
- BlackRa1n for iOS 15.
- DarkRa1n for iOS 15 – iOS 16.
- iPass for iOS 15–iOS 16.
Comments
J 2 måneder siden
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 måned siden
You can't. There is no working solution for the iPhone 13. Apple patched all exploits.