title: Checkm8
text: checkm8 is software die het mogelijk maakt om willekeurige code uit te voeren op mobiele apparaten van Apple. Deze iDevices maken gebruik van besturingssystemen en systems-on-a-chip (SoCs) die door Apple ontwikkeld zijn. Zo kan checkm8 worden gebruikt op elf generaties iPhones, van de 4s tot en met de X. Het programma is een zogenaamde exploit doordat het een kwetsbaarheid exploiteert, of uitbuit. Dit doet checkm8 in de bootrom, geheugen waar zich de code bevindt die het eerst wordt uitgevoerd bij het opstarten van het apparaat. Met checkm8 is het mogelijk om iDevices te jailbreaken, dat wil zeggen softwarerestricties op te heffen die door Apple ingesteld zijn.
  
  Doordat de kwetsbaarheid die checkm8 misbruikt zich bevindt in de bootrom, een niet-overschrijfbaar geheugen, is het onmogelijk om de kwetsbaarheid te dichten (patchen). Ook bij het upgraden van het besturingssysteem blijft de kwetsbaarheid in de bootrom bestaan. Latere versies van de betrokken iDevices bevatten nieuwere versies van de SoCs, en dus van de bootroms, die wel gepatcht kunnen zijn.
  
  Ontwikkeling 
  checkm8 werd ontwikkeld door axi0mX, een hacker die eerder de exploit alloc8 ontwikkelde. Hij ontdekte de use-after-free-kwetsbaarheid in de USB-code terwijl hij de bootloader iBoot van iOS 12 uitlas. De bootloader deelt zijn code grotendeels met de bootrom waardoor de kwetsbaarheid ook aanwezig is in de bootrom. Op 27 september 2019 werd checkm8 gepubliceerd op GitHub en toegevoegd aan de jailbreaktool ipwndfu. Ontwikkelaar littlelailo beweerde op diezelfde dag dat hij de kwetsbaarheid al in maart 2019 had ontdekt en op GitHub had gepubliceerd.
  
  Techniek 
  
  De kwetsbaarheid wordt geëxploiteerd in de USB DFU-stack. Device firmware upgrade (DFU) is een protocol dat tot doel heeft om firmware, in dit geval van USB-apparaten, op een gestandaardiseerde wijze te upgraden. De Secure Enclave, een chip waarop softwaresleutels opgeslagen worden, wordt niet door de kwetsbaarheid gecompromitteerd.
  
  checkm8 doorloopt een aantal stappen om de kwetsbaarheid te exploiteren:
   Heap feng-shuiStel de heap in op een wijze die gunstig is voor de exploitatie van use-after-free. Een heap is een geheugengebied voor toewijzing van dynamisch geheugen. Het feit dat checkm8 in de heap werkt, zorgt ervoor dat jailbreaks op basis van checkm8 semi-tethered zijn. Dit houdt in dat het apparaat in staat is om op te starten, maar er is een bekabelde verbinding met een jailbreaktool nodig om de jailbreak te laden.
   Allocatie en opschonen van de IO-bufferCreëer een incompleet OUT-request voor het uploaden van de image. Initialiseer een globale status en schrijf het adres van de buffer in de heap naar de io-buffer. Reset de DFU met een DFU_CLR_STATUS-request.
   Overschrijven van usb_device_io_requestAlloceer een usb_device_io_request in de heap en creëer een overflow met t8010_overwrite.
   Payload plaatsenPlaats softwarepakketten in het geheugen dat gealloceerd is voor de image.
   Uitvoeren van callback-chainNadat de DFU gereset is, wordt een loop gestart om incomplete usb_device_io_requests af te breken.
   Uitvoeren van shellcodeDe USB-configuratie wordt overschreven.
  
  De kwetsbaarheid die checkm8 exploiteert staat bekend onder het CVE-id CVE-2019-8900.
  
  Impact 
  Volgens onderzoekers is checkm8 een baanbrekende exploit doordat er dankzij checkm8 op meerdere apparaten uitvoerig gezocht kan worden naar bugs. Malwareonderzoeker Thomas Reed noemde checkm8 in 2019 "probably the biggest thing to cross most iOS security researchers’ desks in their entire careers to date" en "horrifying" omdat de exploit misbruikt kan worden. Hacker Will Strafach stelde dat het niet langer nodig is om gebruik te maken van speciale iPhones met minder beveiliging en restricties die Apple beschikbaar stelt aan hackers en beveiligingsonderzoekers. Ondanks de tegemoetkoming aan de gemeenschap blijft Apple samenwerking tegenwerken waardoor de drijfveer om in het kader van onderzoek te jailbreaken groot blijft.
  
  Toepassing 
  ipwndfu en checkra1n zijn de belangrijkste tools die de checkm8-exploit kunnen gebruiken.
  
  Apple
  Exploit