4 Punkte von GN⁺ 2024-04-06 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Die V8-Sandbox ist eine leichtgewichtige In-Process-Sandbox für die V8-Engine
  • Sie hat nun die Experimentierphase verlassen und wurde in das Vulnerability Reward Program (VRP) von Chrome aufgenommen
    • Es gibt weiterhin Sicherheitsprobleme, die gelöst werden müssen, und Chrome Version 123 kann als „Beta“-Release der Sandbox betrachtet werden

Motivation

  • Memory Safety bleibt ein wichtiges Problem: Alle in den letzten drei Jahren entdeckten Chrome-Exploits nahmen ihren Anfang in Memory-Corruption-Schwachstellen in V8
  • 60 % dieser Schwachstellen traten in V8 auf, die meisten davon waren jedoch keine „typischen“ Memory-Corruption-Bugs, sondern subtile Logikprobleme
  • Die meisten aktuellen Lösungen für Memory Safety lassen sich nicht auf V8 anwenden; auch ein Wechsel zu einer speichersicheren Sprache wie Rust oder Hardware-Funktionen wie Memory Tagging helfen nicht bei den Sicherheitsherausforderungen von V8

V8-(Heap-)Sandbox

  • Die Grundidee der Sandbox besteht darin, den Heap-Speicher von V8 zu isolieren, damit sich Memory Corruption nicht auf andere Teile des Prozesses „ausbreitet“
  • Sie könnte mit Hardware-Unterstützung implementiert werden, derzeit gibt es jedoch keine geeigneten Hardware-Funktionen, daher wurde sie softwarebasiert umgesetzt
  • Die Sandbox ersetzt alle Datentypen, die auf externen Speicher zugreifen können, durch „sandbox-kompatible“ Alternativen
  • Nur der V8-Heap innerhalb der Sandbox befindet sich tatsächlich in der Sandbox; das ähnelt dem Sandboxing-Modell von WebAssembly

Performance

  • Der wichtigste Vorteil des Sandbox-Ansatzes ist, dass er grundsätzlich geringe Kosten verursacht
  • Der Overhead durch die Sandbox entsteht hauptsächlich durch indirekte Verweise über Pointer-Tabellen auf externe Objekte; aktuell liegt der Overhead bei typischen Workloads unter 1 %

Testing

  • Testbarkeit einer Sicherheitsgrenze bedeutet in der Praxis die Fähigkeit, manuell und automatisiert zu prüfen, ob die Sicherheitsgarantie tatsächlich eingehalten wird
  • Die V8-Sandbox erfüllt alle Anforderungen: ein klares Angreifermodell, eine Möglichkeit zur Nachbildung des Angreifers und eine Methode, automatisch zu erkennen, wenn die Sicherheitsgrenze versagt

Nutzung

  • Die V8-Sandbox muss zur Build-Zeit mit dem Build-Flag v8_enable_sandbox aktiviert oder deaktiviert werden.
  • Sie ist nur auf 64-Bit-Systemen verfügbar und erfordert derzeit die Reservierung von 1 Terabyte virtuellem Adressraum.
  • Die V8-Sandbox ist bereits seit etwa zwei Jahren standardmäßig in 64-Bit-Versionen von Chrome auf Android, ChromeOS, Linux, macOS und Windows aktiviert.

Fazit

  • Die V8-Sandbox ist ein neuer Sicherheitsmechanismus, der verhindern soll, dass sich Memory Corruption in V8 auf anderen Speicher des Prozesses auswirkt
  • Aktuelle Memory-Safety-Technologien lassen sich größtenteils nicht auf optimierte JavaScript-Engines anwenden, sind aber wirksam beim Schutz der Angriffsfläche der V8-Sandbox
  • Die Sandbox ist ein notwendiger Schritt hin zu mehr Memory Safety

Meinung von GN⁺

  • Die V8-Sandbox ist eine moderne Gegenmaßnahme gegen Memory-Corruption-Schwachstellen und bietet eine Antwort auf Probleme, die bestehende Memory-Safety-Techniken nicht lösen können
  • Angesichts der Komplexität von JavaScript-Engines spielt diese Sandbox eine wichtige Rolle dabei, die Sicherheitsgrenzen weiter zu stärken und die Memory Safety zu verbessern
  • Der geringe Performance-Overhead der Sandbox dürfte für Entwickler attraktiv sein und könnte ihre breite Einführung fördern
  • Allerdings könnte die Sandbox-Technologie auch völlig neue Sicherheitslücken einführen; das muss durch kontinuierliches Monitoring und Testing kontrolliert werden
  • Eine effektive Implementierung der Sandbox spielt eine wichtige Rolle dabei, zu verhindern, dass Angreifer Memory Corruption auf andere Teile des Systems ausweiten, und trägt damit zur Stärkung der Web-Sicherheit bei

Noch keine Kommentare.

Noch keine Kommentare.