top of page

Anthropic Simon testete smolvm, doch die Sandbox braucht weiterhin eine Steuerungsebene

20. Aug.
12 Min. Lesezeit

Der Anthropic-Simon-Forscher Simon Willison testete smolvm anhand eines anspruchsvollen Ziels: nicht vertrauenswürdiges Python und JavaScript ohne Netzwerk-, Dateisystem- oder Ressourcenmissbrauch sicher auszuführen. Das Experiment stieß unmittelbar auf einen Konflikt. Claude Code for web lief in einem Firecracker-Gast, während smolvm Zugriff auf Hardwarevirtualisierung benötigte, die der Gast nicht bereitstellte.

Dieses Scheitern zeigte nicht, dass smolvm unsicher war. Es zeigte, dass die Bewertung einer MicroVM innerhalb einer weiteren eingeschränkten virtuellen Maschine scheitern kann, bevor die Sicherheitstests überhaupt beginnen. Dieser Unterschied ist wichtig für Teams, die von Nutzern bereitgestellte Skripte, KI-generierte Programme oder automatisierte Datentransformationen erwägen.

Die Sandbox-Forschungsnotizen legen zudem eine größere technische Lücke offen. Eine starke Grenze durch virtuelle Maschinen ist nur ein Teil eines sicheren Dienstes zur Codeausführung. Betreiber benötigen rund um diese Grenze weiterhin Fristen, Ressourcenabrechnung, Dateivorbereitung, Ausgabekontrollen, Überwachung und Bereinigung.

smolvm bietet mehrere nützliche Bausteine. Netzwerkzugriff ist standardmäßig deaktiviert, Workloads erhalten getrennte Gastkernel, und CPU- sowie Speicherwerte sind konfigurierbar. Dennoch schaffen diese Funktionen nicht automatisch einen produktionsreifen Dienst für feindseligen Code.

Der eigentliche Wettbewerb lautet daher nicht smolvm gegen Docker oder Python gegen JavaScript. Es geht um das Versprechen einer Ein-Befehl-Isolation gegenüber den betrieblichen Kontrollen, die für eine verlässliche Mehrbenutzerausführung erforderlich sind.

Der Test scheiterte, bevor der nicht vertrauenswürdige Code lief

Das erste Ergebnis war ein Fehler bei der Umgebungskompatibilität, kein Sandbox-Ausbruch und kein fehlgeschlagenes Ressourcenlimit.

Willison bat ein Anthropic-Modell, das über Claude Code for web arbeitete, smolmachines als schnelle Sandbox zu untersuchen. Der vorgesehene Workload war konkret: von Nutzern bereitgestellten Code für Aufgaben wie die Transformation strukturierter Daten ausführen.

Dieser Code benötigte strikte Grenzen. Er sollte kein Netzwerk sehen, nur auf festgelegte Dateien zugreifen, begrenzten Speicher verbrauchen und nach einem vom Betreiber definierten Zeitraum stoppen. Eine Endlosschleife wie while true sollte Rechenressourcen nicht unbegrenzt belegen.

Das Modell konnte das Projekt recherchieren und Tests entwerfen. Es konnte jedoch die smolvm-Maschinen nicht starten, die zu deren Ausführung erforderlich waren. Laut Willisons Bericht war die Claude-Code-Umgebung bereits ein Firecracker-Gast unter Linux.

smolvm verwendet hardwaregestützte Virtualisierung über plattformspezifische Hypervisoren. Unter Linux bedeutet das normalerweise KVM, die Kernel-Schnittstelle, welche Prozessor-Virtualisierungsfunktionen für einen Virtual-Machine-Monitor bereitstellt. Ein eingeschränkter Cloud-Gast verfügt häufig nicht über das /dev/kvm-Gerät, das zum Start eines weiteren hardwarebeschleunigten Gasts erforderlich ist.

Das ist das Problem der verschachtelten Virtualisierung. Eine virtuelle Maschine kann nur dann eine weitere virtuelle Maschine hosten, wenn die äußere Plattform die erforderlichen Prozessorfunktionen und den Gerätezugriff bereitstellt. Viele verwaltete Sandboxes halten diese absichtlich zurück.

Die Einschränkung erzeugt ein ungewöhnliches Testparadox. Claude Code for web war teilweise isoliert, weil es in einer MicroVM lief. Genau diese Isolation hinderte es daran, die andere MicroVM zu starten, die es bewerten sollte.

Während dieses Versuchs erreichte kein aussagekräftiger Python- oder JavaScript-Angriffs-Workload smolvm. Der Test lieferte keine unabhängigen Messungen zu Startlatenz, Speicherdurchsetzung, CPU-Auslastung, Dateiisolation oder Abbruchverhalten.

Diese fehlende Evidenz sollte jede Schlussfolgerung prägen. Es wäre ungenau zu behaupten, dass die Übung smolvm als sicheren Dienst zur Codeausführung validiert habe. Ebenso wäre es ungenau, den blockierten Start als Beleg gegen die Gastisolation von smolvm zu werten.

Stattdessen identifiziert das Ergebnis eine Bereitstellungsvoraussetzung. Ein Team muss smolvm auf einem kompatiblen physischen Host oder in einer virtuellen Maschine betreiben, die verschachtelte Virtualisierung erlaubt.

Das offizielle smolvm-Sicherheitsmodell nennt KVM als Linux-Backend. Es unterstützt außerdem Apples Hypervisor-Framework und die Windows Hypervisor Platform auf den jeweiligen Betriebssystemen.

Dieses plattformübergreifende Design hilft bei der lokalen Entwicklung. Es macht smolvm jedoch nicht innerhalb jeder bestehenden Agenten-Sandbox, jedes Continuous-Integration-Workers oder jeder Serverless-Umgebung ausführbar.

Für das anthropic-simon-Experiment ist dies die erste wichtige Umkehrung. Dieselbe Isolierungsschicht, die den Forschungsagenten schützte, hinderte den Agenten auch daran, eine zweite Isolierungsschicht zu testen.

Anthropic Simon legte die fehlende Steuerungsebene offen

smolvm kann eine VM-Grenze bereitstellen, doch die Anwendung darum herum muss entscheiden, wann Code startet, was er erhält und wann er beendet wird.

Das Projekt beschreibt smolvm als Kommandozeilenwerkzeug für isolierte, portable Linux-VMs. Jeder Workload läuft mit einem eigenen Gastkernel über libkrun, einen Virtual-Machine-Monitor für schlanke Workloads.

Diese Architektur schafft eine stärkere Standardgrenze als ein gewöhnlicher Container. Ein herkömmlicher Container teilt sich normalerweise den Hostkernel, selbst wenn Namespaces Prozesse, Netzwerke und Mounts verbergen. Ein smolvm-Gast erhält einen separaten Kernel hinter einer Hypervisor-Grenze.

Dieser Unterschied verringert die direkte Exposition gegenüber dem Hostkernel. Er beseitigt jedoch nicht die Notwendigkeit, allem zu misstrauen, was innerhalb des Gasts läuft. Die Dokumentation von smolvm erklärt ausdrücklich, dass Betreiber Root im Gast als nicht vertrauenswürdig behandeln sollten.

Seine Standard-Netzwerkhaltung entspricht Willisons Ziel. Netzwerkzugriff ist optional, sodass eine ohne Netzwerkoption gestartete Maschine keine gewöhnliche ausgehende Konnektivität erhalten sollte. Host-Allowlists sind verfügbar, wenn eine Anwendung eng begrenzten ausgehenden Zugriff benötigt.

Auch die Exposition des Dateisystems ist explizit. Host-Verzeichnisse werden nur sichtbar, wenn der Betreiber sie einhängt. Dadurch ist für Transformationsjobs ein Muster mit Staging-Verzeichnissen möglich.

Ein Ausführungsdienst könnte festgelegte Eingaben in ein temporäres Verzeichnis kopieren. Er könnte dieses Verzeichnis schreibgeschützt einhängen, einen separaten beschreibbaren Ausgabeort bereitstellen und beides nach der Validierung der Ergebnisse verwerfen.

Die dokumentierte Einschränkung von smolvm ist jedoch wichtig. Seine Volume-Schnittstelle hängt Verzeichnisse ein, keine einzelnen Dateien. Ein Dienst, der Zugriff auf „nur festgelegte Dateien“ verspricht, muss daher ein isoliertes Verzeichnis erstellen, das genau diese Dateien enthält.

Der Dienst muss auch diesen Staging-Schritt absichern. Er sollte symbolische Links, ungewöhnliche Gerätedateien, unerwartete Berechtigungen und Pfade ablehnen, die das vorgesehene Verzeichnis verlassen. Die VM-Grenze kann einen nachlässigen Prozess zur Dateivorbereitung auf dem Host nicht korrigieren.

Die Speicherkonfiguration ist über die Option --mem oder ein Smolfile, die deklarative Maschinenkonfiguration von smolvm, verfügbar. Der dokumentierte Standardwert beträgt 8 GiB, wobei der Speicher über einen elastischen virtio-Ballon bereitgestellt wird.

Elastische Zuweisung verbessert die Hostauslastung, da der Host nicht sofort die gesamte konfigurierte Menge reserviert. Sie sollte nicht mit Zulassungssteuerung über viele feindselige Jobs hinweg verwechselt werden.

Wenn ein Dienst zahlreiche Gäste mit optimistischen Zuweisungen startet, kann die Gesamtnachfrage den Host dennoch überlasten. Der Scheduler benötigt ein separates Kapazitätsmodell für Speicher, virtuelle CPUs, Speicherplatz und die Anzahl gleichzeitig laufender Maschinen.

Bei der CPU-Konfiguration besteht eine ähnliche Unterscheidung. Die Zuweisung einer virtuellen CPU begrenzt die parallele Ausführung innerhalb eines Gasts. Sie garantiert nicht automatisch, dass das Programm nur eine feste Anzahl an CPU-Sekunden erhält.

Eine Single-Thread-Endlosschleife kann ihre zugewiesene virtuelle CPU unbegrenzt verbrauchen. Der Hypervisor begrenzt die Schleife, doch ein externer Supervisor muss eine Frist durchsetzen und die Maschine beenden.

Produktionssysteme benötigen normalerweise sowohl Richtlinien nach Echtzeit als auch nach Ressourcen. Ein Echtzeit-Timeout behandelt Hänger, schlafende Prozesse und blockierte Programme. CPU-Abrechnung erkennt Workloads, die Rechenleistung verbrennen, ohne Fortschritte zu machen.

Der Supervisor muss außerhalb des Gasts bleiben. Code, der innerhalb der Maschine läuft, sollte weder den Timer noch das Beendigungssignal oder die endgültige Bereinigungsentscheidung kontrollieren. Andernfalls könnte der Workload versuchen, seine eigene Schutzvorkehrung zu deaktivieren.

Deshalb kann die Formulierung „Sandbox für nicht vertrauenswürdigen Code“ zwei getrennte Produkte verbergen. Das eine ist die Isolierungs-Engine. Das andere ist die Steuerungsebene, die diese Engine sicher plant und überwacht.

Der anthropic-simon-Test zielte auf das Verhalten des vollständigen Produkts. Die öffentliche Schnittstelle von smolvm stellt hauptsächlich die Isolierungs-Engine und die Low-Level-Konfiguration bereit, die zu ihrem Aufbau erforderlich sind.

Eine MicroVM verändert die Grenze, nicht das Bedrohungsmodell

Hardwarevirtualisierung verbessert die Eindämmung, doch jede bewusst in den Gast weitergereichte Fähigkeit wird Teil der Angriffsfläche.

smolvm verwendet libkrun VMM, um schlanke virtuelle Maschinen zu starten. Der Gast erhält einen eigenen Kernel, während der Host die Kontrolle über die virtuelle Hardware und die bereitgestellten Geräte behält.

Dieses Design adressiert ein zentrales Anliegen bei Containern. Container isolieren Workloads mithilfe von Kernelfunktionen, doch feindselige Prozesse interagieren weiterhin über erlaubte Systemaufrufe mit demselben Hostkernel. Eine Kernel-Schwachstelle kann daher die Container-Grenze gefährden.

MicroVM-Systeme verschieben diese Grenze nach außen. Der feindselige Code trifft zunächst auf einen Gastkernel und virtuelle Geräte. Um den Host zu erreichen, muss er im Allgemeinen die Grenze des Virtual-Machine-Monitors oder Hypervisors überwinden.

AWS entwickelte Firecracker microVMs nach einem ähnlichen Prinzip für Serverless-Workloads. Firecracker kombiniert KVM-Virtualisierung mit einem bewusst reduzierten Gerätemodell und begrenzt unnötige emulierte Hardware.

smolvm ist nicht einfach ein Firecracker-Wrapper. Seine aktuelle Dokumentation beschreibt libkrun-Backends für macOS, Linux und Windows. Dennoch platzieren beide Ansätze jeden Workload hinter einem separaten Gastkernel.

Diese Trennung ist relevant, wenn ein KI-System Code autonom schreibt. Generierter Code kann versehentlich destruktives Verhalten, Angriffe über Abhängigkeiten, Credential-Probes oder absichtliche Payloads enthalten, die aus nicht vertrauenswürdigen Daten übernommen wurden.

Auch ohne KI birgt eine Datentransformationsfunktion dasselbe Risiko. Ein Nutzer könnte Python einreichen, das das Dateisystem durchsucht, wiederholt Prozesse erzeugt, Speicher bis zum Fehlerzustand belegt oder ausgehende Verbindungen versucht.

JavaScript ist nicht automatisch sicherer. Node.js-Programme können Dateien lesen, Unterprozesse starten, Sockets öffnen, native Erweiterungen laden und Speicher erschöpfen, wenn diese Fähigkeiten verfügbar bleiben.

Beschränkungen auf Sprachebene werden allein oft fragil, weil Standardbibliotheken umfangreiche Funktionalität bereitstellen. Transitive Abhängigkeiten können zudem nativen Code oder unerwartete Zugriffspfade einführen.

Ein vollständiger Linux-Gast erlaubt Entwicklern, gewöhnliche Python- und Node.js-Pakete auszuführen, ohne sie für eine spezialisierte Laufzeitumgebung umzuschreiben. Diese Kompatibilität ist ein Grund, warum MicroVMs attraktiv bleiben.

Der Kompromiss ist eine größere Gastumgebung. Der Dienst muss einen Kernel, ein Laufzeit-Image, Bibliotheken und virtuelle Geräte bereitstellen. Jede gepflegte Komponente beeinflusst Patching, Reproduzierbarkeit und die vertrauenswürdige Rechenbasis.

Die Dokumentation von smolvm nennt das Hostbetriebssystem, das Hypervisor-Backend, libkrun, smolvm und das aufrufende Hostkonto als vertrauenswürdige Komponenten. Eine Kompromittierung dieser Schichten kann die versprochene Grenze schwächen.

Die Dokumentation warnt auch vor expliziter Weiterleitung von Fähigkeiten. Ein eingehängtes Verzeichnis legt seinen Inhalt offen. Das Aktivieren von Netzwerkzugriff erweitert erreichbare Dienste. Die Weiterleitung eines SSH-Agenten erlaubt Gastprozessen, Signaturen anzufordern, solange der Socket verfügbar bleibt.

Das sind sinnvolle Funktionen für Entwicklungsmaschinen. In einem Dienst, der anonyme oder adversariale Eingaben verarbeitet, sollten sie normalerweise deaktiviert bleiben.

GPU-Zugriff erfordert noch mehr Vorsicht. smolvm unterstützt Schnittstellen, die gemeinsam genutzte GPU-Ressourcen des Hosts oder hostseitige Prozesse einbeziehen. In der Dokumentation heißt es, CUDA-Remoting sollte nicht als gehärtete GPU-Isolation für mehrere Mandanten betrachtet werden.

Diese Einschränkung betrifft keinen einfachen Python-Job zur Datenkonvertierung. Sie verdeutlicht die allgemeinere Regel: Komfortfunktionen können die saubere Gastgrenze überschreiten, die die grundlegende Architektur attraktiv macht.

Für feindselige Workloads ist das sicherste Profil bewusst langweilig. Kein Netzwerk, keine weitergeleiteten Zugangsdaten, keine Host-Dienste, keine GPU, minimale schreibgeschützte Eingaben und ein temporärer Ausgabebereich.

Die VM sollte nach einem Job zerstört werden. Die Wiederverwendung einer Maschine birgt das Risiko, veränderte Dateien, Prozesse, Caches oder verborgenen Zustand in die Ausführung des nächsten Nutzers zu übernehmen.

Portable Images können helfen, konsistente Laufzeitumgebungen bereitzustellen. smolvm verwendet OCI-Images, basierend auf dem OCI image format, sodass Betreiber Python- oder Node.js-Umgebungen mit einem vertrauten Paketstandard vorbereiten können.

Image-Kompatibilität begründet kein Vertrauen in ein Image. Ein Produktionsdienst benötigt weiterhin festgeschriebene Digests, kontrollierte Registries, den Umgang mit Schwachstellen und einen Prozess zum Neubauen von Laufzeitumgebungen nach Sicherheitsupdates.

Ressourcenlimits brauchen mehr als CPU- und Speicher-Flags

Die schwierigste Verteidigung gegen „while true“ ist nicht Isolation, sondern eine zuverlässige Beendigung in jedem Fehlermodus.

Eine Speichereinstellung setzt dem Gast eine Obergrenze für den sichtbaren RAM. Wenn ein Programm diese Kapazität überschreitet, kann der Gastkernel sein Out-of-Memory-Verhalten auslösen. Das begrenzt eine Form des Ressourcenmissbrauchs.

Der Host muss dennoch beobachten, was danach geschieht. Der Gast könnte nur einen Prozess beenden, nicht mehr reagieren oder viel Zeit für die Speicherbereinigung aufwenden. Der Dienst kann nicht davon ausgehen, dass jeder Speicherfehler ein sauberes Ergebnis erzeugt.

Ein strikter Runner sollte Ergebnisse klassifizieren. Erfolg, Nutzerausnahme, Speichererschöpfung, Zeitüberschreitung, Ausgabeüberlauf, interner Sandbox-Fehler und Ablehnung aufgrund fehlender Host-Kapazität sind unterschiedliche Ereignisse.

Diese Klassifizierung ist für Nutzer und Betreiber wichtig. Ein Transformationsskript mit ungültiger Syntax sollte nicht wie ein Infrastrukturausfall wirken. Eine Maschine, die nicht startet, sollte nicht das Wiederholungsbudget eines Nutzers verbrauchen.

CPU-Limits erfordern mehrere Ebenen. Der Gast kann eine begrenzte Anzahl virtueller CPUs erhalten. Host-Kontrollen wie cgroups können dann den VMM-Prozess im Verhältnis zu anderen Workloads regulieren.

Ein Deadline-Supervisor sollte die gesamte VM nach Ablauf des zulässigen Zeitraums beenden. Nur den obersten Python- oder Node.js-Prozess zu beenden reicht nicht aus, weil das Programm Kinder oder Hintergrundprozesse erzeugen kann.

Die Beendigung muss auch eskalieren können. Der Supervisor kann zunächst eine geordnete Abschaltung anfordern und dann den VMM-Prozess stoppen, wenn der Gast nicht reagiert. Er sollte prüfen, dass zugehörige Prozesse und temporäre Ressourcen verschwunden sind.

Auch Ausgabe ist eine Ressource. Ein Programm kann unbegrenzt drucken, riesige Ergebnisdateien erstellen oder tief verschachtelte Daten erzeugen, die nach Ende der Ausführung Parser-Speicher verbrauchen.

Der Dienst benötigt Byte-Limits für Standardausgabe, Standardfehler und erzeugte Dateien. Er sollte Logs streamen oder kürzen, ohne unbegrenzt Inhalte im Anwendungsspeicher zu puffern.

Speicherquoten sollten für die beschreibbare Schicht des Gasts und jedes exportierte Ausgabeverzeichnis gelten. Andernfalls kann eine winzige Eingabe genug Daten erzeugen, um das Dateisystem des Hosts zu füllen.

Auch die Prozessanzahl ist wichtig. Eine Fork-Bombe erzeugt Prozesse schneller, als ein menschlicher Betreiber reagieren kann. Der Gastkernel benötigt Prozesslimits, während der Host den VMM und seine unterstützenden Prozesse begrenzen sollte.

Ein feindseliges Programm kann Zeit auch ausnutzen, ohne eine CPU auszulasten. Es könnte endlos schlafen, auf fehlende Eingaben warten oder einen Deadlock erzeugen. Deshalb bleiben Echtzeit-Deadlines zwingend erforderlich.

Zeit sollte von der externen Steuerungsebene gemessen werden. Ein Gast kann seine eigene Uhr verändern oder interne Watchdog-Prozesse beeinträchtigen. Der monotone Timer des Hosts bietet eine zuverlässigere Quelle.

Der Dateiexport darf erst nach Ende der Ausführung erfolgen. Der Host sollte Dateitypen, Größen, Pfade und Anzahlen prüfen, bevor Ergebnisse in dauerhaften Speicher verschoben werden.

Für übliche Datentransformationen kann ein engerer Ausgabevertrag das Risiko verringern. Der Runner könnte ein JSON-Dokument, eine CSV-Datei oder ein begrenztes Archiv akzeptieren, statt eines beliebigen Verzeichnisbaums.

Ein Dienst sollte außerdem die Eingabekomplexität begrenzen, bevor er die Maschine startet. Komprimierte Archive können sich weit über ihre Upload-Größe hinaus ausdehnen, während bösartige Formate Parser außerhalb des Gasts angreifen können.

Die sichere Abfolge beginnt daher vor smolvm. Eingaben validieren und bereitstellen, eine frische Maschine erstellen, Laufzeitlimits durchsetzen, die Maschine stoppen, Ausgaben prüfen und anschließend temporären Zustand zerstören.

Auch Beobachtbarkeit gehört außerhalb des Gasts. Betreiber benötigen Maschinenkennungen, Image-Digests, Start- und Endzeiten, Exit-Klassifizierungen, Ressourcenspitzen und den Bereinigungsstatus.

Diese Aufzeichnungen sollten standardmäßig keine sensiblen Nutzerdaten speichern. Logs können zu einem weiteren Leckagekanal werden, wenn Skripte Eingabedatensätze, Zugangsdaten oder proprietäre Inhalte ausgeben.

Keine dieser Anforderungen mindert den Wert von smolvm. Sie definieren die begleitende Arbeit, die erforderlich ist, um seine Low-Level-Primitiven in einen verlässlichen Dienst zu verwandeln.

Docker, WebAssembly und gehostete Sandboxes bleiben Wettbewerber

smolvm nimmt eine nützliche Mittelposition ein und bietet normale Linux-Kompatibilität bei stärkerer Trennung als ein Container mit gemeinsam genutztem Kernel.

Docker bleibt für viele Engineering-Teams der einfachste Einstieg. Images, Registries, Build-Tools und Orchestrierungssysteme unterstützen Container-Workflows bereits im großen Maßstab.

Container können Namespaces, Capabilities, seccomp-Filter, schreibgeschützte Dateisysteme und cgroup-Limits anwenden. Diese Kontrollen können angemessen sein, wenn Workloads vertrauenswürdig oder nur mäßig riskant sind.

Der gemeinsam genutzte Kernel bleibt bei vollständig feindseligem Code das zentrale Problem. Eine Escape-Schwachstelle im Hostkernel oder in der Container-Laufzeit kann andere Workloads und Hostdaten offenlegen.

smolvm verändert diese Angriffsfläche, indem jeder Maschine ein separater Gastkernel zugewiesen wird. Es akzeptiert außerdem OCI-Images und verringert damit für Teams mit bestehenden Python- oder Node.js-Umgebungen einen Teil der Migrationshürden.

Container-Plattformen verfügen jedoch über ausgereifte Scheduling- und Policy-Ebenen. Die Sicherheitsdokumentation von smolvm erklärt, dass das eigenständige Tool selbst keine gehärtete Multi-User-Steuerungsebene ist.

Ein Team, das Container durch smolvm ersetzt, darf während dieses Wechsels keine operativen Schutzmaßnahmen verlieren. Stärkere Isolation unterhalb eines schwächeren Schedulers kann weiterhin zu einem unzuverlässigen Dienst führen.

WebAssembly verfolgt einen anderen Weg. Eine WebAssembly-Laufzeit beginnt mit einem eingeschränkten Capability-Modell und erteilt dann explizit Berechtigungen für Funktionen wie Datei- oder Netzwerkzugriff.

Dieser Ansatz kann für kompakte Transformations-Workloads eine kleinere Schnittstelle schaffen. Er unterstützt außerdem schnellen Start und präzise Einbettung in eine Anwendung.

Kompatibilität ist der Kompromiss. Standard-Python- und Node.js-Pakete erwarten möglicherweise Linux-Systemaufrufe, native Erweiterungen, Unterprozesse oder Laufzeitverhalten, die in einer eingeschränkten WebAssembly-Umgebung nicht verfügbar sind.

Ein Team, das die Transformationssprache kontrolliert, könnte diese Einschränkungen akzeptieren. Ein Dienst, der breite Python- und JavaScript-Kompatibilität verspricht, wird schnell darauf stoßen.

Gehostete Code-Sandboxes bieten einen dritten Weg. Anbieter bündeln Maschinenlebenszyklus, Timeouts, Netzwerkpolitik, Speicher und APIs in verwalteten Diensten.

Das kann die Implementierungszeit verkürzen. Es überträgt jedoch sensiblen Code und Daten an einen anderen Betreiber, führt Dienstabhängigkeiten ein und begrenzt die Kontrolle über das zugrunde liegende Isolationsdesign.

Self-Hosting von smolvm lässt die Laufzeitumgebung unter der Verwaltung des Käufers. Es macht den Käufer zugleich für Host-Härtung, Sicherheitsupdates, Kapazitätsplanung, Monitoring und Incident Response verantwortlich.

Die Wahl sollte dem Workload folgen, nicht der Mode. Ein eingeschränkter Ausdrucksauswerter benötigt keinen vollständigen Linux-Gast. Ein komplexes Python-Paket mit nativen Abhängigkeiten wahrscheinlich schon.

Bei einmaligen Transformationen muss der Start einer MicroVM im Verhältnis zur Jobdauer klein bleiben. smolvm sagt, gepackte Workloads könnten in weniger als 200 Millisekunden booten, doch unabhängige Messungen sollten die genauen Hosts und Images des Käufers abdecken.

Benchmarks sollten den kalten Image-Abruf, die Maschinenerstellung, den Laufzeitstart, die Bereitstellung der Eingaben, die Ausführung, die Ausgabevalidierung und die Zerstörung umfassen. Nur die Bootzeit des Gasts zu messen, unterschätzt die für Nutzer sichtbare Latenz.

Teams sollten auch die Dichte testen. Ein schneller Gast sagt wenig über einen Host aus, auf dem unter Speicherdruck Hunderte gleichzeitiger Einsendungen laufen.

Die Wettbewerbsfrage ist daher umfassender als die Isolationsstärke. Sie umfasst Kompatibilität, Startverhalten, Reife des Schedulings, operativen Aufwand und die Folgen eines erfolgreichen Ausbruchs.

smolvm verdient eine Evaluierung, weil es vertraute Linux-Workloads mit einer VM-Grenze kombiniert. Der Versuch von anthropic simon zeigt, dass eine solche Evaluierung auf Infrastruktur erfolgen muss, die die erforderlichen Virtualisierungsfunktionen bereitstellen kann.

Drei Tests werden entscheiden, ob smolvm bereit ist

Die nächsten hilfreichen Belege müssen aus Tests mit feindseligen Workloads stammen, nicht aus einer weiteren Funktionscheckliste.

Das erste Signal ist ein reproduzierbarer Test auf einem kompatiblen Bare-Metal- oder Nested-Virtualization-Host. Er sollte sowohl Python- als auch JavaScript-Suiten über denselben externen Supervisor ausführen.

Diese Suiten sollten Endlosschleifen, Speichererschöpfung, Fork-Bomben, übergroße Ausgabe, Dateisystem-Probes, Netzwerk-Probes, verzögerte Kindprozesse und abnormale Gastabschaltungen umfassen. Jeder Fall benötigt ein erwartetes Ergebnis.

Ein erfolgreiches Ergebnis würde die Annahme stärken, dass smolvm als Isolations-Engine für Transformationsjobs dienen kann. Wiederholte Bereinigungsfehler oder inkonsistente Beendigung würden sie schwächen.

Das zweite Signal ist eine explizite, dokumentierte Durchsetzung des Lebenszyklus. Ein Referenz-Runner sollte zeigen, wie sich Echtzeit-Deadlines, CPU-Kontrollen auf Hostebene, Speicherobergrenzen, Ausgabequoten und die vollständige Zerstörung der Maschine durchsetzen lassen.

Konfigurations-Flags reichen nicht aus. Der Test sollte das Verhalten prüfen, wenn der Gast Abschaltanfragen ignoriert, Speicher füllt und Nachkommenprozesse zurücklässt.

Dieses Signal würde die Lücke zwischen den VM-Primitiven von smolvm und dem Dienst schließen, den Willison ursprünglich untersuchen wollte. Ohne sie muss jeder Anwender den kritischen Supervisor eigenständig entwerfen.

Das dritte Signal ist eine Sicherheitsprüfung unter einem erklärten Bedrohungsmodell. Die Prüfung sollte vertrauenswürdige Host-Komponenten, das Verhalten eingehängter Dateien, Netzwerkdurchsetzung, Image-Herkunft und Multi-Tenant-Annahmen identifizieren.

Die bestehende Dokumentation von smolvm enthält bereits hilfreiche Offenlegungen. Sie besagt, dass Releases derzeit keine Signaturen und Herkunftsattestierungen haben, obwohl eine Prüfsummenverifizierung verfügbar ist, wenn die Prüfsummendatei heruntergeladen werden kann.

Diese Offenlegung gibt Evaluatoren eine konkrete Frage zur Lieferkette. Ein Produktionsbetreiber benötigt eine kontrollierte Methode zum Beschaffen, Verifizieren, Festschreiben und Aktualisieren der smolvm-Binärdatei und Gast-Images.

Eine Bewertung sollte außerdem zwischen lokaler Einzelbenutzer-Ausführung und feindseliger Multi-Tenancy unterscheiden. Ein Entwickler, der generierten Code auf einem Laptop ausführt, sieht sich anderen Folgen gegenüber als ein öffentlicher Dienst, der anonyme Einsendungen akzeptiert.

Keine Sandbox kann beliebigen Code in einen risikofreien Workload verwandeln. Das praktische Ziel ist mehrschichtige Eindämmung, kontrollierte Fähigkeiten, begrenzter Ressourcenverbrauch und schnelle Wiederherstellung, wenn eine Schicht versagt.

Das vielversprechendste Bereitstellungsmuster verwendet smolvm als eine Schicht innerhalb dieses Systems. Ein Host-Dienst validiert Eingaben, erstellt einen temporären Gast, verweigert Netzwerkzugriff, setzt Deadlines durch, prüft Ausgaben und zerstört die Umgebung.

Für Teams, die KI-Workflows entwickeln, reicht die Erkenntnis über die Ausführung von Code hinaus. Jedes System, das einem Modell den Zugriff auf lokale Informationen ermöglicht, benötigt klare Grenzen dafür, was das Modell lesen, schreiben und behalten darf.

Eine durchsuchbare Wissensdatenbank kann Ingenieurinnen und Ingenieuren helfen, Testergebnisse, Bedrohungsmodelle und Erkenntnisse aus Vorfällen festzuhalten. Sie kann keine Laufzeitisolierung ersetzen, aber Sicherheitsentscheidungen besser nachvollziehbar machen.

Das anthropic-simon-Experiment sollte daher als unvollständige Bewertung mit einer nützlichen ersten Erkenntnis betrachtet werden. smolvm konnte in der gewählten Claude-Code-Umgebung nicht ausgeführt werden, weil die äußere Sandbox den Zugriff auf Virtualisierung verweigerte.

Der nächste Schritt besteht nicht darin, diese äußere Sandbox zu lockern. Stattdessen sollte die Bewertung auf einem dedizierten kompatiblen Host mit externer Überwachung und einer veröffentlichten adversarialen Testsuite wiederholt werden.

Würde Ihr Dienst weiterhin jeden Job stoppen, nur genehmigte Ausgaben bewahren und vollständig aufräumen, wenn der Gast feindselig wird? Wenn diese Antwort nicht gemessen wurde, ist die Sandbox nicht bereit für Benutzercode.

 
 

Kostenlos loslegen

Ein Local-First-KI-Assistent mit persönlichem Wissensmanagement

Für ein besseres KI-Erlebnis

unterstützt remio derzeit nur Windows 10+ (x64) und M-Chip Macs.

Ihr KI-Partner bei der Arbeit
Mehr schaffen mit remio

Planen. Erstellen. Liefern.
Alles an einem Ort.

bottom of page