WebGL è un problema di sicurezza?

24

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 di shader che desidera.

Sembra che la sicurezza sia soprattutto un problema con i browser Web open source, in quanto un utente malintenzionato potrebbe trovare più facilmente vulnerabilità nell'implementazione.

    
posta 16.04.2012 - 05:16
fonte

5 risposte

27

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

Uno dei maggiori rischi è che WebGL implichi l'esecuzione di codice direttamente sulla scheda video e l'esposizione di API che forniscono accesso diretto alle API della scheda video. Il browser tenta di sandbox questo codice (in una certa misura), e i browser applicano una serie di restrizioni di sicurezza progettate per prevenire comportamenti dannosi. Tuttavia, molte di queste API e le relative implementazioni non erano originariamente progettate per essere fornite a entità non affidabili (erano utilizzabili solo da applicazioni native, che sono completamente affidabili), quindi ci sono preoccupazioni sul fatto di esporle a siti Web arbitrari che potrebbero abilitare i siti Web per attaccare il tuo sistema.

C'era un white paper ad alta visibilità (vedi anche < a href="http://www.khronos.org/webgl/security/"> il sequel ) che ha esaminato la sicurezza dell'implementazione WebGL nei browser al momento e ha rilevato una serie di vulnerabilità. Trovarono alcuni problemi di sicurezza della memoria in diverse API WebGL e trovarono anche alcuni attacchi che avrebbero consentito a un sito Web di leggere i dati dei pixel di altri siti Web (che potrebbero consentire una violazione della riservatezza). Vedi anche questo terzo studio , che ha dimostrato l'esistenza di queste vulnerabilità su numero di browser e schede Web (al momento).

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

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

P.S. Sono completamente in disaccordo con la tua affermazione sul fatto che sia particolarmente un problema per i browser Web open source. Questo è un mito. Vedi Sistemi Open Source vs Closed Source , che già copre questi argomenti. (Vedi anche Chrome vs Explorer - come spiegare in parole povere che open-source è migliore? per ulteriori discussioni approfondite su questo argomento.)

    
risposta data 17.04.2012 - 00:22
fonte
9

Alcuni punti chiave:

  • WebGL non espone semplicemente OpenGL a JavaScript. Tutti i punti di ingresso sono stati limitati per rimuovere le possibilità di accesso alla memoria fuori dai limiti, in modo che il browser possa sempre verificare gli accessi fuori limite (e così facendo è coperto dai test di conformità).
  • WebGL consente di eseguire shader quasi arbitrari sulla GPU. Tuttavia, tieni presente che gli shader non sono codici arbitrari generici. Possono accedere a una memoria specifica solo in un modo in cui i browser controllano gli accessi fuori limite. Gli shader sono convalidati e tradotti da un compilatore di shader incorporato nel browser prima di essere passati al driver della GPU.
  • C'era solo una falla di sicurezza in una specifica WebGL, mai: le specifiche WebGL inizialmente consentivano l'uso di immagini cross-origine come trame WebGL, ed è stato dimostrato che un attacco di temporizzazione poteva leggerle correttamente. Questo è stato corretto a metà 2011 e la versione corrente della specifica WebGL, 1.0.1, è protetta.
  • Maggiori informazioni sulla sicurezza WebGL possono essere trovate qui: link
risposta data 30.04.2012 - 14:40
fonte
3

Sembra che la sicurezza sia soprattutto un problema con i browser Web open source.

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

Anche tutti i browser eseguono queste cose in una sandbox. Uscire dalla sandbox sarà difficile, ma sarà più un problema in closed source come nei browser open-source.

    
risposta data 16.04.2012 - 07:55
fonte
1

Confrontiamo WebGL con javascript.

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

Se il codice è interpretato o compilato ha poche conseguenze; il potenziale di vulnerabilità che ne deriva è ancora lì.

Quindi javascript ha più capacità di abuso, dal momento che una volta che uno script canaglia esce dalla prigione del browser, in pratica ha 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 ', quindi ha ricevuto più controllo e ha chiuso più buchi. javascript è molto più complicato. Javascript come lingua è molto più complicato. ecc ecc.

    
risposta data 30.04.2012 - 16:24
fonte
0

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

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

Ci sono molti esempi di bitminer basati su webgl nelle botnet. Sebbene non costituiscano una minaccia per la sicurezza delle informazioni (viceversa, i bitminers sono la base per la sicurezza delle informazioni blockchain) queste reti bot rubano un'incredibile quantità di energia dalle vaste reti di dispositivi inconsapevoli su cui girano.

Ciò significa che Bitcoin ha un'impronta di carbonio crescente ma in gran parte 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 codice webgl sulla tua GPU. Anche una probabile causa di misteriosi scarichi di energia del dispositivo mobile.

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

    
risposta data 03.06.2017 - 23:59
fonte

Leggi altre domande sui tag