Evita que ../ escape de tu directorio de archivos.
Cuando la entrada de usuario se une a una ruta de archivo sin normalización, un nombre como ../../etc/passwd escapa del directorio previsto. La IA lo escribe en cualquier función de «servir/descargar un archivo». SlopGrade lo bloquea en CI, antes del merge.
Entrada de usuario, unida directo en una ruta de archivo.
No hay una resolución-y-verificación de que la ruta final se quede dentro del directorio base, así que los segmentos ../ salen. Resolver y verificar el prefijo lo arregla — el gate bloquea la unión sin verificar.
Lo que la IA envió
Lo que sale de tu runner
Ruta, línea, clase. El contenido del archivo nunca sale. Audítalo con --print-payload.
Detecta → adapta → verifica. Nada más sale.
En tu runner, sobre el diff
El cliente open source recorre la pull request y marca el patrón en local — dataflow intra-función, ningún código sale de la máquina.
Veredicto del servidor + gate
La huella estructural se clasifica en el servidor. Un hit duro bloquea el check en un repo privado de pago; los repos públicos se gatean gratis; el paywall falla en abierto.
Publicado inline, corrección verificada en local
El hallazgo se publica en su línea exacta. Cuando existe una corrección, se genera Y se verifica en tu runner — solo se ofrece cuando un re-escaneo prueba que desapareció.
¿Qué hace segura una unión de ruta?
Resolver la ruta y verificar que sigue empezando por el directorio base previsto (o usar un mapa fijo de nombres permitidos). El gate reconoce esa verificación y la deja pasar; la unión desnuda se marca.
¿Cubre también las subidas?
El lado escritura (zip-slip, rutas de subida sin restringir) lo cubren clases de gate adyacentes en el firewall completo; la clase de esta página es la traversía en lectura/servicio. Ver el catálogo completo para el resto.