Zwar ist Firefox mehrheitlich in C und C++ geschrieben Diese Sprachen sicher zu nutzen, sei aber laut einem Blogpost der Entwickler “notorisch schwer”. Eine Webassembly-Sandbox soll Besserung bringen.
Bisher habe das Team bei der Umsetzung einer sogenannten Sandbox, also einer Isolierung des laufenden Codes, auf einzelne Prozesse gesetzt. Das verschwende schnell aber zu viele Ressourcen. Als Beispiel verweisen die Entwickler hier auf die Font-Shaping-Bibliothek Graphite. Diese sei schlicht zu klein für einen eigenen Prozess und könnte bei einer gefundenen Sicherheitslücke schnell zu einer Kompromittierung führen.
Mit Hilfe des Werkzeugs RLBox lasse sich derartiger Code aber schnell so umwandeln, dass er in einer Webassembly-Sandbox läuft. RLBox besteht dabei einerseits aus der Sandbox und andererseits einem API, um eben bestehenden Anwendungen darauf Zugriff zu ermöglichen. Details zur Funktionsweise liefern die Entwickler von RLBox in ihrem Github-Projekt.
Den betroffenen Code müssen Entwickler zunächst in Webassembly-Bytecode kompilieren, aus dem sie wiederum nativen Objektcode erzeugen. Dank dieser Prozedur rufen dann andere native Teile von Firefox diese Bestandteile wie gewohnt auf. In ihrem Blogeintrag erklären die Entwickler ausführlich, welche technischen Schwierigkeiten sie dafür überwinden müssen.
Sandbox füllen
Für die erwähnte Graphite-Bibliothek habe das Team den Sandboxing-Prozess bereits umgesetzt. Das Team erwartet darüber hinaus, den Einsatz der neuen Sandbox in den kommenden Monaten deutlich auszuweiten. Beginnen wollen sie zunächst mit externen Bibliotheken, da diese klar definierte Schnittstellen mitbringen. Die beschriebene Sandbox-Isolierung will das Projekt für Linux-Nutzer bereits mit der kommenden Version 74 Anfang März ausliefern.




