
LLM-Ausgaben und KI-generierte Inhalte auf Anzeichen von Datenexfiltration scannen (EchoLeak, CVE-2025-32711), bevor sie Nutzer oder nachgelagerte Systeme erreichen.
Scan LLM-Ausgaben und KI-generierte Inhalte auf Datenexfiltrationssignale, bevor sie Benutzer, Protokolle oder nachgelagerte Systeme erreichen.
Moderne LLM-Anwendungen verarbeiten routinemäßig sensible Prompts, interne Dokumente, API-Antworten und Benutzerdaten. Das schafft eine neue Sicherheitsgrenze: die Ausgabeschicht.
Die EchoLeak-Familie von Angriffen (einschließlich CVE-2025-32711) hat gezeigt, wie versteckte oder verschleierte Payloads in generierten Text eingebettet und zur Exfiltration von Daten über Tools, Links oder Parsing-Ketten verwendet werden können.
Traditionelle Scanner konzentrieren sich auf Dateien, Abhängigkeiten und Laufzeitverkehr. Sie prüfen generierte Modellausgaben nicht in einer zweckgebundenen Weise.
exfil-scan bietet einen „Virenscanner für LLM-Antworten“:
| Kategorie | Schweregrad | Was erkannt wird |
|---|---|---|
| Versteckter Text | HIGH | Nullbreite und unsichtbare Unicode-Sequenzen, die zum Verstecken von Payloads verwendet werden |
| Kodierte Daten | HIGH | Base64/Hex/Oktal/Unicode-Escape-Sequenzen, die wahrscheinlich kodierten Inhalt transportieren |
| Daten in URLs | MEDIUM | Verdächtig lange Query-Strings und kodierte URL-Parameter-Payloads |
| Metadatenlecks | HIGH | Anmeldedaten-ähnliche Schlüssel und Token-Formate in strukturierten/unstrukturierten Ausgaben |
| Unicode-Steganografie | MEDIUM | Bidirektionale Steuerzeichen und Wörter im Stil von Homoglyphen mit gemischten Schriften |
| Strukturelle Anomalien | LOW | Extreme Zeilenumbrüche/Tabulator-Sequenzen und Ersetzungszeichen-Kodierungsartefakte |
low, medium, highstdin, einzelnen Dateien oder Verzeichnissentext, json, markdown oder htmlgit clone https://github.com/your-org/exfil-scan.git
cd exfil-scan
pip install -e .
pip install exfil-scan
pip install -e ".[dev]"
pytest
echo 'api_key: sk-ABCDEFGHIJKLMNOPQRSTUVWXYZ123456' | exfil-scan
exfil-scan --input output.txt
exfil-scan --directory ./model-logs --recursive
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
-i, --input | Pfad | keine | Eine Eingabedatei scannen |
-d, --directory | Pfad | keine | Alle unterstützten Dateien in einem Verzeichnis scannen |
-r, --recursive | Flag | false | Verschachtelte Verzeichnisse mit --directory rekursiv durchsuchen |
-c, --config | Pfad | keine | Pfad zur YAML-Konfigurationsdatei |
-s, --sensitivity | low|medium|high | config/default | Sensitivitätsprofil überschreiben |
-f, --format | text|json|html|markdown | text | Berichtsformat rendern |
-o, --output | Pfad | stdout | Gerenderten Bericht in eine Datei schreiben |
--version | Flag | n/a | CLI-Version ausgeben |
-h, --help | Flag | n/a | Nutzung und Argumente anzeigen |
Hinweise:
--input oder --directory, nicht beides.stdin.1.exfil-scan --input suspicious.txt --format text
Erwarteter Stil:
exfil-scan report
=================
Scanned targets: 1
Total findings: 2
1. [HIGH] metadata_leaks/known_token_format:openai_key
Location: suspicious.txt:1:10
Description: Matched known credential/token format (openai_key).
exfil-scan --input suspicious.txt --format json
Erwartete Form:
{
"finding_count": 2,
"scanned_targets": ["suspicious.txt"],
"findings": [
{
"category": "metadata_leaks",
"rule": "known_token_format:openai_key",
"severity": "HIGH",
"description": "Matched known credential/token format (openai_key).",
"location": "suspicious.txt:1:10",
"snippet": "..."
}
]
}
exfil-scan --directory ./outputs --recursive --format html --output report.html
Erwartetes Verhalten:
exfil-scan --input suspicious.txt --format markdown --output report.md
Erwarteter Stil:
# exfil-scan Report
- Scanned targets: 1
- Total findings: 2
Das Repository enthält default-config.yaml.
Sie können mit --config Ihre eigene Datei übergeben.
Sensitivitätsanpassung:
low: weniger Fehlalarme, größere Schwellenwertemedium: ausgewogene Standardwertehigh: erkennt subtilere MusterSensitivitätsüberschreibung per CLI:
exfil-scan --input out.txt --sensitivity high
Sie können eigene Token-Formate und Metadatenschlüssel hinzufügen:
sensitivity: medium
rules:
metadata_keys:
- api_key
- db_password
- internal_token
token_patterns:
custom_jwt: "\\beyJ[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\.[A-Za-z0-9_\\-]{10,}\\b"
corp_secret: "\\bcorp_[A-Za-z0-9]{24,}\\b"
Dann ausführen:
exfil-scan --input response.log --config ./my-config.yaml
Modulverantwortlichkeiten:
exfil_scan/cli.py: Argumentparsing, Eingabeauswahl, Ausgaberendering, Exit-Behandlungexfil_scan/config.py: Standardwerte, YAML-Laden, rekursives Zusammenführen, Profilnormalisierungexfil_scan/scanner.py: sechs Erkennungs-Engines, Finding-Dataclasses, Berichtsformatierungtests/test_scan.py: Regressionstests für Erkennung und AusgabeformateAusführungsablauf:
| Code | Bedeutung |
|---|---|
0 | Keine Befunde (sauber) |
1 | Befunde erkannt |
2 | Laufzeit- oder Argumentfehler |
Das macht die CI-Integration unkompliziert:
exfil-scan --directory ./artifacts --recursive --format json --output exfil-report.json
Wenn eine Erkennung gefunden wird, kann Ihr Job basierend auf Exit-Code 1 schnell fehlschlagen.
Tests ausführen:
pytest
Die Abdeckung umfasst:
exfil-scan ist ein heuristischer Scanner.
Es soll Risiken reduzieren und verdächtige Ausgaben sichtbar machen, nicht die Sicherheit von Inhalten beweisen.
Empfohlenes Bereitstellungsmuster: