it-swarm-eu.dev

WebGL è un problema di sicurezza?

WebGL è un potenziale problema di sicurezza a causa dell'accesso di basso livello che fornisce?

Ad esempio, una pagina Web può tentare di compilare ed eseguire qualsiasi sorgente shader desiderata.

Sembra che la sicurezza sarebbe un problema in particolare con i browser Web open source, poiché un utente malintenzionato potrebbe trovare più facilmente vulnerabilità nell'implementazione.

27
user9148

Sì, WebGL è effettivamente un potenziale rischio per la sicurezza, sebbene l'entità del rischio sia difficile da valutare e aperta al dibattito. Ci sono alcuni problemi difficili qui. I browser hanno messo in atto alcune difese contro i rischi per la sicurezza, ma sembra esserci un dibattito sul fatto che tali difese si dimostreranno adeguate nel lungo periodo.

Uno dei maggiori rischi è che WebGL comporta l'esecuzione di codice direttamente sulla scheda video e l'esposizione delle API che forniscono accesso diretto alle API della scheda video. Il browser tenta di eseguire il sandbox di questo codice (fino a un certo punto) e i browser applicano una serie di restrizioni di sicurezza progettate per prevenire comportamenti dannosi. Tuttavia, molte di queste API e le loro implementazioni non sono state originariamente progettate per essere fornite a entità non attendibili (erano utilizzabili solo da applicazioni native, che sono completamente attendibili), quindi vi sono dubbi sul fatto che l'esposizione di tali siti Web arbitrari potrebbe consentire ai siti Web per attaccare il tuo sistema.

C'era n white paper ad alta visibilità (vedi anche il sequel ) che ha esaminato la sicurezza dell'implementazione WebGL nei browser in quel momento e ha riscontrato una serie di vulnerabilità. Hanno riscontrato alcuni problemi di sicurezza della memoria in diverse API WebGL e anche alcuni attacchi che consentirebbero a un sito Web di leggere i dati pixel di altri siti Web (il che potrebbe consentire una violazione della riservatezza). Vedi anche questo terzo studio , che ha dimostrato l'esistenza di queste vulnerabilità su un numero di browser e carte web (al momento).

I browser hanno risposto a questo con una varietà di difese: hanno inserito nella lista nera schede video con noti problemi di sicurezza; hanno provato a risolvere i problemi noti di sicurezza della memoria; e hanno limitato l'uso di WebGL secondo la stessa politica di Origin , per impedire a un sito Web dannoso di sando WebGL per spiare l'utilizzo degli altri siti Web da parte degli utenti .

È in corso un dibattito sul fatto che queste difese si rivelino adeguate a lungo termine. Microsoft ha assunto la posizione che WebGL è un rischio troppo grande per la sicurezza e le difese esistenti non sono abbastanza solide . D'altra parte, Mozilla prende la posizione che le difese che hanno messo in atto saranno adeguate e che WebGL fornisce un valore importante al web. Ars Technica ha n'eccellente carrellata del problema ; e ecco un altro rapporto stampa .

Post scriptum Non sono completamente d'accordo con la tua affermazione sul fatto che sia particolarmente un problema per i browser web open source. Questo è un mito. Vedi Open Source vs Closed Source Systems , che già tratta questi argomenti. (Vedi anche Chrome vs Explorer - come spiegare in parole semplici che open-source è meglio? per ulteriori discussioni ponderate su questo argomento.)

31
D.W.

Alcuni punti chiave:

  • WebGL non sta semplicemente esponendo OpenGL a JavaScript. Tutti i punti di ingresso sono stati limitati per rimuovere le possibilità di accesso alla memoria fuori limite, in modo che sia sempre possibile per il browser controllare gli accessi fuori limite (e farlo è coperto da test di conformità).
  • WebGL consente di eseguire shader quasi arbitrari sulla GPU. Tuttavia, tieni presente che gli shader non sono codici arbitrari per scopi generici. Possono accedere solo alla memoria molto specifica in modo tale che i browser controllino gli accessi fuori limite. Gli shader vengono convalidati e tradotti da un compilatore shader incorporato nel browser prima di essere passati al driver GPU.
  • In una specifica WebGL c'era sempre un solo difetto di sicurezza: la specifica WebGL originariamente consentiva l'utilizzo di immagini cross-Origin come trame WebGL, ed è stato dimostrato che un attacco di temporizzazione poteva leggerle correttamente. Questo problema è stato corretto a metà 2011 e l'attuale versione delle specifiche WebGL, 1.0.1, è sicura.
  • Ulteriori informazioni sulla sicurezza WebGL sono disponibili qui: http://www.khronos.org/webgl/security/
10
Benoit Jacob

Sembra che la sicurezza sia particolarmente un problema con i browser web open source.

Signore, siete molto sbagliato. Ha dimostrato molte volte che i programmi open source sono spesso molto più sicuri di quelli a codice chiuso, perché ci sono molti più occhi che controllano il codice.

Inoltre, tutti i browser eseguono queste cose in una sandbox. Uscire dalla sandbox sarà difficile, ma sarà un problema tanto nei sistemi chiusi quanto nei browser open-source.

3
Lucas Kauffman

Confrontiamo WebGL con javascript.

La differenza fondamentale tra (codice shader eseguito tramite) WebGL e javascript è che il codice shader viene eseguito sulla scheda GPU, mentre javascript viene eseguito sulla CPU.

Il fatto che il codice sia interpretato o compilato ha poche conseguenze; il potenziale risultante di vulnerabilità è ancora lì.

Quindi javascript ha più capacità di abuso, dal momento che una volta che uno script canaglia esce dalla jail del browser, ha sostanzialmente accesso al tuo PC. Uno script shader WebGL canaglia potrebbe ottenere, uh, l'accesso alla tua GPU.

Ci sono fattori che complicano questa semplice visione; javascript è in circolazione da un po 'di tempo, quindi ha ricevuto più controlli e ha chiuso più buchi. javascript è molto più complicato. Javascript come lingua è molto più complicato. ecc ecc.

1
Michael Slade

WebGL consente l'accesso alla pipeline GL ai core GPU. Alcuni produttori integrano le GPU direttamente sul chip della CPU. Ciò consente alla GPU di condividere la memoria interna della CPU, anziché avere la propria memoria, così come è il caso con chipset grafici esterni, che rappresentano un potenziale rischio per la sicurezza delle informazioni.

I processori paralleli affamati di potenza come le GPU sono ideali anche per le applicazioni di crittografia.

Ci sono molti esempi di bitminer basati su webgl nelle botnet. Pur non essendo una minaccia alla sicurezza delle informazioni (al contrario, i bitminer sono la base per la sicurezza delle informazioni blockchain), queste botnet rubano una quantità sbalorditiva di energia dalle vaste reti di dispositivi inconsapevoli su cui girano.

Ciò significa che Bitcoin ha un'impronta di carbonio crescente ma ampiamente nascosta, che è una potenziale minaccia per la sicurezza ambientale.

Se noti che alcuni siti web rallentano il tuo display senza aumentare il carico della CPU, è molto probabile che stiano eseguendo il codice webgl sulla tua GPU. Anche una probabile causa di misteriose perdite di potenza del dispositivo mobile.

Le applicazioni mobili (come i browser Web) possono eseguire il codice GPU perpetuamente in background e possono richiedere un riavvio del dispositivo per fermarli.

0