Googlek Spectreren ahultasunen ustiapena erakusten du arakatzailean JavaScript exekutatuta

Google-k hainbat ustiapen-prototipo argitaratu ditu, arakatzaile batean JavaScript kodea exekutatzean Spectre klaseko ahultasunak ustiatzeko aukera erakusten dutenak, aurretik gehitutako babes-metodoak alde batera utzita. Exploits erabil daitezke uneko fitxan web-edukia prozesatzen ari den prozesu baten memoriara sartzeko. Explotazioaren funtzionamendua probatzeko, leaky.page gunea abiarazi zen, eta lanaren logika deskribatzen duen kodea GitHub-en argitaratu zen.

Proposatutako prototipoa Linux eta Chrome 7 ingurunean Intel Core i6500-88U prozesadoredun sistemei erasotzeko diseinatuta dago. Aldaketak egin behar dira ustiapena beste ingurune batzuetan aplikatzeko. Ustiapen-metodoa ez da Intel prozesadoreen espezifikoa - egoki egokitu ondoren, ustiapena beste fabrikatzaile batzuen PUZdun sistemetan funtzionatzen zuela baieztatu zen, ARM arkitekturan oinarritutako Apple M1 barne. Doikuntza txikien ondoren, esplotazioak beste sistema eragile batzuetan eta Chromium motorean oinarritutako beste arakatzaile batzuetan ere funtzionatzen du.

Chrome 88 eta Intel Skylake prozesadore estandarretan oinarritutako ingurune batean, egungo Chrome fitxan (errendatze-prozesua) web-edukiak prozesatzeko ardura duen prozesutik datuak filtratzen ziren, segundoko kilobyte-ko abiaduran. Gainera, prototipo alternatiboak garatu ziren, adibidez, egonkortasuna murriztearen truke ihes-tasa 1 kB/s-ra igotzea ahalbidetzen duen ustiapena, performance.now() tenporizadorea erabiltzean 8 mikrosegundoko zehaztasunarekin (5 milisegundo). . Aldaera bat ere prestatu zen, milisegundo bateko tenporizadorearen zehaztasunarekin lan eginez, beste prozesu baten memoriarako sarbidea segundoko 0.005 byte inguruko abiaduran antolatzeko erabil zitekeena.

Argitaratutako demo-kodeak hiru zati ditu. Lehen zatiak tenporizadorea kalibratzen du, PUZaren instrukzioen exekuzio espekulatiboaren ondorioz prozesadorearen cachean utzitako datuak leheneratzeko behar diren eragiketen exekuzio denbora kalkulatzeko. Bigarren zatiak JavaScript array esleitzerakoan erabilitako memoria-diseinua zehazten du.

Hirugarren zatiak zuzenean ustiatzen du Spectreren ahultasuna, uneko prozesuko memoriaren edukia zehazteko, eragiketa jakin batzuen exekuzio espekulatiborako baldintzak sortzearen ondorioz, eta horren emaitza prozesadoreak ez du arrakastarik gabeko iragarpen bat zehaztu ondoren, baina exekuzioa. aztarnak cache orokorrean metatzen dira eta cacheko eta cache gabeko datuetarako sarbide-denboraren aldaketak aztertzen dituzten hirugarrenen kanalek cachearen edukia zehazteko metodoak erabiliz berreskura daitezke.

Proposatutako ustiapen-teknikak performance.now() APIaren bidez eskuragarri dauden doitasun handiko tenporizadoreak ezabatzen ditu, eta SharedArrayBuffer motarako laguntzarik gabe, memoria partekatuan matrizeak sortzeko aukera ematen duena. Explotazioak Spectre gadget-a barne hartzen ditu, kode espekulatibo kontrolatua exekutatzen duena, eta alboko kanaleko ihes-analisia, cachean sartutako exekuzio espekulatiboan lortutako datuak zehazten dituena.

Gadget-a JavaScript array baten bidez inplementatzen da, eta bertan buffer-aren mugetatik kanpo dagoen eremu batera sartzeko saiakera egiten da, adar-iragarpen-blokearen egoerari eraginez, konpilatzaileak (prozesadorea, aurrera begira) gehitutako buffer-tamainaren egiaztapenaren ondorioz. , espekulatiboki sarbidea egiten du, baina egoera atzera egiten du egiaztapenaren ondoren). Tenporizadorearen zehaztasun nahikorik gabeko baldintzetan cachearen edukia aztertzeko, prozesadoreetan erabiltzen den Tree-PLRU cache desalojo estrategia engainatzen duen metodo bat proposatzen da eta, ziklo kopurua handituz, denbora-aldea nabarmen handitzea ahalbidetzen du bat itzultzean. balioa cachetik eta cachean baliorik ez dagoenean.

Kontuan izan da Google-k esplotazio prototipo bat argitaratu zuela Spectre klaseko ahultasunak erabiliz erasoen errealismoa erakusteko eta web garatzaileak eraso horien arriskuak minimizatzeko teknikak erabiltzera bultzatzeko. Aldi berean, Google-k uste du proposatutako prototipoaren berrikuspen esanguratsurik egin gabe ezinezkoa dela erakustaldirako ez ezik, erabilera zabalerako prest dauden ustiapen unibertsalak sortzea.

Arriskua murrizteko, guneen jabeei inplementatutako berriki inplementatutako Jatorrien arteko irekitze-politika (COOP), Jatorrien arteko txertatze-politika (COEP), Jatorrien arteko baliabideen politika (CORP), Eskuratu metadatuen eskaera, X-Frame-Options, X -Content-Type-Options eta SameSite Cookieak. Mekanismo hauek ez dituzte erasoen aurka zuzenean babesten, baina erasotzailearen JavaScript kodea exekuta daitekeen prozesuetan guneko datuak isolatzea ahalbidetzen dute (isuria uneko prozesuko memoriatik gertatzen da, non, erasotzailearen kodeaz gain, datuak. fitxa berean irekitako beste gune batetik). Ideia nagusia da prozesu desberdinetan gunearen kodearen exekuzioa iturri fidagarrietatik lortutako hirugarrenen kodetik bereiztea, adibidez, iframe baten bidez sartuta.



Iturria: opennet.ru

Gehitu iruzkin berria