Google demonstreert misbruik van Spectre-kwetsbaarheden met behulp van JavaScript in een browser

Google heeft onlangs verschillende prototype-exploits uitgebracht die aantonen dat het mogelijk is om Spectre- kwetsbaarheden te misbruiken door JavaScript-code in een browser uit te voeren, zonder de eerder toegevoegde beveiligingsmaatregelen te hoeven omzeilen.

Exploits kunnen worden gebruikt om toegang te krijgen tot het geheugen van een proces dat webinhoud verwerkt in het huidige tabblad. Om de functionaliteit van de exploit te testen, werd de website van de gelekte pagina geopend en de code die de logica van de bewerking beschrijft, werd gepubliceerd op GitHub.

Het voorgestelde prototype is ontworpen om systemen met Intel Core i7-6500U-processors aan te vallen in een omgeving met Linux en Chrome 88, hoewel dit de mogelijkheid niet uitsluit om aanpassingen te maken zodat de exploit ook in andere omgevingen gebruikt kan worden.

De werkwijze is niet specifiek voor Intel -processoren : na de nodige aanpassingen is bevestigd dat de exploit werkt op systemen met CPU's van andere fabrikanten, waaronder de Apple M1 op basis van de ARM-architectuur. Na kleine aanpassingen werkt de exploit ook op andere besturingssystemen en andere browsers die gebruikmaken van de Chromium-engine.

In een omgeving die is gebaseerd op standaard Chrome 88- en Intel Skylake-processors, hebben we een datalek bereikt van het proces dat verantwoordelijk is voor het renderen van webcontent in het huidige Chrome-tabblad (renderingproces) met een snelheid van 1 kilobyte per seconde. Daarnaast werden alternatieve prototypes ontwikkeld, bijvoorbeeld een exploit die het mogelijk maakt, ten koste van verminderde stabiliteit, de leksnelheid te verhogen tot 8kB / s bij gebruik van de performance.now () timer met een precisie van 5 microseconden (0.005 milliseconden ). Er werd ook een variant ontwikkeld die werkte met een timerprecisie van één milliseconde, die zou kunnen worden gebruikt om de toegang tot het geheugen van een ander proces te organiseren met een snelheid van ongeveer 60 bytes per seconde.

De gepubliceerde democode bestaat uit drie delen:

  • Het eerste deel kalibreer de timer om de looptijd te schatten van de bewerkingen die nodig zijn om de gegevens op te halen die in de processorcache achterblijven als gevolg van de speculatieve uitvoering van de CPU-instructies.
  • Deel twee Definieert de geheugenlay-out die wordt gebruikt bij het toewijzen van de JavaScript-array.
  • Het derde deel maakt rechtstreeks gebruik van de Spectre-kwetsbaarheid om de geheugeninhoud te bepalen van het huidige proces als resultaat van het creëren van voorwaarden voor de speculatieve uitvoering van bepaalde bewerkingen, waarvan het resultaat wordt weggegooid door de processor na het bepalen van een mislukte voorspelling, maar de uitvoeringssporen worden verrekend in de gedeelde cache en kunnen worden hersteld met methoden om de inhoud van de cache te bepalen met behulp van kanalen van derden die de verandering in toegangstijd tot cachegegevens en niet-cachegegevens analyseren.

De voorgestelde exploitatietechniek maakt het mogelijk om af te zien van de zeer nauwkeurige timers die beschikbaar zijn via de performance.now() API en zonder ondersteuning voor het SharedArrayBuffer-type, waarmee arrays in gedeeld geheugen kunnen worden aangemaakt.

De exploit omvat het Spectre-apparaat, dat gecontroleerde speculatieve code-uitvoering veroorzaakt, en een side channel-lekanalysator, die bepaalt welke gegevens in het cachegeheugen zijn opgeslagen tijdens speculatieve uitvoering.

De gadget is geïmplementeerd met behulp van een JavaScript-array, waarin een poging wordt gedaan om toegang te krijgen tot een gebied buiten de buffergrenzen . Dit beïnvloedt de status van het branch prediction-blok vanwege een buffergroottecontrole die door de compiler is toegevoegd (de processor voert speculatief een vroege toegang uit, maar herstelt de status na de controle).

Om de inhoud van de cache te analyseren onder omstandigheden met onvoldoende timerprecisie, werd een methode voorgesteld die de Tree-PLRU-cachegegevensverwijderingsstrategie die in processors wordt gebruikt, bedriegt en waarmee, door het aantal cycli te verhogen, het verschil in tijd aanzienlijk kan worden vergroot wanneer de waarde wordt geretourneerd uit de cache en bij afwezigheid van een waarde in de cache.

Google heeft een prototype van de exploit vrijgegeven om de haalbaarheid van aanvallen met Spectre-achtige kwetsbaarheden aan te tonen en webontwikkelaars aan te moedigen technieken te gebruiken die de risico's van dergelijke aanvallen minimaliseren.

Tegelijkertijd is Google van mening dat het zonder een ingrijpende herziening van het voorgestelde prototype onmogelijk is om universele exploits te creëren die niet alleen klaar zijn voor demonstratie, maar ook voor wijdverbreid gebruik.

Bron: https://security.googleblog.com


Voeg dit toe als voorkeursbron in Google.