Mozilla ermöglicht W^X in Firefox 46 um die Sicherheit zu verbessern

0
234

Mozilla aktiviert die Sicherheitsfunktion ” W^X in Firefox Nightly (aktuell version 46) und Pläne zur Verfügung zu stellen, um andere Versionen seiner web-browser, nachdem Sie das Upgrade auf version 46.

W^X, gesprochen Write-XOR-Execute, ist eine security-policy für den Speicher, der definiert, Speicher-Seiten entweder als schreibbar oder ausführbar ist, aber nicht beide. Die Funktion in das Betriebssystem OpenBSD seit 2003.

Das OpenBSD-Basissystem wurde modifiziert, um es einhalten. Dies lindert einige buffer-overflow-Angriffen, einschließlich der am häufigsten stack-basierte Angriffe: sicherstellen, dass der stack nicht ausführbar ist, beliebigen code injiziert werden nicht ausgeführt, aber stattdessen dazu, dass das Programm zu beenden

Die meisten JIT (Just in Time) – Compiler verwenden RWX (read-write-execute) Berechtigungen für Speicher-Seiten, die kann der compiler patch-code ohne performance-overhead. Dies ist der Fall bei Firefox die aktuellen JIT-compiler, sondern auch für Chrome oder Safari-compiler.

Das ist zwar nützlich, um die browser-Leistung während der Ausführung und ausführen von JavaScript-code, es führt zu zusätzlichen Problemen bei der gleichen Zeit.

RWX Sicherheit

firefox 46 rwx

Während die meisten modernen Betriebssysteme speichern von code in ausführbare Datei aber nicht-beschreibbaren Speicher, RWX JIT-code ist eine Ausnahme, das macht es ein Ziel für Angriffe. Darüber hinaus Speicherbeschädigung kann ein Problem als gut.

Mozilla-Implementierung von W^X macht alle JIT-code-Seiten nicht beschreibbar standardmäßig. Wenn im browser schreiben muss, um Seiten, die eine Funktion muss aufgerufen werden, um explizit zu machen, die Seite beschreibbar und entfernen Sie die execute-flag an der gleichen Zeit.

Sobald der write-Vorgang ausgeführt wurde, werden die Berechtigungen geändert auf Lesen und ausführen noch einmal.

Der Entwickler verantwortlich für die Umsetzung und stellt fest, dass die Einführung der Funktion beeinträchtigt die Leistung beim ausführen von JavaScript-code.

Laut benchmark-tests, Firefox verliert weniger als 1% auf moderne benchmarks wie Kraken oder Octane, und weniger als 4% bei älteren benchmarks wie SunSpider. Während ein Leistungsabfall messbar ist, es ist nicht sichtbar für Nutzer der browser bei der JavaScript-code ausgeführt wird. (über Sören Hentzschel)