- Da AI-Entwicklungsassistenten immer häufiger eingesetzt werden, wird eine Sandbox-Ausführungsumgebung benötigt, die sowohl Systemsicherheit als auch Komfort gewährleistet
- Standardmäßig fordert Claude Code bei jedem Dateizugriff oder jeder Ausführung eine Erlaubnis an, was den Arbeitsfluss durch wiederholte Bestätigungen stört
- Um dieses Problem zu lösen, wird eine leichtgewichtige Sandbox-Konfiguration mit bubblewrap vorgeschlagen, die leichter als Docker ist und eine der lokalen Umgebung ähnliche Entwicklungsumgebung beibehalten kann
- Das Skript bindet nur die minimal nötigen Pfade wie
/etc, $HOME und das Projektverzeichnis und beschränkt den Zugriff außerhalb des Projekts
- Dieser Ansatz ist eine praktische Methode, um die sichere Ausführung von AI-Agenten und Entwicklungseffizienz zugleich zu gewährleisten
Problem des Dateizugriffs bei AI-Agenten
- Claude Code ist eine Befehlszeilenschnittstelle, die bei jedem Lesen oder Schreiben von Dateien sowie bei jeder Softwareausführung die Zustimmung des Nutzers einholt
- Das ist aus Sicherheitssicht sinnvoll, erschwert aber durch die wiederholten Rückfragen paralleles Arbeiten
- Mit der Option
--dangerously-skip-permissions lassen sich alle Aufgaben ohne Rückfrage ausführen
- Manche Nutzer verwenden dies, jedoch besteht ein Risiko von Systemschäden
Sandbox-Konzept und Optionen
- Eine allgemeine Lösung ist die Sandbox-Ausführung mithilfe entfernter Maschinen (exe.dev, sprites.dev, daytona.io) oder Virtualisierungstechnologien wie Docker
- Unter Linux ist bubblewrap eine leichtgewichtige Alternative, die cgroups und user namespaces nutzt, um Prozesse zu isolieren
- In einer Sandbox-Umgebung werden folgende Bedingungen benötigt
- Beibehaltung derselben Struktur wie in der bestehenden Entwicklungsumgebung
- Minimaler Zugriff auf Informationen außerhalb des aktuellen Projekts
- Schreibzugriff nur auf das Projektverzeichnis
- Dieselben Dateien wie in der IDE direkt prüfen und bearbeiten können
- Netzwerkzugriff erlauben, um AI-Anbieter zu erreichen und Server auszuführen
Sicherheitsaspekte und Grenzen
- bubblewrap und Docker bieten keine vollständige Sicherheitsisolierung
- Risiken wie Kernel-Zero-Day-Schwachstellen, Side-Channel-Kommunikation und Datenabfluss bleiben bestehen
- Der Autor gewichtet jedoch Entwicklungskomfort höher als diese Risiken
- Die Codebasis wird mit
git verwaltet und auf GitHub usw. gesichert, sodass das Risiko von Beschädigungen gering ist
- Um das Risiko des Lecks von API-Schlüsseln zu verringern, wird empfohlen, API-Schlüssel pro Projekt zu trennen
Aufbau des bubblewrap-Sandbox-Skripts
- Das Skript mountet mit dem Befehl
bwrap verschiedene Verzeichnisse als schreibgeschützt (ro-bind) oder beschreibbar (bind)
- Systempfade wie
/bin, /lib und /usr/bin werden schreibgeschützt eingebunden
$HOME/.claude, $HOME/.cache und das aktuelle Arbeitsverzeichnis ($PWD) sind beschreibbar
$HOME/.claude.json wird über einen Dateideskriptor injiziert, sodass Änderungen nicht in die tatsächliche Datei übernommen werden
- Der Hostname wird zu
bubblewrap geändert und ist dadurch unterscheidbar
/tmp, /proc und /dev werden von bubblewrap automatisch verarbeitet
- Statt ganz
/etc offenzulegen, werden nur die minimal benötigten Dateien gebunden
- Node.js ist unter
/opt/node/node-v22.11.0-linux-x64/ installiert
Vorgehen für benutzerdefinierte Anpassungen
- Um das Skript an andere AI-Agenten oder Systeme anzupassen, kann man es so ändern, dass zunächst
bash ausgeführt wird, und den Agenten dann manuell starten, während man die benötigten Dateien prüft
- Mit dem Befehl
strace lassen sich Dateizugriffsaufrufe verfolgen
- Beispiel:
strace -e trace=open,openat,stat,statx,access -o /tmp/strace.log codex
- Durch Analyse des Logs können benötigte Dateien identifiziert und durch Binden der entsprechenden Pfade die Umgebung angepasst werden
Fazit
- Sandboxing mit bubblewrap ist ein praktischer Ansatz, der denselben Komfort wie die lokale Entwicklungsumgebung beibehält und zugleich das Risiko von Fehlverhalten von AI-Agenten oder Datenabfluss minimiert
- Der Autor plant, das Skript auf dieser Grundlage je nach Bedarf kontinuierlich anzupassen
Noch keine Kommentare.