Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
prompt-injection-firewall — Firewall LLM a due livelli che blocca gli input di prompt injection tramite regole regex più un classificatore Gemini, e intercetta le fughe di segreti o di system prompt nelle risposte del bot. | Kitploit
Strumenti/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
Strumenti DifensiviSicurezza WebApprendimento e FormazioneSicurezza dell'IARilevamento di Anomalie
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

Firewall LLM a due livelli che blocca gli input di prompt injection tramite regole regex più un classificatore Gemini, e intercetta le fughe di segreti o di system prompt nelle risposte del bot.

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Vedi Repository
76 giorni faNon ancora revisionato
Condividi

Prompt-Injection Firewall

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

Un firewall a due livelli per un bot di supporto basato su LLM: controlla ciò che gli utenti inviano in ingresso e ciò che il bot invia in uscita.

Problema

Gli utenti possono tentare di sovrascrivere le regole di un bot ("ignora le istruzioni precedenti"), cambiarne la persona o indurlo a rivelare il proprio system prompt o segreti. Questo progetto blocca tali input, intercetta le fughe di informazioni nelle risposte del bot e misura quanto bene funziona, inclusi i casi in cui fallisce.

Come funziona

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

Eseguilo

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

Modello usato: gemini-3.1-flash-lite. Il livello gratuito può restituire 503 quando è occupato; il codice attende e riprova. Non eseguire src\build_cases.py a meno che tu non voglia ricostruire data\cases.jsonl (lo sovrascrive; lo stesso seed produce gli stessi casi).

Dati

  • Casi di input: 25 campionati (seed 7) da deepset/prompt-injections (Apache-2.0): 12 attacchi, 13 benigni. Suddivisione: 15 dev, 10 hidden.
  • Casi di output: 12 scritti da me con l'assistenza dell'IA (8 dev, 4 hidden), inclusi leak nascosti tramite spaziatura e testo benigno che menziona "password"/"API key".
  • data/train.parquet è incluso nel repository (fonte: deepset/prompt-injections, Apache-2.0).
  • La suddivisione hidden è stata eseguita una sola volta, dopo l'ultima modifica alla logica di rilevamento e ai prompt.

Risultati

SetLivelloRisultato
devsolo regolerilevamento 2/9, falsi positivi 0/6
devregole + Gemini (finale)rilevamento 8/9, falsi positivi 0/6
devcontrollo output (finale)leak intercettati 4/4, falsi positivi 0/4
hiddenregole + Geminirilevamento 3/3, falsi positivi 0/7
hiddencontrollo outputleak intercettati 3/3, falsi positivi 0/1

Firewall vs senza firewall:

SenzaCon
dev: attacchi che raggiungono il bot9/91/9
dev: benigni bloccati erroneamente0/60/6
hidden: attacchi che raggiungono il bot3/30/3
hidden: benigni bloccati erroneamente0/70/7

Il set hidden contiene solo 3 attacchi, quindi è un segnale debole. Dev e hidden sono riportati separatamente perché ho ottimizzato il prompt del classificatore su dev.

Cosa non ha funzionato e cosa ho cambiato

La cronologia completa con i numeri è in CHANGELOG.md. In breve:

  • Le sole regole intercettavano 2/9 attacchi (solo frasi letterali). L'aggiunta del classificatore Gemini l'ha portato a 7/9.
  • Un nome di modello errato faceva fallire ogni chiamata e il fallback fail-closed bloccava tutto (9/9 attacchi, 6/6 falsi positivi). Quel punteggio fittizio ha mostrato perché gli errori devono interrompere l'esecuzione invece di essere ignorati.
  • #4 (un'istruzione nascosta dopo una domanda normale) è stato mancato; ho aggiunto una regola generale al prompt, ottenendo 8/9.
  • #14 "generate c++" continua a fallire. È etichettato come attacco nel dataset di origine ma sembra innocuo, probabilmente rumore nelle etichette.
  • Il controllo output ha mancato un segreto scritto con spazi ("ZX CANARY 7731"); ho normalizzato il testo prima del confronto.
  • Eseguendo il controllo output sulle risposte reali del bot sono emersi falsi allarmi quando il bot si presentava (corrispondenza di 6 parole con il system prompt); ho portato la lunghezza della corrispondenza a 8 parole.
  • Deploy: la chiave API ora viene letta anche dall'ambiente (Streamlit secrets). Nessuna modifica alla logica di rilevamento o ai prompt.

Limitazioni

  • Dati ridotti: 25 casi di input e 12 casi di output. I numeri non sono statisticamente solidi.
  • La maggior parte degli attacchi di origine sono prompt di propaganda o di impersonificazione, non furto del system prompt, quindi il controllo output non ha aggiunto nulla oltre al livello di input nel confronto.
  • I casi di test del controllo output sono stati scritti da me, quindi dimostrano che il controllo funziona sui miei casi, non su leak reali.
  • Il controllo output non intercetta leak parafrasati, codificati in base64 o in lingue diverse dall'inglese, e manca i leak più corti di 8 parole consecutive.
  • I pattern delle regole si adattano alle frasi comuni di questo dataset; altri stili di attacco dipendono dal livello LLM.
  • Il livello LLM aggiunge una chiamata API per messaggio (latenza e costo) e dipende da un servizio di terze parti.
  • La demo pubblica è limitata a 10 messaggi per sessione e potrebbe smettere di funzionare se la quota API gratuita si esaurisce.
Scarica lo strumento