
Messung offener Privilegien in Agenten-Abwehrmechanismen
Ein Agenten-Sicherheits-Benchmark meldet zwei Zahlen, Angriffserfolg und gutartigen Nutzen, und beide werden aus Läufen abgelesen, die stattgefunden haben. Keine von beiden sagt, was die Abwehr auf den Pfaden, die kein Lauf genommen hat, bereitstand zu erlauben. Ajar fragt direkt danach: Für jede gutartige Aufgabe erstellt es Kandidaten-Tool-Aufrufe, die die Aufgabe nicht benötigt, präsentiert jeden davon der Abwehr an jedem Punkt, an dem der Agent handeln könnte, und bewertet den schadensgewichteten Anteil, den die Abwehr erlaubt.
Es hängt sich an einen bereits existierenden Benchmark an und verwendet wieder, was dieser Benchmark bereits mitbringt, um sich selbst zu bewerten — seine Aufgaben, Tool-Schemata, Referenzlösungen und Zielzustände —, sodass ein neuer Host einen Adapter und eine neue Abwehr einen Wrapper benötigt.
Der Adapter exportiert, was der Host-Benchmark bereits mitbringt. Der Generator verwandelt das in Kandidatenaufrufe an jedem Entscheidungspunkt, das Orakel gibt jedem Kandidaten seine Beschriftung und Schadensstufe, und der Wrapper übergibt jeden einzelnen an den eigenen Durchsetzungspfad einer Abwehr. Die Bewertung vergleicht die Urteile mit den Beschriftungen.
ajar/core/ die Zwischenform: Kandidaten, Probes, Beschriftungen, Schadensstufen
ajar/adapters/ Host-Benchmark-Adapter; agentdojo/ ist der Referenz-Adapter
ajar/generate/ die Fehlerfamilien, die Kandidatenaufrufe aus einer Aufgabe erstellen
ajar/score/ Leckage, Suffizienz, Überbeschränkung, Angriffszulassung
ajar/defenses/ Ajars eigene Referenz-Baselines, von Allow-All bis zu einem exakten Orakel
ajar/llm/ die Modell-Schnittstelle für Abwehren und Generatoren, die eine aufrufen
tests/
scripts/
git clone https://github.com/reSHARMA/Ajar.git
cd Ajar
pip install -e .
bash scripts/bootstrap.sh # meldet, was vorhanden und was fehlt
Ajar bewertet gegen einen Host-Benchmark, den es nicht mitliefert. Für den Referenz-Adapter richte es auf einen AgentDojo-Checkout:
git clone https://github.com/ethz-spylab/agentdojo.git bench/agentdojo
python scripts/export_probes.py --benchmark agentdojo
Das schreibt die Probe-Suite: die Aufgaben, die daraus erstellten Kandidatenaufrufe und die Beschriftung und Schadensstufe jedes Kandidaten.
Überprivilegien-Leckage ist der schadensgewichtete Anteil überschüssiger Aufrufe, die eine Abwehr erlaubt. Jeder überschüssige Aufruf trägt ein Gewicht, das mit dem wächst, was er bewirken könnte, wenn er ausgeführt würde, von einem reversiblen Lesen des eigenen Zustands des Nutzers bis zu einer irreversiblen Aktion gegenüber einem Dritten oder auf Finanzmittel.
Suffizienz ist der Anteil der Aufrufe, die eine Aufgabe wirklich benötigt, die die Abwehr durchlässt. Sie zusammen mit der Leckage zu berichten, verhindert, dass eines von beiden ausgenutzt wird: Eine Abwehr, die alles verweigert, lässt nichts durchsickern, und eine, die alles erlaubt, verweigert nichts, was die Aufgabe benötigt.
Zwei weitere Zahlen kommen mit ihnen. Überbeschränkung zählt die berechtigten Aufrufe, die eine Abwehr verweigert, und Angriffszulassung zählt die Angriffe, deren jeden Sink-Aufruf sie erlaubt.
Eine Abwehr implementiert eine Entscheidung: Angesichts eines vorgeschlagenen Aufrufs und der bereits
ausgeführten Aufrufe erlaube ihn oder verweigere ihn. Implementiere das gegen ajar.defenses.base,
registriere es, und Ajar meldet alle vier Zahlen auf denselben Tests, die jede andere Abwehr sieht.
ajar/defenses/baselines.py enthält vier Referenzverfahren — Allow-All, eine Tool-Namen-Allowlist, ein
argument-exaktes Orakel und Deny-All —, die die Skala an beiden Enden begrenzen und einer neuen Abwehr
etwas geben, zwischen dem sie sich einordnen kann.
MIT. Siehe LICENSE.