Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
prompt-injection-firewall — Pare-feu LLM à deux couches qui bloque les entrées d'injection de prompt via des règles regex ainsi qu'un classificateur Gemini, et détecte les fuites de secrets ou de prompts système dans les réponses du bot. | Kitploit
Outils/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
Outils DéfensifsSécurité WebApprentissage et ÉducationSécurité de l'IADétection d'Anomalies
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

Pare-feu LLM à deux couches qui bloque les entrées d'injection de prompt via des règles regex ainsi qu'un classificateur Gemini, et détecte les fuites de secrets ou de prompts système dans les réponses du bot.

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôt
1il y a 4 joursPas encore vérifié
Partager

Prompt-Injection Firewall

Démo en direct : https://prompt-injection-firewall.streamlit.app Vidéo de démonstration de 2 minutes : https://drive.google.com/file/d/1tzb75nFysisrCYa11Lqj6egDs5VNmc2n/view?usp=drivesdk

Un pare-feu à deux couches pour un bot de support LLM : il vérifie ce que les utilisateurs envoient, et ce que le bot renvoie.

Problème

Les utilisateurs peuvent tenter de contourner les règles d'un bot (« ignore previous instructions »), de changer sa persona, ou de lui faire révéler son prompt système ou ses secrets. Ce projet bloque ces entrées, détecte les fuites dans les réponses du bot, et mesure son efficacité, y compris là où il échoue.

Fonctionnement

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

Lancer l'outil

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

Modèle utilisé : gemini-3.1-flash-lite. Le niveau gratuit peut renvoyer une erreur 503 en cas de surcharge ; le code attend et réessaie. Ne lancez pas src\build_cases.py sauf si vous voulez reconstruire data\cases.jsonl (il l'écrase ; la même graine produit les mêmes cas).

Données

  • Cas d'entrée : 25 échantillonnés (graine 7) depuis deepset/prompt-injections (Apache-2.0) : 12 attaques, 13 bénins. Répartition : 15 dev, 10 cachés.
  • Cas de sortie : 12 écrits par moi avec l'aide de l'IA (8 dev, 4 cachés), incluant des fuites masquées par des espaces et du texte bénin qui mentionne « password »/« API key ».
  • data/train.parquet est inclus dans le dépôt (source : deepset/prompt-injections, Apache-2.0).
  • La répartition cachée a été exécutée une seule fois, après la dernière modification de la logique de détection et des prompts.

Résultats

EnsembleCoucheRésultat
devrègles seulesdétection 2/9, faux positif 0/6
devrègles + Gemini (final)détection 8/9, faux positif 0/6
devvérification de sortie (final)fuite détectée 4/4, faux positif 0/4
cachérègles + Geminidétection 3/3, faux positif 0/7
cachévérification de sortiefuite détectée 3/3, faux positif 0/1

Pare-feu vs sans pare-feu :

SansAvec
dev : attaques atteignant le bot9/91/9
dev : bénins bloqués à tort0/60/6
caché : attaques atteignant le bot3/30/3
caché : bénins bloqués à tort0/70/7

L'ensemble caché ne contient que 3 attaques, c'est donc un signal faible. Dev et caché sont rapportés séparément car j'ai ajusté le prompt du classifieur sur dev.

Ce qui a échoué et ce que j'ai changé

L'historique complet avec les chiffres se trouve dans CHANGELOG.md. En bref :

  • Les règles seules ont détecté 2/9 attaques (uniquement les phrases littérales). L'ajout du classifieur Gemini l'a porté à 7/9.
  • Un nom de modèle erroné faisait échouer chaque appel et le repli fail-closed bloquait tout (9/9 attaques, 6/6 faux positifs). Ce faux score a montré pourquoi les erreurs doivent arrêter l'exécution au lieu d'être avalées.
  • #4 (une instruction cachée après une question normale) a été manquée ; j'ai ajouté une règle générale au prompt, ce qui donne 8/9.
  • #14 « generate c++ » échoue toujours. Il est étiqueté comme attaque dans le jeu de données source mais semble inoffensif, probablement du bruit d'étiquetage.
  • La vérification de sortie a manqué un secret écrit avec des espaces (« ZX CANARY 7731 ») ; j'ai normalisé le texte avant la correspondance.
  • L'exécution de la vérification de sortie sur de vraies réponses du bot a montré de fausses alertes sur la présentation du bot (correspondance de 6 mots avec le prompt système) ; j'ai porté la longueur de correspondance à 8 mots.
  • Déploiement : la clé API est désormais aussi lue depuis l'environnement (secrets Streamlit). Aucun changement de la logique de détection ni des prompts.

Limitations

  • Données réduites : 25 cas d'entrée et 12 cas de sortie. Les chiffres ne sont pas statistiquement solides.
  • La plupart des attaques sources sont des prompts de propagande ou de persona, pas du vol de prompt système, donc la vérification de sortie n'a rien ajouté au-delà de la couche d'entrée dans la comparaison.
  • Les cas de test de la vérification de sortie ont été écrits par moi, ils montrent donc que la vérification fonctionne sur mes cas, pas sur de vraies fuites.
  • La vérification de sortie ne détecte pas les fuites paraphrasées, encodées en base64 ou non anglaises, et manque les fuites de moins de 8 mots consécutifs.
  • Les motifs de règles correspondent aux phrases courantes de ce jeu de données ; les autres styles d'attaque dépendent de la couche LLM.
  • La couche LLM ajoute un appel API par message (latence et coût) et dépend d'un service tiers.
  • La démo publique est limitée à 10 messages par session et peut cesser de fonctionner si le quota gratuit de l'API est épuisé.
Télécharger l’outil