Mozilla gör W^X i Firefox 46 för att förbättra säkerheten

0
214

Mozilla har aktiverat den funktionen säkerhet W^X i Firefox Nightly (för närvarande version 46) och planerar att göra det tillgängligt för andra versioner av sin webbläsare när de uppgraderas till version 46.

W^X, talat Skriva XOR Utföra, är en säkerhetspolitik för minne som definierar minne sidor som antingen skrivbar eller körbar, men inte både och. Funktionen finns i operativsystemet OpenBSD sedan 2003.

OpenBSD grundsystemet har ändrats för att överensstämma med det. Detta lindrar vissa attacker buffertspill, inklusive de vanligaste stack-baserad attack: genom att se till att stacken är inte körbar, godtycklig kod injiceras i kommer det inte att köra utan i stället leda till programmet för att avsluta

De flesta JIT (Just in Time) kompilatorer använder RWX (läsa-skriva-exekvera) behörigheter för sidor i minnet som gör att kompilatorn att lappa kod utan resultat overhead. Detta är fallet för Firefox nuvarande JIT-kompilator, men också för Chrome eller Safari ‘ s kompilator.

Samtidigt som det är fördelaktigt att webbläsarens prestanda och köra och köra JavaScript-kod införs frågor på samma gång.

RWX Säkerhet

firefox 46 rwx

Medan de flesta moderna operativsystem lagra kod i körbar men icke skrivbart minne, RWX JIT-koden är ett undantag till detta som gör det till ett mål för attacker. Dessutom minne korruption kan vara ett problem också.

Mozilla genomförandet av W^X gör alla JIT-kod för sidor som är icke-skrivbara som standard. Om webbläsaren behöver för att skriva till sidor, en funktion som måste kallas för att uttryckligen göra sidan skrivbar och ta bort kör flagg på samma gång.

När skrivoperationer har körts, dess behörigheter ändras för att läsa och köra igen.

Exploatören ansvarar för genomförandet konstaterar att införandet av funktionen påverkar prestanda vid körning av JavaScript-kod.

Enligt benchmark-tester, Firefox förlorar mindre än 1% på moderna referensvärden som Kraken eller Oktan, och mindre än 4% på äldre riktmärken som SunSpider. Medan en prestanda drop är mätbara, det märks inte att användare av webbläsaren när JavaScript-kod som körs av det. (via Sören Hentzschel)