Der Browser ist die Sandbox
(simonwillison.net)- Der Webplattform-Entwickler Paul Kinlan untersucht das Potenzial des Browsers als sichere Ausführungsumgebung für Coding Agents
- Er weist darauf hin, dass Browser bereits über eine leistungsfähige Sandbox-Struktur verfügen, um nicht vertrauenswürdigen Code auszuführen
- Um das zu überprüfen, erstellte er eine Demo namens Co-do, in der er Dateizugriff, Netzwerkkommunikation und Codeausführung vollständig im Browser erprobte
- Co-do nutzt die File System Access API, CSP-Header und
<iframe sandbox>sowie WebAssembly in Web Workers - Das ist ein Beispiel dafür, dass sich der Browser auch ohne lokale Container zu einer Ausführungsumgebung für AI Agents entwickeln kann
Die Perspektive auf den Browser als Sandbox
- Paul Kinlan von Google kam zu dem Schluss, dass für die Ausführung von Coding Agents eine leistungsfähige Sandbox-Umgebung nötig ist
- Er betont, dass sich der Browser in den vergangenen 30 Jahren zu einer Plattform entwickelt hat, auf der schädlicher oder nicht vertrauenswürdiger Code sicher ausgeführt werden kann
- Diese Eigenschaft ist die Grundlage dafür, den Browser als Ausführungsumgebung für Agents zu nutzen
Drei Kernelemente einer browserbasierten Sandbox
- Kinlan nennt drei Kernelemente einer Sandbox: Zugriff auf das Dateisystem, Kontrolle des Netzwerkzugriffs und sichere Codeausführung
- Die File System Access API bietet Funktionen zum Arbeiten mit lokalen Dateien im Browser und gilt derzeit als nur in Chrome verfügbar
- Über CSP(Content Security Policy)-Header und das Attribut
<iframe sandbox>lässt sich der Netzwerkzugriff steuern - Mit WebAssembly und Web Workers kann Code in einer isolierten Umgebung ausgeführt werden
Aufbau und Funktionen der Co-do-Demo
- Zur Überprüfung von Kinlans Idee wurde eine Demo-Anwendung namens Co-do entwickelt
- Nutzer wählen einen Ordner aus und konfigurieren den LLM-Anbieter sowie den API-Schlüssel
- Co-do interagiert über per CSP erlaubte API-Aufrufe mit dem LLM und bietet eine Chat-Oberfläche, die mit Dateien arbeiten kann
- Diese Struktur ähnelt Claude Cowork, läuft aber ausschließlich im Browser und ohne große lokale Container
Grenzen von <iframe sandbox> und Sicherheitstechniken
- Als zentrales Problem wird die mangelhafte Dokumentation von
<iframe sandbox>genannt- Die Implementierung unterscheidet sich stark zwischen Browsern, und es gibt nur wenig dazugehörige Dokumentation
- Kinlan stellt eine Methode vor, bei der über eine Double-Iframe-Technik Netzwerkregeln auf den inneren Frame angewendet werden
Weitere Erkenntnisse und Experimente
- Es wurde bestätigt, dass das Attribut
<input type="file" webkitdirectory>in Firefox, Safari und Chrome funktioniert- Dadurch kann der Browser schreibgeschützten Zugriff auf ein gesamtes Verzeichnis erhalten
- Um das zu testen, wurde eine webkitdirectory-Demo erstellt, die auch in künftigen Projekten genutzt werden soll
Fazit
- Der Browser hat sich bereits zu einer ausgereiften Plattform für Sicherheitsisolation und Codeausführung entwickelt
- Das Beispiel Co-do liefert experimentelle Belege dafür, dass sich der Browser zur Ausführungsumgebung für AI-Coding-Agents erweitern lässt
1 Kommentare
Hacker-News-Kommentare
Das ist ein Beitrag, den ich in meinem Link-Blog veröffentlicht habe. Um den gesamten Kontext zu verstehen, sollte man unbedingt das Original The Browser is the Sandbox lesen
Ich denke, Googles Motivation für NaCl führte direkt zur Standardisierung der Sandbox in WebAssembly. Auch DOM, JS und CSS fungieren als Rendering-Sandbox. Der Browser muss Funktionen begrenzen, um eine einheitliche Nutzererfahrung zu bieten.
Genau daran sind IE und das alte Edge gescheitert. Externe Sandboxes wie Flash, ActiveX, Java Applet und Silverlight sind alle verschwunden, und mit der Stabilisierung von asm.js und WebAssembly ist das Web deutlich sauberer geworden. Übrigens hat Flashs ActionScript auch das Design von ECMAScript und TypeScript beeinflusst
Als ich das Attribut
webkitdirectoryzum ersten Mal sah, war ich ebenfalls überrascht. Ich entwickle seit Jahren Web-Apps und hatte das komplett übersehen. Die Browser-Sandbox ist ein Sicherheitsmodell, das von Milliarden Menschen durch das Klicken auf verdächtige Links getestet wurde.Das ist ein viel reiferer Ansatz, als jedes Mal einen neuen Container hochzufahren. Allerdings hat der Browser auch Einschränkungen: keine System-Calls, keine Binärausführung und kein Hardware-Zugriff. Für AI Coding reicht das aus, bei manchen Aufgaben stößt man aber an Grenzen
Ich finde es interessant, dass systemd oder das Linux-System für Benutzerrechte in Sandbox-Diskussionen kaum erwähnt werden. Tatsächlich sind auch sie ziemlich mächtig und bieten kostengünstige Isolation
Die File System Access API ist ein großer Wendepunkt in der Webentwicklung. Bei co-do.xyz kann man ein Verzeichnis auswählen, sodass eine AI die darin enthaltenen Dateien sicher verarbeiten kann. Dank dieser API haben sich Web-Apps zu echten Produktivitätstools entwickelt
Browserbasierte Ausführung ist interessant, aber die meisten realen Business-Apps sind aus Gründen der Wartbarkeit, Sicherheit und Datenzugänglichkeit stärker in Richtung Cloud gewandert. Lokale Ausführung ist gut für persönliche Produktivität, hat aber bei Mainstream-Apps Grenzen. Dass frühere Desktop-Automatisierungsfunktionen wie AppleScript, COM und DDE verschwunden sind, hat denselben Grund
Ich möchte noch zwei Dinge vorstellen, die im Browser möglich sind
Theoretisch könnte man mit nur einer URL ein ziemlich vollständiges Agentensystem umsetzen
Früher konnte man in Chrome über die File System Access API Lese- und Schreibrechte für Verzeichnisse anfordern, aber nach einem Neuladen des Tabs waren die Berechtigungen weg. Ich frage mich, ob das inzwischen verbessert wurde
Dieser Ansatz sandboxed nur das Dateisystem. Menschen wollen aber auch E-Mail, Kalender, Chat, Quellcode, Finanzdaten und mehr anbinden. Dateisystem-Sicherheit ist nur der Anfang; die Sicherheit des gesamten Datenökosystems bleibt weiterhin eine Herausforderung
Mich interessieren die Grenzen dieses Ansatzes. Könnte man Gemini CLI im Browser als UX-verbesserte Version umsetzen? Lässt sich das auch mit lokalen Tools verbinden?