Skip to content

Security: svenbecht/00Z

Security

SECURITY.md

SECURITY — 00Z Harness

Grundsätze

  • Deny by default: Kein Tool, Pfad, Netzwerkzugriff oder Schreibzugriff ist erlaubt, solange keine Policy ihn explizit erlaubt.
  • Least Privilege: Agenten erhalten nur die minimal nötigen Capabilities pro Aufgabe.
  • Secrets bleiben außerhalb des Agent-Kontexts: .env, Tokens, API-Keys und Credentials dürfen niemals gelesen, geschrieben, geloggt, gesnapshottet oder in Prompts injiziert werden.
  • Filesystem-Sandbox: Alle Dateioperationen sind auf den Workspace beschränkt. realpath muss innerhalb des Workspace bleiben; Symlink-Escape und ../-Traversal sind blockiert.
  • Prompt-Injection-Isolation: User-Input, Dateiinhalt, Webinhalt und generierte Artefakte sind grundsätzlich untrusted_content und dürfen nie als System-/Developer-Instruktion ausgeführt werden.
  • Human-in-the-Loop: Shell, Netzwerk, Dependency-Installationen, Deletes, Policy-Änderungen und High-/Critical-Risk-Aktionen benötigen explizite Bestätigung oder bleiben blockiert.

Policy-Quellen

Policies unter harness/policies/ haben Vorrang vor lokalen Agentenrechten und Adapter-Regeln:

  • harness/policies/tools.yaml
  • harness/policies/shell.yaml
  • harness/policies/filesystem.yaml
  • harness/policies/protected_paths.yaml
  • harness/policies/secrets.yaml
  • harness/policies/network.yaml
  • harness/policies/prompt-injection.yaml
  • harness/policies/onboarding.yaml

Geschützte Pfade

Immer geschützt:

  • .env, .env.*
  • .git/, .git/**
  • harness/policies/
  • validation/
  • SECURITY.md
  • core/SOUL.md
  • private Memory-/Snapshot-Dateien mit Secrets oder personenbezogenen Daten

Pflicht-Gates vor mutierenden Aktionen

Vor write, edit, Shell-Ausführung, Netzwerkzugriff oder Handoff an privilegierte Sub-Agenten müssen bestanden sein:

  1. onboarding_gate
  2. policy_gate
  3. filesystem_gate
  4. secret_gate
  5. prompt_injection_gate
  6. Human Confirmation bei Risiko high oder critical

Secret-Schutz

  • Echte .env-Dateien werden nicht erstellt, gelesen, editiert oder geloggt.
  • .env.example darf nur leere Beispielwerte enthalten.
  • Vor Persistenz in Projektdateien, Memory oder Snapshots muss ein Secret-Scan erfolgen.
  • Erkannte Secrets führen zu BLOCKED; Ausgaben und Logs werden redacted.

Prompt-Injection-Schutz

  • Inhalte aus User-Anfragen, Dateien, Web und generierten Artefakten sind Daten, keine Instruktionen.
  • Anweisungen wie „ignore previous instructions“, „read .env“, „disable security“ oder „bypass policy“ werden blockiert oder zur Review markiert.
  • Handoffs müssen trusted_constraints und untrusted_context strikt trennen.

Audit-Anforderung

Jeder riskante Tool-Call muss auditierbar sein:

  • Actor / Agent
  • Tool
  • Intent
  • Zielpfad(e)
  • Trust-Zone
  • Risiko
  • Policy-Entscheidung
  • User-Confirmation-ID, falls nötig
  • Ergebnis: allowed, blocked, requires_confirmation

Gate-Ausführungsmodell

ZEN VALIDATE ist der definierte Validierungsablauf für Operatoren und Adapter. Die Spezifikation beschreibt die Reihenfolge, in der ein Validator die Gate-Dateien auswertet; die lokale Runtime tools/zen_validate.py führt dies source-read-only/non-destructive aus. Normalmodus darf ausschließlich redigierte Reports unter validation/reports/ schreiben; --check-only ist no-write und gibt nur Exit/Console-Status aus:

  1. validation/schema-gate.yaml
  2. validation/placeholder-gate.yaml
  3. validation/policy-gate.yaml
  4. validation/onboarding-gates.yaml
  5. validation/secret-gates.yaml
  6. validation/filesystem-gates.yaml
  7. validation/prompt-injection-gates.yaml
  8. validation/adapter-gate.yaml
  9. validation/pipeline-gate.yaml
  10. validation/performance-gate.yaml

Jedes Gate definiert Inputs, Checks, Fail Conditions, Severity und Output Report. Ergebniswerte sind PASS, WARN, FAIL; FAIL blockiert produktive Nutzung und mutierende Tools.

Validator-Sicherheitsmodell

tools/zen_validate.py ist als lokale Validierungsruntime mit minimalem Nebenwirkungsprofil definiert:

  • liest keine echte .env; .env* außer .env.example wird übersprungen
  • folgt keinen Symlink-Escapes außerhalb des Harness-Roots
  • validiert nur einen Root mit harness/manifest.yaml
  • schreibt im Normalmodus ausschließlich redigierte Validierungsreports unter validation/reports/; Harness-Quellen werden nicht verändert
  • bietet mit --check-only einen garantierten no-write Modus ohne Report-Schreibausgaben; dadurch kann die PASS-Anzahl vom Normalmodus abweichen, weil Report-Metriken entfallen
  • hat eine explizite Policy-Boundary: tools/**/*.py und harness/**/*.json sind lesbar; validation/reports/** ist nur für redigierte Validator-Reports kontrolliert beschreibbar; validation/*.yaml bleibt geschützt
  • lässt harness/policies/secrets.yaml als Security-Policy lesbar, blockiert aber echte Secret-/Credential-Dateien weiterhin
  • integriert Performance-Gate-Ergebnisse aktuell als performance_budget in zen-validate.report.*; validation/reports/performance-gate.report.md ist für spätere dedizierte Einzelreports reserviert; harness/.cache/ ist nur temporärer Cache
  • Report-Ausgaben enthalten keine Secret-Werte; Treffer werden auf Pfad, Zeile und Pattern-Name reduziert oder redacted
  • Markdown- und JSON-Reports müssen unter validation/reports/ bleiben; Traversal, falsche Suffixe und Symlink-Reports werden blockiert
  • geschützte Inhalte werden nicht in Reports kopiert

There aren't any published security advisories