adi-shield v0.1.0: detección de inyección de prompt en 5 vectores
DEV Community

adi-shield v0.1.0: detección de inyección de prompt en 5 vectores

Sensor de defensa que marca datos no confiables y detecta instrucciones inyectadas antes de que el agente las ejecute, sin depender del modelo.

El problema

La inyección de prompt (CWE-1427) es el vector principal contra agentes: instrucciones embebidas en un email, una página web, un ticket o un repo que el agente trata como mandato propio. Detectarlo requiere marcar el origen de cada dato, no pedirle al LLM que se autodefenda.

Qué hace adi-shield

Expone InjectionShield y evaluate(). Cubre cinco vectores motivados por el paper que origina el proyecto:

Vector Origen del dato
email mensaje entrante
web contenido scrapeado
ticket issue/tarea externa
repo código de terceros
calendar invitación de agenda

Cuando el dato viene marcado como no confiable y contiene instrucciones de acción, evaluate devuelve un veredicto de inyección. Distingue eso de un reenvío legítimo ya autorizado por el usuario.

Cómo funciona

from adi_shield.shield import InjectionShield
shield = InjectionShield()
verdict = shield.evaluate(data="haz esto ahora", source="web", trusted=False)
print(verdict.injection)  # True/False, determinista

El bus de señales (adi_shield.bus.Signal) es la interfaz que trajectory-sentinel consume.

Resultados de la auditoría

  • 10 tests en adi-shield, todos verdes; ruff limpio.
  • Auditado en clone fresco (rama main, commit c125db4).

Limitaciones (honestamente)

Es detección de instrucciones embebidas en datos marcados, no un clasificador semántico profundo. El hook real delante de un agente (llamar evaluate() antes de cada tool-call) no está desplegado todavía; las pruebas usan fixtures.

Pruébalo

git clone --branch main https://github.com/amurlaniakea/adi-shield.git
cd adi-shield && python -m venv .venv && . .venv/bin/activate
pip install -e .
pytest tests/ -v

Links

Repo: https://github.com/amurlaniakea/adi-shield
Licencia: AGPL-3.0-or-later.
Autor: Pedro Sordo Martínez.

Comments

No comments yet. Start the discussion.