Sub-Millisekunden-VM-Sandboxes mit Copy-on-Write-Speicher-Forking

Ich wollte herausfinden, wie schnell ein isolierter Code-Sandbox starten könnte, wenn ich nie eine neue VM booten müsste. Anstatt also bei jeder Ausführung eine neue MicroVM zu starten, boote ich Firecracker einmal mit bereits geladenem Python und numpy und mache dann einen Snapshot des gesamten VM-Zustands. Jede spätere Ausführung erstellt eine neue KVM-VM, die auf einer `MAP_PRIVATE`-Abbildung des Snapshot-Speichers basiert, sodass Linux mir automatisch Copy-on-Write-Seiten bereitstellt. Das bedeutet, jeder Sandbox startet von einem bereits laufenden Python-Prozess innerhalb einer echten VM, führt den Code aus und beendet sich. Das sind echte KVM-VMs, keine Container: separater Gast-Kernel, separater Gast-Speicher, separate Seitentabellen. Wenn eine VM in den Speicher schreibt, erhält sie eine private Kopie dieser Seite. Die Schwierigkeit lag nicht beim CoW selbst. Die Schwierigkeit lag darin, die gesnapshotete VM korrekt fortzusetzen. Rust, Apache 2.0.

  • Cloud Native
  • Datenschutz an erster Stelle
  • Open Source

KI-Zusammenfassung

ZeroBoot ist ein System, das Sub-Millisekunden VM-Sandboxes durch Snapshotting eines vorab gestarteten Firecracker MicroVM mit Python und Bibliotheken erstellt. Jede neue Ausführung fork diesen Snapshot mit Copy-on-Write Memory Mappings, bietet vollständige KVM-Isolation ohne den Overhead eines frischen VM-Boots.

Am besten geeignet für

Serverless/Function-as-a-Service Plattformen, die schnelle Cold Starts benötigen, Hochleistungs-Code-Sandboxing für nicht vertrauenswürdigen Benutzercode, Data Science oder ML-Arbeitslasten, die schnelle, isolierte Python-Umgebungen benötigen

Warum es wichtig ist

Es ermöglicht nahezu instantane VM-Startzeiten mit vollständiger Hardware-Level-Isolation durch Eliminierung des Bootprozesses durch Memory Forking eines vorinitialisierten Snapshots.

Hauptfunktionen

  • Startet VM-Sandboxen in unter einer Millisekunde durch Copy-on-Write-Speicher-Forking
  • Bootet Firecracker einmal mit vorab geladenem Python und numpy, dann erstellt es einen Snapshot des gesamten VM-Zustands
  • Erstellt neue KVM-VMs, die durch MAP_PRIVATE-Mappings von Snapshot-Speicher für automatische CoW-Seiten unterstützt werden
  • Bietet echte KVM-VM-Isolation mit separaten Gastkernen, Speicher und Seitentabellen

Anwendungsfälle

  • Eine Data-Science-Plattform nutzt dies, um tausende isolierte Python-Datentransformationen für verschiedene Kunden auszuführen. Jedes Benutzerskript wird in einer neuen VM ausgeführt, die in unter einer Millisekunde startet, wodurch vollständige Isolation zwischen Jobs gewährleistet wird, während die Leistung einer vorgewärmten Umgebung mit bereits geladenen Bibliotheken wie numpy erhalten bleibt.
  • Ein serverloser Computing-Anbieter übernimmt diese Technologie, um Funktionsausführungsumgebungen zu erstellen. Wenn eine Funktion aufgerufen wird, fork ein neues MicroVM von einem Snapshot, der die Laufzeitumgebung enthält, wodurch die Cold-Start-Latenz von Hunderten von Millisekunden auf Sub-Millisekunden-Zeiten drastisch reduziert wird und die Benutzererfahrung für latenzsensitive Anwendungen verbessert wird.
  • Ein Sicherheitsforschungsunternehmen setzt diese Sandboxes ein, um nicht vertrauenswürdige Codebeispiele für Malware-Analysen sicher auszuführen. Jede Probe läuft in einer vollständig isolierten VM, die fast sofort startet, sodass Forscher tausende Varianten schnell testen können, während jegliche bösartige Aktivität innerhalb der geforkten Umgebung eingedämmt wird.