
Steganografische Prompt-Injection-Abwehr für agentische KI mittels Provenienzbindung zur Dekodierzeit, HMAC-Authentifizierung und MCP-Vertrauensdurchsetzung.
Ein reproduzierbarer Proof-of-Concept für einen steganografischen Prompt-Injection-Vektor, der Textinhaltscanner umgeht, und eine Abwehr, die ihn an der Dekodierungsgrenze eindämmt – Provenienzbindung zur Dekodierungszeit.
Nur für Bildungs- und defensive Sicherheitsforschung. Alle Secrets in diesem Repo sind gefälscht. Nur auf Systemen verwenden, die Sie besitzen oder für die Sie eine Testautorisierung haben.
Ein Angreifer sendet einem Opfer per E-Mail eine gewöhnlich aussehende Nachricht. Ein Markenlogo in der
E-Mail-Signatur verbirgt eine Anweisung mittels Steganografie (LSB, DCT oder Metadaten).
Das Bild ist visuell identisch mit dem Original und enthält keinen verdächtigen Text, sodass
ein Inhaltscanner nichts sieht und das Opfer nie etwas anklickt. Aber der routinemäßige Posteingangs-Zusammenfassungsagent
des Opfers verarbeitet die Signatur, ein Tool in seiner Pipeline dekodiert das Bild, und die verborgene Anweisung gelangt in den
Kontext des Agenten – wo sie in einer Multi-Agent-MCP-Pipeline als vertrauenswürdige Peer-Ausgabe weitergegeben wird
und einen kritischen Tool-Aufruf auslöst. Dies ist cross-modale Vertrauenswäsche. Die Abwehr, Provenienzbindung zur Dekodierungszeit, prägt
ein HMAC-signiertes UNTRUSTED-Label in dem Moment, in dem ein verschleierungsauflösendes Tool ausgeführt wird, und
lässt die MCP-Schicht die Provenienz-Lineage selbst verwalten, sodass sie jeden
kritischen Tool-Aufruf blockiert, dessen Lineage nicht vertrauenswürdig ist – selbst wenn ein kompromittierter Agent
ein gültiges Label für einen unzusammenhängenden vertrauenswürdigen Wert vorlegt. Sie enthält statt
erkennt, ist also unabhängig von Payload-Formulierung und Träger.
Angriffserfolgsrate (ASR) – 24 Payloads (drei Träger × acht Umgehungen: einfach, harmlos formuliert, Base64, Token-Split, kyrillisches Homoglyph, Zero-Width, Unicode-Confusable, HTML-Kommentar); niedriger ist besser. Die In-Process-Taint- Basislinie ist eine Informationsflusskontrolle, die Dekodierungsausgaben als nicht vertrauenswürdig markiert, aber keine domänenübergreifende kryptografische Bindung trägt:
| Abwehr | Leaks | n | ASR |
|---|---|---|---|
| Ungeschützt (keine Prüfungen) | 24 | 24 | 100% |
| Inhaltscanner (Keyword/DLP) | 15 | 24 | 62,5% |
| Regex-Intent-Parser | 15 | 24 | 62,5% |
| Datenfluss-Taint (IFC-Basislinie) | 0 | 24 | 0% |
| Provenienz zur Dekodierungszeit (unser Ansatz) | 0 | 24 | 0% |
Taint und Provenienz sind bei Single-Domain-ASR gleichauf; sie divergieren unter adversarialer Weiterleitung (siehe unten), was der Sinn der kryptografischen Bindung ist.
Substitution gültiger Labels – ein kompromittierter Agent legt eine legitim signierte
TRUSTED-Bindung von einem harmlosen Tool vor und lässt dabei den UNTRUSTED-Dekodierungsursprung weg,
der den Aufruf tatsächlich auslöst. Die Lösung besteht darin, dass die MCP-Schicht die Lineage
selbst verwaltet und anhand ihres eigenen Ledgers entscheidet, nicht anhand der vom Agenten gelieferten Bindung:
| Durchsetzung | Entscheidung |
|---|---|
| Nur vom Agenten gelieferte Bindung (naiv) | erlauben (leakt) |
| Schichtverwaltet, Abhängigkeit ausgelassen | blockieren |
| Schichtverwaltet, Abhängigkeit in Argumenten | blockieren |
| Schichtverwaltet, sauberer Kontext | erlauben |
Komponenten-Ablation – vier Komponenten, jede verteidigt gegen einen eigenen Angriff. Eine nach der anderen deaktivieren; substitution ist in-domain, forged relay ist ein gefälschtes TRUSTED-
Label, das eine nicht vertrauenswürdige Weiterleitung zu einem entfernten Verifier kreuzt, der nur die vorgelegte
Bindung besitzt. Entscheidend ist: HMAC allein stoppt nicht die Substitution (das Ledger schon), und
das Ledger allein übersteht keine domänenübergreifende Weiterleitung (der HMAC schon):
| Konfiguration | Honest | Substitution | Gefälschtes Relay |
|---|---|---|---|
| Vollständiger Mechanismus | blockiert | blockiert | blockiert |
| − Decode-Markierung | leakt | leakt | leakt |
| − kryptografische Authentifizierung (HMAC) | blockiert | blockiert | leakt |
| − Verfolgung vertrauenswürdiger Abstammung | blockiert | leakt | blockiert |
| − Sink-Vermittlung | leakt | leakt | leakt |
Kontextübergreifende Weitergabe — Taint überlebt eine Nachrichtengrenze zwischen Agenten, nicht nur ein Tool-Rückgabe-Handle. Ein nicht vertrauenswürdiger Decode in Agent A erreicht einen kritischen Aufruf im separaten Kontext von Agent B, und auf einem vermittelten Kanal (den das Bedrohungsmodell bereits für die Kommunikation zwischen Agenten voraussetzt) wird der Taint weitergegeben und B wird blockiert. Ein Kanal, den die Schicht nicht vermittelt, liegt konstruktionsbedingt außerhalb des Modells — kein Leck innerhalb des Geltungsbereichs:
| Kanal A → B | Kritischer Aufruf von B |
|---|---|
| Vermittelte Nachricht zwischen Agenten (im Geltungsbereich) | blockiert (Taint weitergegeben) |
| Unvermittelter Seitenkanal (außerhalb des Modells) | nicht abgedeckt |
Overhead-Skalierung — MintBinding ist ~O(1) (~10–14 µs unabhängig von der Tiefe);
EnforceCritical ist linear in der Abhängigkeitsabschlussmenge, die es durchläuft (≈10 µs bei Tiefe
1 → ≈0,66 ms bei Tiefe 100 → ≈6,7 ms bei Tiefe 1000) und konstant (~6–7 µs) in der Anzahl
gleichzeitiger getainteter Kontexte. Realistische Abschlussmengen (Tiefe im Zehnerbereich) bleiben unter
~0,1 ms.
Nutzen für legitime Aufgaben — ein auditierter Pfad zur vertrauenswürdigen Hochstufung (Neukennzeichnung eines bestimmten dekodierten Werts, z. B. einer per OCR erfassten Rechnungsnummer, unter Autorisierung) beseitigt falsche Blockierungen, während der Angriff blockiert bleibt:
| Regime | Abschluss | Falsche Blockierungen | Angriff blockiert |
|---|---|---|---|
| Keine Hochstufung | 2/3 (67%) | 1 | ja |
| Vertrauenswürdige Hochstufung | 3/3 (100%) | 0 | ja |
Vollständigkeit der Decode-Menge — die Registrierungsannahme, direkt belastet:
| Decode-Menge | Stego-Angriff | Legitimer kritischer Aufruf |
|---|---|---|
| Korrekt | blockiert | erlaubt |
| Fehlender Decoder | leakt | erlaubt |
| Zu breit gefasst | blockiert | falsche Blockierung |
Label-Integrität über Übergaben hinweg — die Bindung überlebt ehrliche Weiterleitung und widersteht einem kompromittierten Worker:
| Relay-Szenario | Entscheidung des Verifiers |
|---|---|
| Ehrliches Relay, 1 / 3 / 5 / 10 Hops | verifiziert; blockiert |
| Kompromittiert: Payload umschreiben, HMAC beibehalten | blockiert (HMAC stimmt nicht überein) |
Kompromittiert: TRUSTED fälschen | blockiert (HMAC stimmt nicht überein) |
| Kompromittiert: Bindung entfernen | blockiert (kein gültiges Label) |