Mozilla aktiveret sikkerheds-funktion, W^X i Firefox Nightly (nuværende version, 46) og har planer om at gøre det tilgængeligt for andre versioner af sin web-browser, når de er opgraderet til version 46.
W^X, talt Skrive XOR Udføre, er en sikkerhedspolitik for hukommelse, der definerer hukommelse sider, som enten skrivbar eller eksekverbar, men ikke begge. Den funktion er til stede i OpenBSD-operativsystemet siden 2003.
OpenBSD-base systemet er blevet ændret til at overholde det. Dette lindrer nogle buffer overflow angreb, herunder de mest almindelige stak-baseret angreb: ved at sikre at stakken er ikke eksekverbar, vilkårlig kode sprøjtet ind, at det ikke vil udføre, men i stedet få programmet til at opsige
De fleste JIT (Just in Time) compilere bruge RWX (læse-skrive-execute) tilladelser til hukommelse sider, som tillader kompileren at patch-kode, uden at performance overhead. Dette er tilfældet for Firefox ‘ s nuværende JIT-compiler, men også til Chrome eller Safari er compiler.
Mens der er til gavn for browsers ydeevne under udførelse og kører JavaScript-kode, der introducerer spørgsmål på samme tid.
RWX Sikkerhed
Mens de fleste moderne operativsystemer gemme koden i eksekverbar, men ikke-skrivbar hukommelse, RWX JIT-kode er en undtagelse til dette, som gør det til et mål for angreb. Hertil kommer, hukommelse korruption kan være et problem så godt.
Mozilla ‘ s gennemførelse af W^X gør alle JIT-kode sider ikke-skrivbare som standard. Hvis browseren har behov for at skrive til sider, en funktion skal kaldes eksplicit at gøre den skrivbar side og fjerne udføre flag på samme tid.
Når skrive-handlingen er blevet kørt, tilladelser, er ændret til at læse og eksekvere igen.
Bygherren er ansvarlig for gennemførelsen bemærker, at indførelsen af funktionen virkninger ydeevne under udførelse af JavaScript-kode.
Ifølge benchmark tests, Firefox taber mindre end 1% på moderne benchmarks, som Kraken eller Oktan, og mindre end 4% på ældre benchmarks, som SunSpider. Mens en faldende ydelse er målbare, er det ikke bemærkelsesværdigt, at brugere af browseren, når den JavaScript-kode, der er udført af det. (via Søren Hentzschel)