
Nicht vertrauenswürdigen Code in einer Sandbox ausführen mit sicherem Zugriff auf den Host.
Nicht vertrauenswürdigen Code in einer Sandbox mit sicherem Zugriff auf den Host ausführen.
Chimera ist eine Userspace‑Sandbox für Code, dem Sie nicht vollständig vertrauen – eine natürliche Wahl für Codierungsagenten, die beliebige, generierte Befehle auf einem Rechner ausführen, den sie mit Ihnen teilen. Sie schränkt ein, was ein Prozess auf dem Host tun kann, lässt ihn aber dennoch auf die Dateien und Werkzeuge des Hosts zugreifen, sodass der Code nützlich bleibt, ohne das System korrumpieren zu können. Da Chimera als normales Programm läuft, benötigt es weder eine VM noch einen Container oder spezielle Hardware, Kernel‑Features oder Privilegien – es funktioniert überall dort, wo Ihr Code bereits läuft.
Dies erreicht Chimera, indem es unmodifizierte Binärdateien durch gleiche‑ISA‑dynamische Binärübersetzung ausführt und dabei jeden Gast‑Systemaufruf abfängt, sodass die Sandbox darüber entscheidet, was passiert. Chimera wird in zwei Teilen ausgeliefert: einem chimera‑Kommandozeilenwerkzeug zum Kapseln eines Prozesses in der Shell und einer Rust‑Bibliothek zum Einbetten derselben Laufzeit in Ihr eigenes Programm. Einbettende stellen einen Systemaufruf‑Handler bereit, der für jeden Gast‑Syscall entscheidet, was passiert – Weiterleitung an den Host‑Kernel, Protokollierung oder Virtualisierung.
Chimera unterstützt derzeit Linux/x86 als Ziel, mit einem in Arbeit befindlichen Port auf Darwin/arm64.
Installieren Sie das chimera‑Kommandozeilenwerkzeug von GitHub:
cargo install --git https://github.com/penberg/chimera chimera-cli
Dann jeden Befehl kapseln:
chimera run /bin/echo hello
Standardmäßig leitet Chimera jeden Systemaufruf an den Host‑Kernel weiter, sodass sich der gekapselte Prozess wie ein nativer verhält.
Aus einem lokalen Checkout installieren Sie es stattdessen mit cargo install --path cli.
Die chimera‑Crate stellt die Laufzeit bereit, auf der die CLI aufbaut.
Implementieren Sie das SystemCalls‑Trait, um zu entscheiden, wie jeder Gast‑Syscall
behandelt wird:
use chimera::{Sandbox, SystemCall, SystemCalls, host_syscall};
struct Tracer;
impl SystemCalls for Tracer {
fn handle(&mut self, call: &mut SystemCall) {
eprintln!("syscall {}", call.number);
call.set_result(host_syscall(call));
}
}
fn main() -> Result<(), chimera::Error> {
let mut sandbox = Sandbox::new("/bin/echo")?;
sandbox.args(["hello"]).system_calls(Tracer);
sandbox.run()?;
Ok(())
}
Ausgearbeitete Beispiele befinden sich unter runtime/examples/:
sandbox – eine auf einer Erlaubnisliste basierende
Systemaufruf‑Sandbox.strace – implementiert
strace(1) auf Basis desselben Traits.Siehe ARCHITECTURE.md.
Dieses Projekt ist unter der [MIT‑Lizenz] lizenziert.
Sofern Sie nicht ausdrücklich etwas anderes angeben, wird jeder von Ihnen bewusst zur Aufnahme in Chimera eingereichte Beitrag gemäß der MIT‑Lizenz lizenziert, ohne zusätzliche Bedingungen.