Aikaisempi, vuonna 2019 julkaistu checkm8-haavoittuvuus koski A5–A11-siruja; usbliter8 laajentaa saman hyökkäysluokan seuraavaan sukupolveen . A11 ei ole haavoittuva, koska sen USB-ajuri nollaa DMA-osoittimen manuaalisesti jokaisen paketin jälkeen
. A14 ja uudemmat sirut ovat turvallisia, koska ne konfiguroivat USB-muistisuojauksen oikein SecureROMissa
.
Vika sijaitsee Synopsys DWC2 USB -ohjaimessa, joka on integroitu sirulle . Hyökkäys toimii seuraavasti:
Rengaspuskurin osoitinristiriita: Ohjain tallentaa enintään kolme peräkkäistä USB Setup -pakettia DMA-puskuriin. Jokaisen kirjoituksen jälkeen se kasvattaa laitteisto-osoitinta (pointteria) datan koolla. Kolmannen paketin jälkeen se palauttaa osoittimen vähentämällä sitä kiinteällä 24 tavulla .
Alle 8 tavun paketin temppu: Ohjain hyväksyy alle 8 tavun paketteja, mutta tallentaa ne aina 4 tavun kokoisina lohkoina. Kun pieni paketti vastaanotetaan, osoittimen lisäys (todellinen kirjoitettu data) ei vastaa 24 tavun vähennystä, mikä aiheuttaa 12 tavun puskurivajauksen – osoitin liikkuu taaksepäin muistissa .
Muistin ylikirjoitus: Tämä antaa hyökkääjälle mahdollisuuden kirjoittaa SRAM-alueille, joihin ei pitäisi olla pääsyä käynnistyksen aikana .
Koodin suoritus: A12-sirulla hyökkääjä kirjoittaa tallennetun linkkirekisterin (LR) USB-tehtävän pinon päälle saadakseen suoran PC-hallinnan. A13-sirulla PAC-suoja (Pointer Authentication Codes) tekee tästä monimutkaisempaa, ja se vaatii monivaiheisen tekniikan kiertääkseen suojaukset .
Vaikka haavoittuvuus on korjaamaton, hyökkäys vaatii fyysisen USB-yhteyden laitteeseen, joka on asetettu DFU-tilaan (Device Firmware Update) . Se ei siis ole etähyökkäys, eikä se suoraan vaaranna Apple Payn kaltaisia Secure Enclave -palveluja
. Kuitenkin onnistuneen hyökkäyksen jälkeen hyökkääjä voi alentaa laitteen turvallisuustasoa, käynnistää allekirjoittamattomia ohjelmistoja ja saada täydellisen hallinnan laitteesta
.
Comments
0 comments