Auch wir haben in den letzten Monaten intensiv mit AI assisted coding Werkzeugen auf Basis von Large Language Models (LLM) wie Anthropic Claude Code oder Mistral Vibe Erfahrungen gesammelt und angefangen, diese in den Arbeitsalltag zu integrieren.
In diesem Post stellen wir die sandstorm-interne Sicherheitslösung claude-safe für Mac OS vor, welche das Risiko von sicherheitskritischen Datenabflüssen bei Prompt Injections drastisch reduziert. Die Lösung ist natürlich Open Source.
Sicherheitsproblem Prompt Injection
Die "normale" Nutzung von KI-Coding-Assistenten hat aus unserer Sicht ein recht wichtiges Sicherheitsproblem - die Möglichkeit der Prompt Injection. Wenn wir dem Assistenten eine Aufgabe geben, analysiert dieser dann möglichst relevanten Quellcode und versucht die Aufgabe zu lösen. Der Angriff besteht nun darin, in Texten, die der Assistent liest, gewissermaßen "unsichtbare" Anweisungen einzubetten, die der Agent dann ggf. ausführt. Auf diese Weise kann ein Angreifer bspw. den Agenten dazu "anstiften", Dateien außerhalb des Projektes auszulesen und über bestimmte CLI-Befehle an andere Server zu schicken.
Auf Entwickelnden-Computern gibt es eine Vielzahl von extrem lohnenden Angriffs-Zielen:
- SSH Private Keys
- API Keys für Cloud-Zugriffe
- Browser Cookie-Daten
- (die Liste ließe sich noch endlos fortsetzen)
Eingebaute Sicherheitsmechanismen in Claude Code
Das Problem der Prompt Injection ist den Herstellern dieser Werkzeuge sehr wohl bekannt, und sie versuchen das Problem mit einer Vielzahl von Sicherheitsmechanismen zu lösen. Dabei versuchen die Anbieter, zwischen Nutzbarkeit und Sicherheit zu balancieren. Es gibt beispielsweise in Claude Code den Sandbox Mode, welcher mit /sandbox aktiviert werden kann.
Leider hat der Sandbox Mode aus unserer Sicht einige Nachteile:
- das Lesen von Dateien außerhalb des aktuellen Verzeichnisses ist i.d.R. erlaubt und wird nicht standardmäßig verboten
- wenn der Sandbox Mode fehlschlägt, bekommt der User die Aufforderung der Bestätigung für den Befehl außerhalb der Sandbox - insbesondere bei weniger Unix-affinen Usern und sehr langen Bash/Python-Befehlen gibt es die große Gefahr, sicherheitskritische Fehler zu übersehen.
Agent-Safehouse: Sicherheits-Policies für AI
Auf der Suche nach einer extra Sicherheitsschicht für die obrigen Probleme sind wir auf das Open Source Tool Agent Safehouse gestoßen. Dieses basiert auf dem in Mac OS eingebauten (und wenig bekannten) Tool sandbox-exec, mit dem man Prozess-Hierarchien "einsperren" kann bzgl. der aufrufbaren System Calls. Agent Safehouse liefert nun einen ganzen Schwung an Policies mit, die im Wesentlichen "secure by default" sind.
Agent Safehouse löst 90% unseres Problems!
claude-safe=Opinionated Agent-Safehouse
Wir waren mit den meisten Voreinstellungen von Agent Safehouse einverstanden, wollten aber zusätzlich verbieten, .git Ordner und .env-Dateien auszulesen. Dies ist standardmäßig in Agent Safehouse erlaubt, wir wollten aber daraus "Deny by Default" machen.
Zusätzlich wollten wir die UX vereinfachen und sicherstellen, dass wir im Team nicht ausversehen auf die ungeschützte Claude Code Version zugreifen.
Daher haben wir unsere Konventionen in das Homebrew-Paket sandstorm/tap/claude-safe gesteckt. Dies könnt ihr wie folgt installieren:
Nun könnt ihr kein claude mehr aufrufen, sondern claude-unsafe (als "original"-Claude-Variante), und claude-safe als abgesicherte Variante - analog für die anderen KI-Agenten.
Standardmäßig kann nun Claude-Safe nur noch im aktuellen Verzeichnis lesen; und ihr könnt einzeln steuern,