A MIT CSAIL kutatói nemrég bejelentették, hogy egy javíthatatlannak vélt biztonsági rést találtak az Apple M1 rendszerchipekben. A PACMAN nevű sebezhetőség a nyers célt tekintve kifejezetten hasonlít a Spectre támadásra, vagyis a spekulatív végrehajtással kapcsolatos problémákat használja ki, de más mechanizmussal dolgozik, mivel a PACMAN a TLB-t, azaz Translation Look-aside Buffert célozza.
Hirdetés
Az egész alapjaiban egy ARMv8.3-ban bevezetett PAC (Pointer Authentication Code) nevű kriptográfiai hash funkcióra építkezik, amely megvédi a pointereket a jogosulatlan módosítástól. Utóbbi helyzet nyilván akkor fordulhat elő, amikor egy programban valamiféle hiba van, például puffertúlcsordulást okozó, amit támadó jelleggel fel lehetne használni a pointerek módosítására, de ezt a bekezdés elején említett képesség megakadályozza. A PAC tehát egyfajta extra védelmi vonalat képez a rosszul megírt kód és a hardver között, és alapvetően egész jól működik, mivel aktív pointer hitelesítés esetén ismerni kell az adott pointer PAC-értékét a módosítása után, különben a kapcsolódó folyamat további futtatása meghiúsul. Ez azt jelenti, hogy a nyers erővel végrehajtott támadások nem túl hatékonyak, hiszen az első rossz tipp végzetes a megtámadott folyamatra.
A gondot az Apple M1 rendszerchipek esetében az jelenti, hogy a Firestorm magok TLB implementációja lehetővé tesz egy olyan spekulatív végrehajtást kihasználó támadást, amivel megszerezhetők a PAC-ellenőrzés eredményei, és ezek alapján ki lehet úgy is találni a PAC-értéket, hogy közben a futtatott folyamat nem omlik össze, és ennek birtokában már a pointerek jogosulatlan módosítása is lehetséges.
A biztonsági rés valószínűleg nem javítható, legalábbis normális körülmények között nem. Nyilván a spekulatív végrehajtás letiltása, illetve a TLB működésére vonatkozó limitációk eredményre vezetnének, de ezekkel a Firestorm magok teljesítménye is összeomlana, és ez az Apple számára egyértelműen nem opció. A működés jellegét figyelembe véve nem is kell annak lennie, mert a PACMAN csak leírva tűnik rémisztőnek, valójában addig nincs haszna, amíg a futtatott alkalmazás nem tartalmaz valamiféle olyan hibát, ami a pointerek jogosulatlan módosítására lehetőséget adna. Ergo ez nem egy általánosan bevethető sebezhetőség, muszáj valamiféle programhiba a támadáshoz. Emiatt az Apple nem is tesz különösebb óvintézkedéseket, mivel úgy gondolják, hogy a probléma nem jelent közvetlen veszélyt a felhasználóinkra, és önmagában nem elegendő az operációs rendszer védelmének megkerülésére.