SlopGradeby Maxor Global LLC
Iniciar sesiónEmpezar
Gate de control de acceso · CWE-639 / BOLAPara equipos que envían código escrito por IA a SaaS multi-inquilino

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.

n.º 1
clase de brecha SaaS
0
contenido de archivo sale
< 30 s
por pull request
0
falsos positivos · 5.000+ repos
Confianza, probada — no prometida
Cliente open sourceMIT · audita cada línea antes de fijarla
Audita la huella--print-payload imprime los bytes exactos enviados
Fija el SHAcongela el código exacto; un tag puede re-apuntarse
El contenido se quedasolo se publica la huella estructural
Fail-openuna caída nunca rompe tu build
El bug

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ó

api/invoices.ts:44 — fuga entre inquilinos
// sin filtro de org — devuelve las filas de CUALQUIER inquilino const { data } = await db .from("invoices") .select("*") .eq("id", req.params.id) // ✗ falta .eq("org_id", ctx.orgId)

Lo que sale de tu runner

la huella estructural — no el código
{ "file": "api/invoices.ts", "line": 44, "kind": "cross-tenant-leak" }

Ruta, línea, clase. El contenido del archivo nunca sale. Audítalo con --print-payload.

Cómo lo detecta el gate

Detecta → adapta → verifica. Nada más sale.

01 · DETECTA

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.

02 · ADAPTA

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.

03 · VERIFICA

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ó.

vs un SAST genérico

La mayoría de los escáneres ingieren tu código. Este, nunca.

SAST genérico
SlopGrade
Tu código fuente
subido a su nube
nunca sale del runner
Detección de fugas entre inquilinos
rara vez — reglas de taint genéricas
una clase de gate dedicada
Veredicto
un score + una cola de triaje
pasa / bloquea determinista
Falsos positivos
notoriamente ruidoso
0 en 5.000+ repos reales
Precios

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.

1–4 repos
$24/repo/mes
facturado mensualmente
$24/mes en anual
Empezar prueba
5–10 repos
$15/repo/mes
facturado mensualmente
$15/mes en anual
Empezar prueba
11–20 repos
$11/repo/mes
facturado mensualmente
$11/mes en anual
Empezar prueba

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.

instalación en 2 min · sin tarjeta · el cliente es open source (MIT) · fail-open
FAQ

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.

Añádelo a un archivo de workflow. Detecta la fuga antes del merge.

# .github/workflows/slopgrade.yml jobs: slopgrade: permissions: contents: read id-token: write # zero secrets — GitHub proves your repo via OIDC steps: - uses: actions/checkout@v4 - uses: maxor-tech/slopgrade-firewall@<sha> # pin the SHA (a tag can be re-pointed) with: firewall-mode: "gate" # blocks a hard leak; free on public repos