Los demás detectan la puerta abierta. FUGA prueba el bug que ninguno ve: reglas que exigen login pero no comprueban el dueño, y dejan que cualquier usuario acceda a los datos ajenos. Lo demostramos, lo reparamos y lo re-verificamos.
Open source · MIT · 23 tests en verde
{
"nombre": "Ana Ríos",
"cedula": "52.481.903",
"email": "ana.rios@correo.com",
"diagnostico": "Diabetes tipo 2",
"tipoSangre": "O+",
"numeroTarjeta": "4111 1111 1111 1111",
"cvv": "847",
"ownerId": "uid_ana_2847"
}
Una sola línea deja toda tu base de datos legible y escribible por cualquier persona en Internet:
match /{document=**} {
allow read, write: if true;
}
Historias clínicas, tarjetas de crédito, cédulas, mensajes privados… todo expuesto. Una de las causas #1 de fuga de datos en apps con Firebase.
Los linters existentes solo dicen “esto parece inseguro” — el desarrollador lo ignora porque no ve el impacto.
Cuatro pasos. Loop cerrado. Sin fisuras.
Análisis estático de tus reglas. Detecta patrones permisivos, asigna severidad y calcula un puntaje de riesgo 0–100.
Un atacante anónimo ejecuta el acceso real y captura el JSON exfiltrable. No opina: demuestra.
Genera reglas de mínimo privilegio. El LLM propone, el evaluador valida. Nada de reglas alucinadas.
Re-ataca con las reglas nuevas. Solo se acepta el fix si el atacante queda en DENY.
No detecta. Demuestra.
Pega tus reglas de Firestore y observa la fuga en tiempo real.
La regla exige estar autenticado — pero no comprueba que seas el dueño del dato. Cualquier usuario con cuenta lee o edita los registros de los demás. Es la clase de fallo que expuso apps de Supabase en masa (CVE-2025-48757), y no lo detecta la coincidencia de patrones: hay que ejecutar el ataque con dos identidades.
match /perfiles/{userId} {
allow read, write:
if request.auth != null;
}
Un atacante anónimo obtiene DENY. Un linter clásico dice «seguro» y sigue de largo.
FUGA genera el fix acotado al dueño y re-lanza el ataque para confirmar que Mallory ya no entra.
Todos detectan la puerta abierta. Solo FUGA prueba que un usuario puede leer los datos de otro.
Cuatro piezas que se combinan de forma no trivial.
Oráculo portátil en TypeScript. Decide ALLOW/DENY sin Java ni emulador. Corre en CI y en el navegador.
Infiere esquema y PII del código cliente. Distingue una fuga en /pagos de una en /logs.
Amazon Bedrock / Ollama / plantilla determinista. El LLM propone, el evaluador dispone. Sin alucinaciones.
Tools fuga_scan, fuga_prove, fuga_fix para Kiro, Claude y Cursor.
Amazon Bedrock como motor LLM en la nube para la reescritura inteligente de reglas. Desarrollado con el flujo spec-driven de Kiro: specs, steering, agente y hooks. Se integra como servidor MCP para agentes de código.
Ve tus datos filtrarse, aplica el fix y verifica que la fuga desapareció.