One (Thread) Can Keep a (PRNG) Secret, but not Two
Dit artikel presenteert de eerste cryptanalytische aanval die een race condition exploiteert in de IPv6 Fragment ID PRNG van de XNU-kernel om sequentienummers te voorspellen en off-path spoofing van TCP- en UDP-verkeer mogelijk te maken, een kwetsbaarheid die inmiddels door Apple is gepatcht als CVE-2024-27823.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een grote, belangrijke brief naar een vriend stuurt. Omdat de brief te groot is voor één enkele envelop, hakt de post (het netwerk) hem in kleinere stukjes, oftewel fragmenten. Om ervoor te zorgen dat de stukjes in de juiste volgorde weer aan elkaar worden geplakt, krijgt elk stukje een uniek ticketnummer (een Fragment ID).
Het papier waar je naar vroeg, beschrijft een slimme manier waarop een hacker deze ticketnummers vooraf kan raden, waardoor hij een stukje van je brief kan vervangen door een nepversie zonder dat jij of je vriend het merkt.
Hier is de uitsplitsing van de aanval, eenvoudig uitgelegd:
1. De Geheime Ticketmachine (De PRNG)
Apple's computers (macOS en iOS) gebruiken een speciale "ticketmachine" in hun brein (de kernel) om deze willekeurige ticketnummers te genereren. De machine is bedo nodig onvoorspelbaar te zijn, zoals het gooien van een dobbelsteen. Als de nummers echt willekeurig zijn, kan niemand het volgende ticket raden.
Echter, de onderzoekers ontdekten een fout in hoe deze machine werkt wanneer deze druk is.
2. Het "Twee Personen, Eén Machine"-probleem (De Race Condition)
Stel je een drukke ticketbalie voor waar twee mensen (twee computerthreads) proberen op exact hetzelfde milliseconde een ticket te pakken.
- Normaal gesproken: De machine geeft Persoon A een ticket, en daarna Persoon B een ander nummer.
- De Glitch: Omdat de machine niet "thread-safe" is (hij heeft geen slot om te voorkomen dat mensen tegelijkertijd iets pakken), pakken beide mensen misschien hetzelfde startnummer. Ze voeren beide de berekening uit, maar omdat ze met hetzelfde nummer begonnen en net iets andere stappen namen, produceren ze een vreemd patroon.
Het Patroon: De onderzoekers ontdekten dat als je deze "race" triggert, de machine een specifieke reeks getallen produceert die er zo uitziet: A, B, C, B.
Merk op dat B twee keer voorkomt, gescheiden door C. Dit "B-C-B"-patroon is het bewijs (de smoking gun). Het vertelt de aanvaller: "Hé! De machine heeft zojuist een race condition gehad! Ik kan nu zien hoe de interne tandwielen van de machine draaien."
3. De Code Kraken (Cryptanalysis)
Zodra een aanvaller genoeg van deze "B-C-B"-patronen ziet, kan hij de machine terugbrengen naar zijn basis (reverse-engineer).
- Denk aan de machine als een cijferslot. Het "B-C-B"-patroon geeft de aanvaller een aanwijzing over de huidige positie van de schijven binnen het slot.
- Door genoeg van deze aanwijzingen te verzamelen, kan de aanvaller de volledige interne staat van de machine achterhalen.
- Zodra de aanvaller de interne staat kent, kan hij precies voorspellen wat de volgende ticketnummers zullen zijn.
4. De Wissel (De Aanval)
Nu de aanvaller de ticketnummers kan voorspellen, kan hij een "man-in-the-middle"-truc uitvoeren, maar dan zonder daadwerkelijk tussenin te zitten.
- Het Scenario: Je bent een groot bestand aan het versturen (zoals een back-up van je code) naar een server. Het bestand wordt in stukjes gehakt.
- De Bescherming: Het eerste stukje van het bestand bevat je wachtwoord en handtekening (authenticatie). De server controleert dit eerste stukje eerst om te controleren of je echt bent wie je zegt dat je bent.
- De Truc: De aanvaller wacht tot het eerste stukje arriveert. Vervolgens gebruikt de aanvaller de voorspelling om het ticketnummer voor het tweede stukje te raden. Hij stuurt snel een nep tweede stukje met een kwaadaardige boodschap (zoals een virus of een gewijzigd bestand) dat het juiste ticketnummer heeft.
- Het Resultaat: De server ontvangt het echte eerste stukje (met het geldige wachtwoord) en het nep tweede stukje (met het virus). De server plakt ze aan elkaar, denkt dat alles in orde is, en slaat het geïnfecteerde bestand op. De aanvaller heeft de beveiligingscontrole omzeild omdat de controle alleen op het eerste stukje plaatsvond.
Praktijkvoorbeelden uit het onderzoek
De onderzoekers hebben dit getest op twee specifieke zaken:
- NFS (Network File System): Ze lieten zien hoe een aanvaller een bestand kan veranderen dat naar een server wordt gebackupt. Bijvoorbeeld: een aanvaller kan een "Trojaans paard" injecteren in een standaard computercodebestand. Wanneer een ontwikkelaar die code later compileert, wordt het virus uitgevoerd.
- HTTP (Web Browsen): Ze lieten zien hoe een aanvaller een webverzoek (zoals een login of het verzenden van een formulier) kan veranderen terwijl dit over het netwerk reist.
Waarom dit belangrijk is
- Het is Nieuw: Dit is de eerste keer dat iemand een "race condition" (een timing-glitch) heeft gebruikt om een willekeurige getallengenerator te breken. Normaal gesproken veroorzaken race conditions alleen crashes; hier werden ze gebruikt om geheimen te stelen.
- Het is Praktisch: De aanval werkt op echte Apple-apparaten (M1, M2 chips, Intel Macs) die verschillende versies van macOS en iOS draaien.
- De Oplossing: Apple heeft dit inmiddels gepatcht. Ze hebben het de ID CVE-2024-27823 gegeven. De oplossing houdt in dat de ticketmachine "thread-safe" wordt gemaakt, zodat twee mensen niet tegelijkertijd het startnummer kunnen pakken.
Kortom: Het artikel laat zien dat als de willekeurige getallengenerator van een computer in de war raakt door twee dingen die tegelijkertijd gebeuren, een hacker die verwarring kan gebruiken om de toekomst te voorspellen, onderdelen van je gegevens te vervangen en malware langs je beveiliging te smokkelen.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.