ONE Jailbreak Ad

Checkm8-angrepp för Apple-enheter A5–A11 på iOS 12–iOS 16

Promotion image of checkm8 article.

Den 27 september 2019 släppte axi0mX checkm8 (läs "checkmate"), ett permanent, omatchbart bootrom-angrepp för hundratals miljoner iOS-enheter. År 2022 körs angreppet fortfarande på moderna iOS 15- och iOS 16-jailbreaks för Apple-enheter med A9–A11 SoC.

Vad är Checkm8?

Checkm8 är en bootrom-exploit med CVE-ID CVE-2019-8900 som används för att köra osignerad kod på iOS, iPadOS, tvOS och watchOS, med processorer mellan A5 och A11. Den används främst för att jailbreaka Apple-enheter, och exploiten är hjärtat i den populära jailbreaken checkra1n.

Jailbreaks baserade på checkm8 är semi-tethered jailbreaks, eftersom exploiten fungerar genom att utnyttja en use-after-free-funktion i USB DFU-stacken. Den används av ipwndfu, Fugu14, checkra1n, Palera1n, Blizzard Jailbreak, ayakurume och ett par andra verktyg för att utnyttja iOS 12–iOS 17.

Med hjälp av checkm8 exploit är det bara möjligt att exekvera koden när du ansluter din iPhone eller iPad till datorn i DFU-läge via en USB-kabel. checkra1n låter dig jailbreaka iOS 12 upp till iOS 14 med stöd för tweaks och uppdaterades aldrig för att lägga till stöd för iOS 15.

Skärmdump av VLS med inläst checkm8-källkod för arm64-enheter.

Checkm8 bootrom-exploit kan också exekvera kod för iOS 15. Nebula, utvecklaren bakom Palera1n Jailbreak, släppte den första iOS 15-jailbreaken baserad på checkm8 med stöd för tweak-injektion på iOS 15.0 – 15.3.1. Den fungerar även upp till iOS 15.7 på A9-A11-enheter utan tweaks.

Hur fungerar det? I programmeringsspråket C ska funktionen malloc returnera NULL om den inte kan allokera minne av den begärda storleken. Anroparen ska kontrollera om den returnerade pekaren är NULL och hantera felet. I S5L8920 bootrom är den här funktionen inte implementerad korrekt. När den inte kan allokera minne returnerar den istället för NULL en pekare till minnesadress 0x8.

Checkm8 utnyttjar denna sårbarhet och gör det möjligt att exekvera kod på iOS, iPadOS, tvOS och watchOS. Denna bugg finns på alla Apple A5–A11-enheter och kan inte åtgärdas. Därför är iOS 16 sårbart och kan jailbreakas på enheter som stöds.

Obs: De flesta generationer av iPhones och iPads är sårbara och kan utnyttjas med checkm8: från iPhone 4S (A5-chip) till iPhone 8 och iPhone X (A11-chip).

Nya 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 och iPhone XS är checkm8-säkra.

axi0mX, utvecklaren bakom checkm8 exploit, släppte källkoden under GPL-3.0-licensen, vilket gör det möjligt att implementera den för tredjepartsverktyg. Dessutom är checkm8 exploit en del av hans jailbreakverktyg ipwndfu med öppen källkod för iOS-enheter, skrivet i Python och Assembly.

Utöver det implementeras även checkm8-exploiten för A5–A11 av SSH Ramdisk Script för att skapa och starta en SSH ramdisk på checkm8-enheter. Detta verktyg kan användas för att installera permanent IPA-filer på standard iOS. TrollStore IPA Installer sidladdades på detta sätt.

checkm8 källkod

checkm8 exploit skrevs i Assembly. Nedan kan du se källkoden för checkm8 exploit för alla arm64-enheter som inkluderar alla varianter av iPhone 5S, iPhone 5S, iPhone SE, iPhone 7, iPhone 8 och iPhone X. checkm8 källkoden publicerades via 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

Sedan lanseringen har checkm8 exploit använts av många verktyg för att jailbreaka iOS. Vissa av dem är publicerade och redo att användas, andra är bara under utveckling. Endast Palera1n för iOS 15 låter dig installera tweaks, andra verktyg är inte släppta än eller är endast användbara för utvecklare.

checkm8 iCloud Bypass-verktyg

checkm8-exploiten är också en stor del av utvecklingen av alla iCloud Bypass-verktyg som gör det möjligt för användare att ta bort aktiveringsskärmen och komma åt enhetens hemskärm på iOS 12 – iOS 16. De flesta verktygen kräver jailbreak med palera1n eller checkra1n och fungerar inte med ett SIM-kort, men Wi-Fi fungerar så att du kan sidladda appar och komma åt App Store.

Author Photo
Skrivet av

Kuba har över 20 års erfarenhet inom journalistik, med fokus på jailbreak sedan 2012. Han har intervjuat yrkesverksamma från olika företag. Förutom journalistik specialiserar sig Kuba på videoredigering och drönarflygning. Han studerade IT på universitetet innan sin författarkarriär.

Comments

  • J

    J 2 månader sedan

    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

      qbap 1 månad sedan

      You can't. There is no working solution for the iPhone 13. Apple patched all exploits.

Skriv en kommentar

Senaste inläggen