Ranljivosti v WebGL

Matej Huš

11. maj 2011 ob 10:29:30

Raziskovalci iz Context Information Systems svarijo, da trenutna implementacija standarda WebGL v brskalnikih (nativno podporo imajo Chrome 9, Firefox 4 in zadnje beta verzije Safarija) odpira nove možnosti za napad. Problem tiči v možnosti dostopa spletnih strani do grafične kartice, da lahko prikazujejo lepe in zahtevne 3D-animacije. Z zlobno izbiro kode je mogoče računalnik onesposobiti ali z zaobitjem same-origin nastavitev pridobiti dostop do elementov spletne strani, do katerih ga ne bi smeli.

Ker API-ji za WebGL omogočajo prek OpenGL dostop skoraj neposredno do grafičnega procesorja, je mogoče napisati osenčevalne programe (shader program) ali drugo zapleteno 3D-geometrijo, ki popolnoma zasede kapacitete grafične kartice. S preobremenitvijo je mogoče izvesti neke vrste DoS-napad. V nekaterih primerih jim je uspelo računalnik onesposobiti do modrega zaslona smrti. Windows 7 in Vista imata zaščito pred tem, saj po dveh sekundah računanja resetirata GPU, a ima to varovalo omejitve v številu resetov, kar jim je uspelo premagati in sistema vseeno zrušiti.

Druga ranljivost se skriva v kraji slike. Da bi zaupanja nevredne strani ne imele dostopa do ključnih elementov, je v Document Object Modelu moč nastaviti Right to Embed (v primerjavi s klasično Right to Read), ki omogoča vgrajevanje tretjih vsebin na stran, ne da bi jo stran lahko prebrala. To največkrat vidite s Facebookvimi okvirji na straneh (Kliknite Všeč mi je), ki prikazujejo vaše podatke, a do njih stran nima dostopa - vidi jih le obiskovalec. Izkazalo se je, da je s pametnim programiranjem osenčevalnikov v WebGL mogoče prebrati teksturo slike in jo tako rekoč rekonstruirati. Priložili so tudi videoposnetek (direktna .avi datoteka), kjer si to lahko ogledamo.

Na podlagi teh ugotovitev Context zaključuje, da WebGL še ni dozorela tehnologija za uporabo v razširjenih brskalnikih.