Bloquea fugas de datos entre inquilinos
antes de que lleguen a main.
Una consulta con alcance de organización sin filtro de org es la brecha de SaaS más común — y la IA la escribe constantemente, porque la prueba del camino feliz igual pasa. SlopGrade detecta el .eq(org_id) faltante en CI, en cada pull request, antes del merge — determinista, y solo una huella {archivo · línea · clase} sale de tu runner.
Un filtro que falta, y el inquilino A lee los datos del inquilino B.
La consulta devuelve filas filtradas por id pero nunca por org_id. Todas las pruebas pasan — los datos de seed tienen una sola org. En producción, cualquier usuario autenticado puede leer las facturas de cualquier inquilino cambiando un id. La IA escribe esto constantemente; un revisor humano lo pasa por alto. El gate no.
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, resuelve cada acceso a tabla con alcance de org, y marca cualquier consulta que lea por id sin un predicado de org — dataflow intra-función, ningún código sale de la máquina.
Veredicto del servidor + gate
La huella se clasifica en el servidor. Una fuga dura bloquea el check en un repo privado de pago; los repos públicos se gatean gratis. El paywall falla en modo abierto — nunca un build bloqueado por error.
Corrección calculada en el runner
El hallazgo se publica inline en la línea 44. La corrección automática — añadir el filtro de org que falta — se genera y verifica localmente: solo se ofrece cuando un re-escaneo prueba que la fuga desapareció.
La mayoría de los escáneres ingieren tu código. Este, nunca.
Bloquea fugas en repos privados. Por repo, nunca por asiento.
Usuarios ilimitados. El precio por repo baja con el volumen. El modo advisory es gratis para siempre, y el gate bloqueante es gratis en repos públicos. Prueba gratis de 14 días — sin tarjeta.
Los repos públicos se gatean gratis, para siempre. El bloqueo de repos privados empieza en $11/repo/mes · prueba de 14 días, sin tarjeta.
¿Listo para bloquear la próxima fuga de aislamiento de inquilino antes del merge?
Añádelo a un solo archivo de workflow. La primera pull request de código IA que escanees te dirá lo que estaba a punto de dejar pasar.
Fugas entre inquilinos — las preguntas que hace un equipo de seguridad.
¿Qué es una fuga de datos entre inquilinos?
En un SaaS multi-inquilino, cada fila pertenece a una organización. Una fuga entre inquilinos es una consulta que filtra por id de registro pero no por la org de quien llama — así, un usuario autenticado del inquilino A puede leer los datos del inquilino B cambiando un id. También se llama BOLA / IDOR (CWE-639) y es la vulnerabilidad SaaS seria más común.
¿Por qué las pruebas la pasan por alto?
Porque la prueba del camino feliz solo hace seed de una org, así que el filtro de org que falta igual devuelve la fila «correcta». El bug solo aparece con datos multi-inquilino reales en producción. Un gate de CI determinista que lee la forma de la consulta lo detecta antes de que se envíe.
¿Mi código fuente sale del runner?
No. El cliente lee los archivos localmente y solo publica una huella estructural — rutas de archivo más {file, line, kind}. Ejecuta --print-payload para auditar los bytes exactos enviados. El contenido del archivo nunca sale de tu CI.
¿Romperá mi build con falsos positivos?
Empieza en modo advisory — ve cada hallazgo, no bloquees nada — luego cambia a gate cuando confíes. Calibrado a 0 falsos positivos en 5.000+ repos reales, y fail-open por defecto: una caída nunca rompe un build.
¿Qué lenguajes y frameworks?
JavaScript/TypeScript y Python hoy (Go y .NET cubren el subconjunto central), a través de los query builders y ORM comunes. El gate entre inquilinos es una de las 10 clases gratuitas del cliente open source.