Welche Vorsichtsmaßnahmen reichen aus, um eine Sandbox für eine Skriptsprache zu erstellen?

315
ceremcem

Wir führen eine ständige Diskussion, um einem Projekt einige Funktionalität hinzuzufügen, indem Skriptunterstützung hinzugefügt wird, und es steckt bei Sicherheitsbedenken fest.

Stellen Sie sich vor, dass eine Sprache zu Konfigurationszwecken verwendet wird. Sie muss daher .iniaus Sicht der Endbenutzer als Dateien sicher genug sein . Die Aktionen hängen nicht von externen Binärdateien ab, sondern nur die systemeigenen Werkzeuge der Sprache.

Beeinträchtigt der folgende Code nicht die Sicherheit, um nicht vertrauenswürdigen Code auszuführen:

  • Beschränken Sie den Netzwerkzugriff
  • Schreibzugriff vollständig deaktivieren
  • Bieten Sie Lesezugriff für das aktuelle Verzeichnis an
  • Ermöglichen Sie Lesezugriff nur für das Einschließen globaler Bibliotheken

Was ist noch nötig, damit eine Skriptsprache als Konfigurationswerkzeug verwendet wird?

0

1 Antwort auf die Frage

1
Austin Hemmelgarn

Nein.

Unter anderem haben Sie keinen Schutz gegen Cache-Manipulation, Verzweigungsvorhersagenvergiftung und Rowhammer-Angriffe, die alle in der Sprache möglich sind, in der die verknüpfte Diskussion (Python) zu implizieren scheint.

Vorausgesetzt, Sie sprechen tatsächlich über die Verwendung von Python, müssen Sie auch die Tatsache in Betracht ziehen, dass Python-Code beliebige Bibliotheken und ausführbare Dateien über mehrere Mechanismen laden kann, von denen einige nicht vom Lesezugriff abhängig sind. Das muss alles eingeschränkt sein, und Sie sollten wahrscheinlich auch den Zugriff auf viele der Standardbibliotheksmodule einschränken (Dokumentmakros haben es nicht mit dem Syslog-Daemon zu tun, zum Beispiel mit dem Abrufen von Kontoinformationen).

Darüber hinaus müssen Sie Folgendes tun: eine Möglichkeit für den Benutzer, das automatische Ausführen dieses Codes explizit zu deaktivieren, mit der idealen Situation, dass er sich explizit für die Ausführung entscheiden muss (falls dies in MS Office das Standardverhalten war) der Anfang für Makros, dann hätten einige große Viren einige Dutzend infizierter Systeme nicht überstanden. Stellen Sie außerdem absolut sicher, dass der Schreibschutz das Dokument enthält, mit dem das Makro verbunden ist. Andernfalls verfügen Sie noch über einen Datenextrationsmechanismus.

TBH, Python ist eigentlich nicht besonders gut für diese Art von Dingen. Wäre dies nicht in erster Linie der Punkt der Diskussion, würde ich stattdessen die Verwendung von Lua vorschlagen. Es ist viel besser für diese Art von Verwendung konzipiert und es ist viel einfacher zu sichern (obwohl das oben auf der Meine Antwort ist auch für Lua ein Thema.

Um die Grenzen klarstellen zu können: Wenn Sie die Hardwarefehler ignorieren, wäre es sicher, den Code an eine virtuelle Maschine (oder eine separate Hardware, die Hardwarefehler abdeckt) zu senden, dort auszuführen und die Ergebnisse zurückzuholen? ceremcem vor 5 Jahren 0
Vorausgesetzt, die VM-Software hat auch keine Fehler, dann ja, wahrscheinlich. Es gab jedoch einige Fehler in vielen VM-Managern, die nicht hardwarespezifisch waren und die Möglichkeit hatten, sich vor der VM zu schützen (oder zumindest einen DoS-Angriff auf den Host durchführen). Austin Hemmelgarn vor 5 Jahren 0
... und das brachte mich zu https://en.wikipedia.org/wiki/Virtual_machine_escape ceremcem vor 5 Jahren 0