Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
prompt-injection-firewall — Firewall LLM de dos capas que bloquea entradas de inyección de prompts mediante reglas regex más un clasificador Gemini, y detecta fugas de secretos o de system-prompt en las respuestas del bot. | Kitploit
Herramientas/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
Herramientas DefensivasSeguridad WebAprendizaje y EducaciónSeguridad de IADetección de Anomalías
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

Firewall LLM de dos capas que bloquea entradas de inyección de prompts mediante reglas regex más un clasificador Gemini, y detecta fugas de secretos o de system-prompt en las respuestas del bot.

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
1hace 4 díasAún no revisado
Compartir

Firewall contra inyección de prompts

Demo en vivo: https://prompt-injection-firewall.streamlit.app Video de demostración de 2 minutos: https://drive.google.com/file/d/1tzb75nFysisrCYa11Lqj6egDs5VNmc2n/view?usp=drivesdk

Un firewall de dos capas para un bot de soporte basado en LLM: comprueba lo que los usuarios envían y lo que el bot devuelve.

Problema

Los usuarios pueden intentar anular las reglas de un bot ("ignora las instrucciones anteriores"), cambiar su personalidad o hacer que revele su prompt de sistema o secretos. Este proyecto bloquea dichas entradas, detecta filtraciones en las respuestas del bot y mide su eficacia, incluidos los casos en los que falla.

Cómo funciona

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

Ejecútalo

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

Modelo usado: gemini-3.1-flash-lite. El nivel gratuito puede devolver 503 cuando está ocupado; el código espera y reintenta. No ejecutes src\build_cases.py a menos que quieras reconstruir data\cases.jsonl (lo sobrescribe; la misma semilla genera los mismos casos).

Datos

  • Casos de entrada: 25 muestreados (semilla 7) de deepset/prompt-injections (Apache-2.0): 12 ataques, 13 benignos. División: 15 dev, 10 ocultos.
  • Casos de salida: 12 escritos por mí con asistencia de IA (8 dev, 4 ocultos), incluidos filtraciones ocultas mediante espaciado y texto benigno que menciona "password"/"API key".
  • data/train.parquet está incluido en el repositorio (fuente: deepset/prompt-injections, Apache-2.0).
  • La división oculta se ejecutó una vez, tras el último cambio en la lógica de detección y en los prompts.

Resultados

ConjuntoCapaResultado
devsolo reglasdetección 2/9, falso positivo 0/6
devreglas + Gemini (final)detección 8/9, falso positivo 0/6
devcomprobación de salida (final)filtración detectada 4/4, falso positivo 0/4
ocultoreglas + Geminidetección 3/3, falso positivo 0/7
ocultocomprobación de salidafiltración detectada 3/3, falso positivo 0/1

Firewall frente a sin firewall:

SinCon
dev: ataques que llegan al bot9/91/9
dev: benignos bloqueados erróneamente0/60/6
oculto: ataques que llegan al bot3/30/3
oculto: benignos bloqueados erróneamente0/70/7

El conjunto oculto solo tiene 3 ataques, por lo que es una señal débil. Dev y oculto se reportan por separado porque ajusté el prompt del clasificador con dev.

Qué falló y qué cambié

El historial completo con cifras está en CHANGELOG.md. En resumen:

  • Las reglas por sí solas detectaron 2/9 ataques (solo frases literales). Añadir el clasificador Gemini lo elevó a 7/9.
  • Un nombre de modelo incorrecto hizo fallar todas las llamadas y el fallback de cierre por fallo bloqueó todo (9/9 ataques, 6/6 falsos positivos). Esa puntuación falsa mostró por qué los errores deben detener la ejecución en lugar de ser ignorados.
  • El #4 (una instrucción oculta tras una pregunta normal) no se detectó; añadí una regla general al prompt, dando 8/9.
  • El #14 "generate c++" sigue fallando. Está etiquetado como ataque en el conjunto de datos de origen pero parece inofensivo, probablemente ruido en las etiquetas.
  • La comprobación de salida no detectó un secreto escrito con espacios ("ZX CANARY 7731"); normalicé el texto antes de comparar.
  • Ejecutar la comprobación de salida sobre respuestas reales del bot mostró falsas alarmas cuando el bot se presentaba (coincidencia de 6 palabras con el prompt del sistema); cambié la longitud de coincidencia a 8 palabras.
  • Despliegue: la clave de API ahora también se lee del entorno (secretos de Streamlit). Sin cambios en la lógica de detección ni en los prompts.

Limitaciones

  • Pocos datos: 25 casos de entrada y 12 casos de salida. Las cifras no son estadísticamente sólidas.
  • La mayoría de los ataques de origen son prompts de propaganda o de personaje, no robo del prompt del sistema, por lo que la comprobación de salida no aportó nada más allá de la capa de entrada en la comparación.
  • Los casos de prueba de la comprobación de salida los escribí yo, por lo que demuestran que la comprobación funciona con mis casos, no con filtraciones reales.
  • La comprobación de salida no detecta filtraciones parafraseadas, codificadas en base64 o en otros idiomas, y no detecta filtraciones de menos de 8 palabras consecutivas.
  • Los patrones de reglas se ajustan a las frases comunes de este conjunto de datos; otros estilos de ataque dependen de la capa LLM.
  • La capa LLM añade una llamada a la API por mensaje (latencia y coste) y depende de un servicio de terceros.
  • La demo pública está limitada a 10 mensajes por sesión y puede dejar de funcionar si se agota la cuota gratuita de la API.
Descargar herramienta