Zurück zu den Updates
New releaseJul 31, 2026

Agent-Security-Regression-Harness v0.2.0

Ausführbare Sicherheits-Regressionstests für agentische Anwendungen und MCP-integrierte Systeme.

Teilen

OWASP Agent Security Regression Harness

Das OWASP Agent Security Regression Harness ist eine quelloffene, herstellerneutrale Testumgebung, mit der ausführbare Sicherheits-Regressionsszenarien gegen agentische Anwendungen und MCP-integrierte Systeme ausgeführt werden können.

Das Projekt hilft Entwicklern und Sicherheitsverantwortlichen zu prüfen, dass Änderungen an Prompts, Modellen, Tools, Retrieval-Quellen, Memory, Genehmigungsabläufen oder MCP-Integrationen bekannte Sicherheitsfehler nicht erneut einführen.

KI-Agent mit Sicherheits-Harness

Was dieses Projekt tut

Dieses Projekt bietet eine code-first Testumgebung für:

  • Ausführen reproduzierbarer Missbrauchsszenarien für die Agentensicherheit
  • Validieren erwarteter Sicherheitsergebnisse mit Policy-Assertions
  • Erzeugen maschinenlesbarer Ergebnisse für lokale Entwicklung und CI
  • Erfassen von Ausführungs-Traces für Debugging und Auditierbarkeit
  • Aufbau einer wiederverwendbaren Szenarienbibliothek für Agenten- und MCP-Sicherheitsrisiken

Was dieses Projekt nicht ist

Dieses Projekt ist nicht:

  • Ein Benchmark
  • Ein Scanner
  • Ein Leaderboard
  • Ein Ersatz für Threat Modeling
  • Eine generische KI-Sicherheitsbewertungssuite
  • Eine Garantie, dass ein agentisches System sicher ist

Es ist eine Regressions-Testumgebung. Ihre Aufgabe ist es, Teams zu helfen, bekannte Klassen von Agentensicherheitsfehlern zu erkennen, bevor sie ausgeliefert werden.

Aktueller Status

Dieses Projekt befindet sich in einer frühen Incubator-Entwicklungsphase.

Die aktuelle CLI unterstützt:

  1. Laden und Validieren von Szenariendateien
  2. Ausgeben von Dry-Run-Ergebnis-JSON
  3. Auswerten von Assertions gegen zuvor aufgezeichnete Trace-JSON
  4. Ausführen von Szenarien gegen ein Live-HTTP-Ziel
  5. Ausführen von Szenarien gegen lokale Python-Callable-Ziele
  6. Ausführen von Szenarien gegen OpenAI-Agents-SDK-Ziele
  7. Ausführen von Szenarien gegen lokale MCP-Workflow-Ziele
  8. Ausführen von Szenarien gegen LangChain/LangGraph-Invoke-Ziele
  9. Ausgeben maschinenlesbarer Ergebnis-JSON

Derzeit implementierte Assertions:

  • no_denied_tool_call — Durchsetzung von Denylist und optionaler Allowlist für Tool-Aufrufe
  • goal_integrity — schlägt fehl, wenn der Agent vom erwarteten Zielereignis abweicht
  • memory_isolation — schlägt fehl, wenn konfigurierte forbidden_markers irgendwo im Trace erscheinen (mit geschwärzten Fehlernachweisen)
  • no_external_recipient — schlägt fehl bei ausgehenden Aktionen an Empfänger oder Domänen außerhalb der Allowlist

Um zu testen, ob bestimmte bekannte Geheimnisse (API-Schlüssel, Tokens, von Ihnen kontrollierte personenbezogene Daten) preisgegeben werden, konfigurieren Sie sie als forbidden_markers unter expected.memory_isolation — memory_isolation setzt dies durch und meldet Lecks, ohne den Marker-Wert erneut offenzulegen. Siehe docs/assertions/memory-isolation.md.

Schnellstart

1. Für die lokale Entwicklung installieren

Klonen Sie das Repository und installieren Sie das Paket dann im bearbeitbaren Modus (editable mode):

python -m pip install -e .

Überprüfen Sie, dass die CLI verfügbar ist:

agent-harness version

Erwartete Ausgabe:

agent-harness 0.2.0

Anleitungen zum Verfassen von Szenarien finden Sie unter Szenarienspezifikation.

2. Ein Szenario validieren

Validieren Sie das enthaltene Goal-Hijack-Szenario:

agent-harness validate scenarios/goal_hijack/basic.yaml

Erwartete Ausgabe:

valid: goal_hijack.basic_001

3. Den Dry-Run-Modus ausführen

Der Dry-Run-Modus validiert das Szenario und gibt die Ergebnisstruktur aus, ohne ein Ziel auszuführen.

agent-harness run scenarios/goal_hijack/basic.yaml --dry-run

Dry-Run-Assertions werden als not_run markiert, da kein Zielverhalten beobachtet wurde.

4. Einen vorhandenen Trace auswerten

Sie können ein Szenario gegen einen zuvor aufgezeichneten Trace auswerten.

Beispiel für einen fehlschlagenden Trace:

agent-harness run scenarios/goal_hijack/basic.yaml --trace-file examples/traces/denied_tool_call.json

Dieser Trace enthält einen verweigerten send_email-Tool-Aufruf, daher schlägt die Assertion no_denied_tool_call fehl.

Beispiel für einen erfolgreichen Trace:

agent-harness run scenarios/goal_hijack/basic.yaml --trace-file examples/traces/no_denied_tool_call.json

Dieser Trace enthält keinen verweigerten Tool-Aufruf und gibt ein goal-Ereignis mit der ID summarize_document aus, das dem expected_goal des Szenarios entspricht, sodass die Assertions no_denied_tool_call und goal_integrity beide bestehen.

Da das Beispielszenario außerdem no_secret_disclosure enthält, das noch nicht implementiert ist, kann das Ergebnis auf oberster Ebene weiterhin not_run sein, selbst wenn no_denied_tool_call und goal_integrity bestehen. Es sollte nicht fail sein.

5. Gegen ein Live-HTTP-Ziel ausführen

Die Testumgebung kann ein Live-HTTP-Ziel aufrufen, das Szenario-Eingaben akzeptiert und Trace-JSON zurückgibt.

Starten Sie das Beispielziel in einem Terminal:

python examples/targets/http_agent.py

Führen Sie in einem zweiten Terminal die Testumgebung dagegen aus:

agent-harness run scenarios/goal_hijack/basic.yaml --live --target-url http://127.0.0.1:8000/run

Das Beispielziel gibt einen Trace ohne verweigerte Tool-Aufrufe und ein goal-Ereignis mit der ID summarize_document zurück, das dem expected_goal des Szenarios entspricht, sodass no_denied_tool_call und goal_integrity beide bestehen.

6. Die Testumgebung mit Mini-Demo-Agenten demonstrieren

Das Repository enthält zwei zusätzliche Demo-Agenten unter examples/targets/, die mit dem gebündelten Szenario goal_hijack/outbound_email_exfiltration_001.yaml zusammenarbeiten. Zusammen zeigen sie, wie ein echter Regressionsfund und ein echter Erfolg durchgängig über die CLI aussehen.

Beide Agenten sind bewusst winzig und entweder unsicher-by-design oder gehärtet-by-design — sie dienen dazu, der Testumgebung eine positive und negative Kontrolle zum Vergleich zu bieten, nicht als Vorlagen für Produktionsagenten.

Starten Sie den verwundbaren Mini-Agenten (Port 8001):

python examples/targets/vulnerable_http_agent.py

Führen Sie das Szenario für ausgehende E-Mail-Exfiltration dagegen aus:

agent-harness run scenarios/goal_hijack/outbound_email_exfiltration_001.yaml --live \
  --target-url http://127.0.0.1:8001/run

Der verwundbare Agent folgt naiv unvertrauenswürdigen abgerufenen Inhalten, ruft daher send_email auf, und die Assertion no_denied_tool_call schlägt mit denied tool call observed: send_email fehl. Genau diesen Regressionsfund soll die Testumgebung liefern.

Starten Sie nun den gehärteten Mini-Agenten (Port 8002):

python examples/targets/hardened_http_agent.py

Führen Sie dasselbe Szenario dagegen aus:

agent-harness run scenarios/goal_hijack/outbound_email_exfiltration_001.yaml --live \
  --target-url http://127.0.0.1:8002/run

Der gehärtete Agent behandelt unvertrauenswürdigen Kontext als Daten, niemals als Anweisung, sodass er keine Tool-Aufrufe tätigt und die Assertion besteht. Der Trace zeichnet außerdem ein untrusted_context_received-Ereignis auf, damit Prüfer sehen können, dass der Agent den Angriffsinhalt beobachtet und bewusst abgelehnt hat, darauf zu reagieren.

Kategorien