Google veröffentlicht eine Sandbox für Libraries

Das Open-Source-Projekt Sandboxed API verpackt C-Bibliotheken in einen abgeschirmten Bereich.

In Pocket speichern vorlesen Druckansicht 11 Kommentare lesen
Google veröffentlicht eine Sandbox für Libraries
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Unter dem Namen Sandboxed API hat Google ein Open-Source-Projekt veröffentlicht, das geschützte Umgebungen für Libraries bereitstellt und die Aufrufe verwaltet. Derzeit ist die Software auf Linux und C-Bibliotheken beschränkt, soll aber mittelfristig auch zumindest für andere UNIX-artige Betriebssysteme erscheinen. Die Macher erwägen Anbindungen für andere Programmiersprachen.

Als Grundlage dient das Projekt Sandbox2, das beliebige Linux-Prozesse in geschützte Bereiche packt und nun ebenfalls auf GitHub als Open-Source-Software verfügbar ist. Das Isolieren von Code durch Sandboxes ist grundsätzlich weit verbreitet, meist jedoch für Software, die weitgehend selbsttätig arbeitet. Die Sandboxed API ist dagegen auf Bibliotheken ausgelegt, die eben nicht eigenständig lauffähig sind, sondern Routinen beziehungsweise Module für andere Programme bereitstellen. Je komplexer die Bibliotheken sind, desto größer ist das Risiko von Schwachstellen wie Speicherfehler.

Die Sandboxed API verpackt die Library und das aufrufende Programm in zwei separate Host-Prozesse. Die Bibliotheksaufrufe von Letzterem fängt ein Sandboxed-API-Objekt (SAPI-Objekt) ab und gibt sie via Interprozesskommunikation (IPC) an einen RPC-Stub in der Sandbox weiter, der schließlich den Aufruf an die Library weiterleitet.

Die Software und die Bibliothek laufen in separaten Prozessen, die per IPC verbunden sind.

(Bild: Google)

Das SAPI-Objekt und der RPC-Stub sind Bestandteil des Projekts. Entwickler müssen zum Verwenden die Rechte für die Library definieren, also welche Systemaufrufe ihr erlaubt sind und auf welche Ressourcen sie zugreifen darf. Darüber hinaus entsteht zusätzlicher Code für den Transfer von Speicherbereichen. Ansonsten bleibt der Codefluss der gleiche und die API-Aufrufe sind ähnlich, wie ein Blick auf die Beispielseite des Projekts auf GitHub zeigt.

Neben der Umsetzung auf andere Betriebssysteme und für andere Programmiersprachen ist vor allem die CMake-Unterstützung geplant. Derzeit setzt das Team auf Bazel als Build-System. Weitere Details zur Sandboxed API lassen sich dem Google-Entwickler-Blog entnehmen. Der Sourcecode ist auf GitHub unter der Apache-2-Lizenz abgelegt. (rme)