it-swarm-eu.dev

Je WebGL bezpečnostním problémem?

Je WebGL potenciálním bezpečnostním problémem kvůli nízkému přístupu, který poskytuje?

Například webová stránka se může pokusit zkompilovat a spustit jakýkoli zdroj shaderu, jaký chce.

Zdá se, že zabezpečení by bylo zvláště problémem webových prohlížečů s otevřeným zdrojovým kódem, protože útočník by snadněji našel zranitelnosti při implementaci.

27
user9148

Ano, WebGL je skutečně potenciálním bezpečnostním rizikem, ačkoli velikost rizika je obtížné posoudit a otevřít se debatě. Jsou zde nějaké složité problémy. Prohlížeče zavedly určitá obrana proti bezpečnostním rizikům, zdá se však, že existuje určitá debata o tom, zda se tyto obrany z dlouhodobého hlediska ukážou jako přiměřené.

Jedním z hlavních rizik je, že WebGL zahrnuje spuštění kódu přímo na grafické kartě a odhalení API, která poskytují přímý přístup k API pro grafické karty. Prohlížeč se pokouší tento kód do určité míry izolovat a prohlížeče vynucují řadu bezpečnostních omezení, která mají zabránit škodlivému chování. Mnoho z těchto API a jejich implementace však původně nebyly navrženy tak, aby byly poskytovány nedůvěryhodným entitám (byly použitelné pouze nativními aplikacemi, které jsou plně důvěryhodné), takže existují obavy, zda jejich vystavení libovolným webovým stránkám může umožnit webové stránky k útoku na váš systém.

Byla jedna bílá kniha s vysokou viditelností (viz také pokračování ), která se zabývala bezpečností implementace WebGL v prohlížečích v té době a našla řadu zranitelností. V několika rozhraních API WebGL našli některé problémy s bezpečností paměti a také našli útoky, které by jednomu webovému serveru umožňovaly číst pixelová data jiných webových stránek (což by mohlo vést k narušení důvěrnosti). Viz také tato třetí studie , která prokázala existenci těchto zranitelností v řadě prohlížečů a webových karet (v té době).

Prohlížeče na to reagovaly řadou obranných opatření: mají černé karty na černé listině se známými bezpečnostními problémy; pokusili se opravit známé problémy s bezpečností paměti; a omezili používání WebGL podle zásady stejného původ , aby zabránili škodlivému webovému serveru pomocí WebGL prozkoumávat použití jiných webových stránek uživateli .

Probíhá určitá debata o tom, zda se tyto obrany v dlouhodobém horizontu ukážou jako přiměřené. Microsoft zaujal stanovisko, že WebGL je příliš velké bezpečnostní riziko a stávající obrany nejsou dostatečně robustní . Na druhé straně Mozilla zaujímá stanovisko, že obrana, kterou zavedly, bude přiměřená a že WebGL poskytuje webu důležitou hodnotu. Ars Technica má výborné zaokrouhlení problém ; a zde je další tisková zpráva .

P.S. Úplně nesouhlasím s tvým tvrzením, že se jedná o problém zejména pro webové prohlížeče s otevřeným zdrojovým kódem. To je mýtus. Viz Open Source vs Closed Source Systems , který již tyto argumenty pokrývá. (Viz také Chrome vs Explorer - jak vysvětlit jednoduchými slovy, že open-source je lepší? pro další promyšlenou diskusi na toto téma.)

31
D.W.

Několik klíčových bodů:

  • WebGL nevystavuje OpenGL pouze JavaScriptu. Všechny vstupní body byly omezeny, aby se odstranily možnosti přístupů do paměti mimo meze, takže je vždy možné, aby prohlížeč kontroloval přístupy mimo meze (a to se provádí testy shody).
  • WebGL umožňuje provozovat téměř libovolné shadery na GPU. Mějte však na paměti, že shadery nejsou libovolným obecným kódem. Mají přístup pouze k velmi specifické paměti takovým způsobem, že prohlížeče kontrolují přístupy mimo hranice. Shadery jsou ověřeny a přeloženy kompilátorem shaderu zabudovaným do prohlížeče před tím, než jsou předány ovladači GPU.
  • Ve specifikaci WebGL byla vždy pouze jedna bezpečnostní chyba: specifikace WebGL původně umožňovala použití obrazů křížového původu jako textury WebGL, a bylo prokázáno, že tyto útoky načasování je mohly úspěšně přečíst. Toto bylo opraveno v polovině roku 2011 a současná verze specifikace WebGL 1.0.1 je bezpečná.
  • Více informací o zabezpečení WebGL naleznete zde: http://www.khronos.org/webgl/security/
10
Benoit Jacob

Zdá se, že zabezpečení by bylo obzvláště problém s webovými prohlížeči s otevřeným zdrojovým kódem.

Vy jste pane velmi špatně. Mnohokrát se ukázalo, že opensource programy jsou často mnohem bezpečnější než ty uzavřené, protože existuje mnohem více očí, které kontrolují kód.

Všechny prohlížeče také tyto věci spouští v karanténě. Prolomení karantény bude obtížné, ale bude to stejně problém v uzavřeném zdroji jako v otevřených prohlížečích.

3
Lucas Kauffman

Pojďme porovnat WebGL s javascriptem.

Kritický rozdíl mezi (pomocí shadového kódu přes) WebGL a javascriptem je ten, že shaderový kód je spuštěn na kartě GPU, zatímco javascript je spuštěn na CPU.

To, zda je kód interpretován nebo kompilován, má malý význam; výsledný potenciál zranitelnosti stále existuje.

Javascript má tedy větší kapacitu pro zneužití, protože jakmile se z prohlížeče dostane nečestný skript, má v podstatě přístup k vašemu PC. Rogue shader skript WebGL by mohl získat přístup k vašemu GPU.

Existují faktory, které komplikují tento jednoduchý pohled; javascript je už nějakou dobu kolem, takže dostal více kontroly a měl více děr zavřených. javascript je mnohem komplikovanější. Javascript jako jazyk je mnohem složitější. atd. atd.

1
Michael Slade

WebGL umožňuje přístup k potrubí GL) do jader GPU. Někteří výrobci integrují GPU přímo do čipu CPU. To umožňuje GPU sdílet interní paměť CPU, namísto vlastní paměti, jak je v případě externích grafických čipových sad. Toto je potenciální riziko informační bezpečnosti.

Výkonné paralelní procesory jako GPU jsou také ideální pro kryptografické aplikace.

V botnetech je mnoho příkladů bitminerů založených na webgl. Ačkoli nejde o hrozbu informační bezpečnosti (naopak, bitminaři jsou základem pro zabezpečení informací o blockchainu), tyto botnety ukradou ohromující množství energie z rozsáhlých sítí nevědomých zařízení, na nichž běží.

To znamená, že bitcoin má rostoucí, ale do značné míry skrytou uhlíkovou stopu, což je potenciální hrozba pro zabezpečení životního prostředí.

Pokud si někdy všimnete, že některé weby zpomalují zobrazení bez zvýšení zatížení procesoru, je velmi pravděpodobné, že na vašem GPU používají kód webgl. Pravděpodobná příčina záhadných odtoků energie mobilních zařízení.

Mobilní aplikace (jako jsou webové prohlížeče) mohou trvale spouštět kód GPU na pozadí a mohou vyžadovat restartování zařízení, aby je zastavilo.

0