Mozilla permette W^X in Firefox 46 per migliorare la sicurezza

0
198

Mozilla attivata la funzione di protezione W^X in Firefox Nightly (attualmente la versione 46) e quello di renderla disponibile per le altre versioni del suo browser web, una volta aggiornato alla versione 46.

W^X, parlato, Scrittura XOR Eseguire, è una politica di sicurezza per la memoria che definisce le pagine di memoria, come scrivibile o di un file eseguibile, ma non entrambi. La funzionalità è presente in OpenBSD sistema operativo dal 2003.

OpenBSD sistema di base è stato modificato per conformarsi ad essa. Questo allevia un po ‘ gli attacchi di buffer overflow, tra cui i più comuni basati su stack attacco: assicurandosi che lo stack non eseguibile, codice arbitrario iniettato in esso non verrà eseguito, ma invece causa la terminazione del programma

La maggior parte JIT (Just in Time) compilatori usano RWX (lettura-scrittura-esecuzione) autorizzazioni per le pagine di memoria che consente al compilatore di codice patch senza riduzione delle prestazioni. Questo è il caso per Firefox corrente compilatore JIT, ma anche per Chrome o Safari compilatore.

Mentre che è vantaggioso per le prestazioni del browser durante l’esecuzione e l’esecuzione di codice JavaScript, introduce problemi allo stesso tempo.

RWX di Sicurezza

firefox 46 rwx

Mentre la maggior parte dei moderni sistemi operativi, negozio di codice eseguibile, ma non scrivibile memoria, RWX JIT codice è un’eccezione per questo che la rende un bersaglio per gli attacchi. Inoltre, la corruzione di memoria può essere un problema.

Mozilla attuazione di W^X tutti JIT pagine di codice non scrivibile per impostazione predefinita. Se il browser ha bisogno di scrivere per pagine, una funzione deve essere chiamata in modo esplicito di rendere la pagina scrivibile e rimuovere l’esecuzione di bandiera allo stesso tempo.

Una volta che l’operazione di scrittura è stato eseguito, i suoi vengono modificate le autorizzazioni di lettura ed esecuzione, ancora una volta.

Lo sviluppatore responsabile per l’attuazione osserva che l’introduzione della funzione influisce sulle prestazioni durante l’esecuzione di codice JavaScript.

Secondo i test di benchmark, Firefox perde meno dell ‘ 1% sui moderni parametri di riferimento come Kraken o di Ottano, e meno del 4% sui vecchi parametri di riferimento come SunSpider. Mentre un calo di prestazioni è misurabile, non è evidente per gli utenti del browser quando il codice JavaScript viene eseguito. (via Sören Hentzschel)