Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
prompt-injection-firewall — Zweischichtige LLM-Firewall, die Prompt-Injection-Eingaben durch Regex-Regeln plus einen Gemini-Klassifikator blockiert und Leaks von Geheimnissen oder System-Prompts in Bot-Antworten abfängt. | Kitploit
Tools/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
DefensivwerkzeugeWebsicherheitLernen & BildungKI-SicherheitAnomalieerkennung
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

Zweischichtige LLM-Firewall, die Prompt-Injection-Eingaben durch Regex-Regeln plus einen Gemini-Klassifikator blockiert und Leaks von Geheimnissen oder System-Prompts in Bot-Antworten abfängt.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
1vor 4 TagenNoch nicht geprüft
Teilen

Prompt-Injection Firewall

Live-Demo: https://prompt-injection-firewall.streamlit.app 2-Minuten-Demo-Video: https://drive.google.com/file/d/1tzb75nFysisrCYa11Lqj6egDs5VNmc2n/view?usp=drivesdk

Eine zweistufige Firewall für einen LLM-Support-Bot: Sie prüft, was Nutzer eingeben, und was der Bot ausgibt.

Problem

Nutzer können versuchen, die Regeln eines Bots außer Kraft zu setzen („ignore previous instructions"), seine Persona zu wechseln oder ihn dazu zu bringen, seinen System-Prompt oder Geheimnisse preiszugeben. Dieses Projekt blockiert solche Eingaben, erkennt Leaks in den Antworten des Bots und misst, wie gut es funktioniert – einschließlich der Stellen, an denen es versagt.

Funktionsweise

user input
   |
   v
[1] Rule layer (regex, fast, free)  --match--> BLOCK
   |no match
   v
[2] LLM classifier (Gemini, JSON output, Pydantic validation, retries, fail-closed) --attack--> BLOCK
   |benign
   v
AcmeBot (Gemini + system prompt)
   |
   v
[3] Output check (canary token, secret patterns, system-prompt fragments) --leak--> BLOCK
   |clean
   v
answer to user

Ausführen

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env      # then put your Gemini key in .env
python src\run_eval.py dev
python src\eval_output.py dev
python src\compare.py dev
streamlit run app.py        # local demo

Verwendetes Modell: gemini-3.1-flash-lite. Der kostenlose Tarif kann bei Auslastung 503 zurückgeben; der Code wartet und versucht es erneut. Führe src\build_cases.py nicht aus, es sei denn, du möchtest data\cases.jsonl neu erstellen (es überschreibt die Datei; derselbe Seed ergibt dieselben Fälle).

Daten

  • Eingabefälle: 25 ausgewählt (Seed 7) aus deepset/prompt-injections (Apache-2.0): 12 Angriffe, 13 harmlos. Aufteilung: 15 dev, 10 hidden.
  • Ausgabefälle: 12 von mir mit KI-Unterstützung geschrieben (8 dev, 4 hidden), darunter durch Leerzeichen versteckte Leaks und harmloser Text, der „password“/„API key“ erwähnt.
  • data/train.parquet ist im Repo enthalten (Quelle: deepset/prompt-injections, Apache-2.0).
  • Der hidden-Split wurde einmal ausgeführt, nach der letzten Änderung an Erkennungslogik und Prompts.

Ergebnisse

SetEbeneErgebnis
devnur RegelnErkennung 2/9, Fehlalarm 0/6
devRegeln + Gemini (final)Erkennung 8/9, Fehlalarm 0/6
devAusgabe-Prüfung (final)Leak erkannt 4/4, Fehlalarm 0/4
hiddenRegeln + GeminiErkennung 3/3, Fehlalarm 0/7
hiddenAusgabe-PrüfungLeak erkannt 3/3, Fehlalarm 0/1

Firewall vs. keine Firewall:

OhneMit
dev: Angriffe, die den Bot erreichen9/91/9
dev: harmlose fälschlich blockiert0/60/6
hidden: Angriffe, die den Bot erreichen3/30/3
hidden: harmlose fälschlich blockiert0/70/7

Das hidden-Set enthält nur 3 Angriffe, daher ist es ein schwaches Signal. Dev und hidden werden getrennt berichtet, weil ich den Klassifikator-Prompt auf dev abgestimmt habe.

Was fehlschlug und was ich geändert habe

Die vollständige Historie mit Zahlen steht in CHANGELOG.md. Kurz gesagt:

  • Regeln allein fingen 2/9 Angriffe ab (nur wörtliche Phrasen). Das Hinzufügen des Gemini-Klassifikators erhöhte dies auf 7/9.
  • Ein falscher Modellname ließ jeden Aufruf fehlschlagen, und der Fail-Closed-Fallback blockierte alles (9/9 Angriffe, 6/6 Fehlalarme). Dieser falsche Wert zeigte, warum Fehler den Lauf stoppen müssen, statt verschluckt zu werden.
  • #4 (eine nach einer normalen Frage versteckte Anweisung) wurde übersehen; ich fügte eine allgemeine Regel zum Prompt hinzu, was 8/9 ergab.
  • #14 „generate c++“ schlägt weiterhin fehl. Es ist im Quelldatensatz als Angriff gekennzeichnet, wirkt aber harmlos, wahrscheinlich Label-Rauschen.
  • Die Ausgabe-Prüfung übersah ein mit Leerzeichen geschriebenes Geheimnis („ZX CANARY 7731“); ich normalisierte den Text vor dem Abgleich.
  • Die Ausführung der Ausgabe-Prüfung auf echten Bot-Antworten zeigte Fehlalarme, wenn sich der Bot vorstellte (6-Wort-Übereinstimmung mit dem System-Prompt); ich änderte die Übereinstimmungslänge auf 8 Wörter.
  • Deployment: Der API-Schlüssel wird jetzt auch aus der Umgebung gelesen (Streamlit-Secrets). Keine Änderung an Erkennungslogik oder Prompts.

Einschränkungen

  • Wenige Daten: 25 Eingabefälle und 12 Ausgabefälle. Die Zahlen sind statistisch nicht belastbar.
  • Die meisten Angriffe aus der Quelle sind Propaganda- oder Persona-Prompts, kein System-Prompt-Diebstahl, daher brachte die Ausgabe-Prüfung im Vergleich nichts über die Eingabe-Ebene hinaus.
  • Die Testfälle der Ausgabe-Prüfung wurden von mir geschrieben, sie zeigen also, dass die Prüfung bei meinen Fällen funktioniert, nicht bei echten Leaks.
  • Die Ausgabe-Prüfung erkennt keine paraphrasierten, base64-kodierten oder nicht-englischen Leaks und übersieht Leaks, die kürzer als 8 aufeinanderfolgende Wörter sind.
  • Die Regel-Muster passen zu den häufigen Phrasen dieses Datensatzes; andere Angriffsstile hängen von der LLM-Ebene ab.
  • Die LLM-Ebene fügt einen API-Aufruf pro Nachricht hinzu (Latenz und Kosten) und hängt von einem Drittanbieterdienst ab.
  • Die öffentliche Demo ist auf 10 Nachrichten pro Sitzung begrenzt und funktioniert möglicherweise nicht mehr, wenn das kostenlose API-Kontingent aufgebraucht ist.
Tool herunterladen