Pruebas,
no suposiciones.
Sigue el dato.
La prueba es la única señal de seguridad que sobrevive a cada reejecución. Las regex adivinan a partir de patrones; los revisores LLM adivinan a partir del contexto, cobran por PR y envían tu código fuera. heisen-slop sigue cada valor de la petición a través de tu código con análisis de flujo determinista, y cuando no puede probar un camino se abstiene y lo dice — en vez de una adivinanza generativa. Un bloqueo es una ruta probada desde la entrada del atacante hasta un sink peligroso — nunca un patrón que casualmente coincidió.
Un motor de flujo, no un escáner de patrones.
El motor lee tu código como lo haría un intérprete: sigue cada valor desde donde entra — un parámetro de petición, un campo de formulario, un argumento CLI — hasta donde llega: un shell, una consulta, una plantilla, un deserializador. Solo levanta un hallazgo si puede probar el camino, y solo da por limpio el código si puede probar que el valor es una constante. Todo lo que no puede probar, se abstiene — ni bloqueo, ni falso verde.
29 clases en 6 lenguajes — 127 detectores.
Cada ✓ es un detector de flujo de datos activo que sigue la entrada de la petición hasta un sink peligroso en ese lenguaje. Es la capa deep scan del Firewall; el catálogo Firewall de 125 clases incluye además gates de patrones que la GitHub Action ejecuta en tu runner.
✓ = un detector activo para ese lenguaje. — = no cubierto en ese lenguaje hoy. El deep scan alojado deja fuera el límite de confianza: en aplicaciones reales era sobre todo ruido.
Conoce tu framework, tu base de datos y tu cliente HTTP.
Un motor de taint vale lo que valen las fuentes y los sinks que conoce. Estos son los modelados hoy — todo lo demás se sigue como código normal, y una llamada desconocida hace que el motor se abstenga en vez de adivinar.
Un solo motor, al que llegas con las herramientas que ya usas.
Solo GitHub por ahora: GitLab y Bitbucket no están soportados por el Firewall.
Probar → abstenerse → decidir. Nunca se adivina nada.
Análisis de flujo determinista
El motor interpreta cada archivo de forma abstracta y rastrea el taint de cada fuente a cada sink. Una ruta probada es un BLOQUEO (p = 0,94); un valor probado constante es LIMPIO (p = 0,02). 0 $, auditable e idéntico en cada ejecución.
Se abstiene en la banda ambigua
Cuando un sink peligroso se encuentra con una fuente de petición pero no se puede probar ningún camino, el motor se abstiene: no devuelve veredicto para ese caso. Nunca lo convierte en un bloqueo y nunca lo cuenta como limpio.
Un veredicto auditable
La evidencia lleva el sink y el flujo — nunca tu código fuente. En SlopGrade Firewall el deep scan es opt-in en repos privados e informativo por defecto; bloquear con sus hallazgos es un ajuste aparte. Hoy solo Python puede devolver un CLEAN probado; los demás lenguajes bloquean o se abstienen.
El eje que los actores establecidos no pueden seguir.
vs. escáneres regex
Un regex se dispara con texto que parece peligroso. El motor se dispara con datos que fluyen de forma probada a un sink — una consulta parametrizada segura con las mismas palabras clave queda limpia.
vs. revisores LLM
Un LLM puede responder distinto al re-ejecutar, cuesta dinero por PR y envía tu código a un tercero. El camino probado es determinista — mismo código, mismo veredicto — y no hace ninguna llamada a modelos. Cuando no se puede probar un camino, el motor se abstiene en vez de adivinar, y el deep scan alojado nunca guarda una línea de tu código.
vs. SaaS en la nube
Los escáneres alojados en la nube copian tu repo fuera. En un repo privado, la ejecución Firewall por defecto solo envía una huella estructural. El deep scan se analiza en memoria y se descarta. Ejecutar el motor en tu infraestructura se prepara bajo un acuerdo Enterprise, bajo petición.
Cada cifra aquí sale de una ejecución — incluidas las débiles.
Lee la primera cifra junto con la última: el motor es preciso cuando decide, y a menudo se abstiene. En código CVE real (avisos de GitHub, lote nunca visto), los bloqueos aciertan al menos 3 de cada 4 (25 de 32, un mínimo: todo bloqueo en el archivo corregido cuenta como erróneo); sobre 52 089 pull requests open source ordinarios bloqueó 245, 46 de ellos por una falla real — por eso el deep scan es informativo por defecto y bloquear es un opt-in aparte. El paquete de reglas para bibliotecas de la puerta de CI se califica igual: una revisión del repositorio completo sobre 240 de sus líneas MEDIUM halló cerca de 1 de cada 4 verdaderas (25,0 %, 18,0–32,9), no el 32,5 % de las etiquetas sobre fragmentos. Solo los desacuerdos tuvieron una segunda lectura y no se ejecutó nada: el paquete sigue siendo informativo y nunca bloquea.
Lo que construimos a continuación.
Respuestas directas.
¿Sigue el dato entre archivos?
Sí en Python (imports, 3 niveles), JavaScript/TypeScript (imports relativos), Ruby (require_relative) y Go (el paquete). Todavía no para los alias de ruta de TypeScript ni las llamadas Java a otra clase.
¿Mi código sale de mi infraestructura?
No por defecto: la ejecución del Firewall envía una huella estructural — rutas de archivo, {file, line, kind} y los nombres de tablas y columnas que necesita el control cross-tenant, nunca el contenido de los archivos. El deep scan (heisen-slop) está activo por defecto en repos públicos y es una opción de pago en repos privados — envía al motor como máximo 80 archivos que marcó un detector local o que contienen una llamada peligrosa; el motor los analiza en memoria y los descarta. Cuando no se puede probar un camino, el motor se abstiene.
¿En qué se diferencia de Snyk, Semgrep o CodeQL?
Semgrep y Snyk Code parten de reglas de patrones; CodeQL hace dataflow pero exige escribir consultas y no trae un gate de aislamiento tenant. El motor solo bloquea un camino probado y se abstiene cuando no puede probarlo. La contrapartida es el recall: en los propios tests de reglas de Semgrep, Semgrep encuentra más.
¿Soportan GitLab o Bitbucket?
Todavía no para el Firewall — solo GitHub (Action, checks, OIDC).
Pon pruebas en tu pipeline.
Añade el deep scan (heisen-slop) a tus PR — gratis en repos públicos, opt-in en repos privados, determinista, informativo por defecto.
¿Regulado o air-gap? Hablemos de ejecutar el motor en tu infraestructura →