Mozilla gjør W^X i Firefox 46 for å forbedre sikkerheten

0
163

Mozilla aktivert sikkerhetsfunksjon W^X i Firefox Nattlig (foreløpig versjon 46) og planer om å gjøre den tilgjengelig for andre versjoner av sin nettleser når de er oppgradert til versjon 46.

W^X, talte Skrive XOR Utføre, er en sikkerhetspolicy for minne som definerer minne sider som enten skrivbare eller kjørbar, men ikke begge deler. Funksjonen er til stede i OpenBSD operativsystemet siden 2003.

Den OpenBSD base-systemet har blitt endret for å være i samsvar med det. Dette lindrer noen buffer overflow angrep, inkludert de vanligste stack-basert angrep: ved å sikre at bunken ikke er kjørbare, vilkårlig kode injisert inn i det vil ikke bli kjørt, men i stedet føre til programmet for å avslutte

De fleste JIT (Just in Time) kompilatorer bruk der rettighetene står (lese-skrive-execute) tillatelser for minne sider som gjør kompilatoren å lappe-koden uten ytelse overhead. Dette er tilfelle for Firefox er gjeldende JIT-kompilator, men også for Chrome eller Safari-kompilatoren.

Mens det er gunstig å nettleserens ytelse under utføring og kjører JavaScript-kode, introduserer saker på samme tid.

Der rettighetene står Sikkerhet

firefox 46 rwx

Mens de fleste moderne operativsystemer lagre koden i kjørbar, men ikke-skrivbare minne, der rettighetene står JIT-kode er et unntak fra dette, noe som gjør det til et mål for angrep. I tillegg, minne korrupsjon kan bli et problem også.

Mozilla implementering av W^X gjør alle JIT-kode sider ikke-skrivbare som standard. Hvis nettleseren har behov for å skrive til sider, en funksjon behov for å bli kalt til å eksplisitt gjøre siden skrivbar og fjerne utføre flagget på samme tid.

Når skrivingen har blitt kjørt, sine tillatelser er endret for å lese og kjøre igjen.

Utbygger er ansvarlig for gjennomføringen bemerker at innføring av funksjonen påvirker ytelse samtidig utføre JavaScript-kode.

Ifølge ytelsestester, Firefox taper mindre enn 1% på moderne standarder som Kraken eller Oktan, og mindre enn 4% på eldre standarder som SunSpider. Mens en ytelse drop er målbare, det er ikke merkbar for brukere av nettleseren når JavaScript-koden er utført av det. (via Sören Hentzschel)