Google hat ein System zum Erstellen von Sandbox-Umgebungen für C / C ++ geöffnet

Google

Vor ein paar Tagen Google gibt die Eröffnung des Sandboxed API-Projekts bekanntDass ermöglicht es Ihnen, den Prozess der Sandbox-Erstellung für die isolierte Ausführung beliebiger C- und C++-Bibliotheken zu automatisieren.

Isolieren des Codes von den Bibliotheken ermöglicht den Schutz vor möglichen Angriffen auf die von den Bibliotheken bereitgestellten HandlerDies schafft eine zusätzliche Barriere für den Fall, dass Ihr Code Schwachstellen aufweist, die durch Manipulationen mit externen Daten, die in die Bibliothek gelangen, ausgenutzt werden können. Der Code ist Open Source unter der Apache 2.0-Lizenz.

die Isolationoder erfolgt dies innerhalb der Sandbox2-Laufzeitumgebung, in dem die Namespaces, cgroups und seccomp-bpf verwendet werden.

An die Sandbox gelieferter Code, der in einem separaten Prozess ausgeführt wird und Zugriff auf Systemaufrufe und Ressourcen bietetsowie Dateien und Netzwerkverbindungen sind begrenzt.

Prozesse erhalten nur Zugriff auf Systemfunktionen, die direkt zum Ausführen des isolierten Codes erforderlich sind.

Sandbox2 definiert die Komponenten zur Ausführung des ProzessesOder wenden Sie Isolationsregeln an und unterstützen Sie die anschließende Ausführung.

Sandkasten2 Es kann getrennt von der Sandbox-API verwendet werden, um nicht nur Bibliotheken, sondern auch beliebige Prozesse zu isolieren.

Ein positiver Punkt beim Entfernen des Codes in separaten Prozessen ist neben der Erhöhung des Schutzes die Möglichkeit der getrennten Regelung der Grenzwerte für den Speicherverbrauch der Bibliothek und der CPU sowie der Schutz vor Ausfällen: Ein Fehler in der Bibliothek verursacht keinen Fehler Die gesamte Anwendung stürzt ab.

Informationen zur Sandboxed-API

Sandboxed API ist ein Plugin von Sandbox2 Dies erleichtert den Transport vorhandener Bibliotheken zur Ausführung im isolierten Modus.

Sandbox-APIs stellt eine Middleware-Schnittstelle bereit, die es Ihnen ermöglicht, Bibliothekscode in einer Sandbox-Umgebung auszuführen, sowie einen Aufruf einer Bibliothek in einer Sandbox-Umgebung organisieren und die Übermittlung der Ergebnisse der Bibliothek an das Hauptprogramm gewährleisten.

Se greift über einen speziellen RPC basierend auf dem ProtoBuffs-Protokoll auf die isolierte Bibliothek zu.

A Bibliotheksentwicklern wird eine Reihe von Optionen angeboten, die den Zugriff auf Variablen ermöglichen, Dateideskriptoren, Puffer und von der Basisanwendung isolierte Bibliotheksfunktionen, einschließlich Tools für die automatische und kontrollierte Speichersynchronisierung zur gemeinsamen Nutzung von Arrays und Strukturen.

Sapi-Übersicht

Wenn eine Softwarebibliothek, die solche Daten analysiert, komplex genug ist, kann sie bestimmten Arten von Sicherheitslücken zum Opfer fallen: Speicherbeschädigungsfehlern oder anderen Arten von Problemen im Zusammenhang mit der Parsing-Logik (z. B. Pfaddurchquerungsprobleme). Diese Schwachstellen können schwerwiegende Auswirkungen auf die Sicherheit haben.

Zusätzlich Es wird eine API bereitgestellt, um den Betrieb isolierter Prozesse zu überwachen und sie bei Fehlern neu zu starten.

Für die isolierte Bibliothek wird automatisch annotierter Code der isolierten Funktionen für das Bazel-Assemblysystem und die Programmschnittstelle (SAPI) für die Interaktion zwischen den Basis- und isolierten Prozessen generiert.

Der Entwickler muss außerdem eine Header-Datei mit Isolationsregeln erstellen, die alle zulässigen Systemaufrufe und -vorgänge definieren. (Lesen, Schreiben, Öffnen von Dateien, Zeitzugriff, Möglichkeit zur Installation von Signalhandlern, Unterstützung der Speicherzuweisung über Malloc usw.).

Die Dateien und Verzeichnisse, auf die die Bibliothek Zugriff haben soll, werden separat festgelegt.

Installation

Derzeit ist das Projekt nur für Linux verfügbar, aber in Zukunft verspricht man Unterstützung für macOS- und BSD-Systeme und langfristig auch für Windows. Ja Wenn Sie eine Sandbox-API installieren möchten, können Sie den Anweisungen folgen Link.

Von den Plänen ist auch die Rede die Möglichkeit, Bibliotheken in anderen Sprachen als C und C++ zu isolieren, zusätzliche Laufzeitunterstützung für Isolation (z. B. basierend auf Hardware-Virtualisierung) und die Möglichkeit, CMake und andere Build-Systeme zu verwenden (die Unterstützung ist jetzt auf das Bazel-Build-System beschränkt).

Quelle: https://security.googleblog.com


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.