Bloquez les fuites de données inter-locataires
avant qu'elles n'atteignent main.
Une requête à portée d'organisation sans filtre d'org est la brèche SaaS la plus courante — et l'IA l'écrit sans cesse, parce que le test du chemin heureux passe quand même. SlopGrade attrape le .eq(org_id) manquant en CI, sur chaque pull request, avant le merge — déterministe, et seule une empreinte {fichier · ligne · classe} quitte votre runner.
Un filtre manquant, et le locataire A lit les données du locataire B.
La requête renvoie des lignes filtrées par id mais jamais par org_id. Tous les tests passent — les données de seed n'ont qu'une seule org. En production, n'importe quel utilisateur authentifié peut lire les factures de n'importe quel locataire en changeant un id. L'IA écrit ça sans cesse ; un relecteur humain glisse dessus. Pas le gate.
Ce que l'IA a livré
Ce qui quitte votre runner
Chemin, ligne, classe. Le contenu du fichier ne sort jamais. Auditez-le avec --print-payload.
Détecte → adapte → vérifie. Rien d'autre ne sort.
Dans votre runner, sur le diff
Le client open source parcourt la pull request, résout chaque accès à une table à portée d'org, et signale toute requête qui lit par id sans prédicat d'org — dataflow intra-fonction, aucun code ne quitte la machine.
Verdict serveur + gate
L'empreinte est classée côté serveur. Une fuite dure bloque le check sur un repo privé payant ; les repos publics sont gatés gratuitement. Le paywall échoue en mode ouvert — jamais un build bloqué par erreur.
Correctif calculé dans le runner
Le constat est posté inline sur la ligne 44. Le correctif automatique — l'ajout du filtre d'org manquant — est généré et vérifié localement : il n'est proposé qu'une fois qu'un re-scan prouve que la fuite a disparu.
La plupart des scanners ingèrent votre source. Celui-ci, jamais.
Bloquez les fuites sur les repos privés. Par repo, jamais par siège.
Utilisateurs illimités. Le prix par repo baisse avec le volume. Le conseil est gratuit pour toujours, et le gate bloquant est gratuit sur les repos publics. Essai gratuit de 14 jours — sans carte.
Les repos publics sont gatés gratuitement, pour toujours. Le blocage des repos privés démarre à $11/repo/mois · essai 14 jours, sans carte.
Prêt à bloquer la prochaine fuite d'isolation locataire avant le merge ?
Ajoutez-le à un seul fichier de workflow. La première pull request de code IA que vous scannez vous dira ce qu'elle allait laisser passer.
Fuites inter-locataires — les questions qu'une équipe sécurité pose.
Qu'est-ce qu'une fuite de données inter-locataires ?
Dans un SaaS multi-locataires, chaque ligne appartient à une organisation. Une fuite inter-locataires est une requête qui filtre par id d'enregistrement mais pas par l'org de l'appelant — un utilisateur authentifié du locataire A peut donc lire les données du locataire B en changeant un id. On l'appelle aussi BOLA / IDOR (CWE-639), et c'est la vulnérabilité SaaS sérieuse la plus courante.
Pourquoi les tests la ratent ?
Parce que le test du chemin heureux ne seed qu'une seule org, donc le filtre d'org manquant renvoie quand même la « bonne » ligne. Le bug n'apparaît qu'avec de vraies données multi-locataires en production. Un gate CI déterministe qui lit la forme de la requête l'attrape avant qu'elle ne soit livrée.
Mon code source quitte-t-il le runner ?
Non. Le client lit les fichiers en local et ne publie qu'une empreinte structurelle — chemins de fichiers plus {file, line, kind}. Lancez --print-payload pour auditer les octets exacts envoyés. Le contenu du fichier ne quitte jamais votre CI.
Va-t-il casser mon build avec des faux positifs ?
Démarrez en mode advisory — voyez chaque constat, ne bloquez rien — puis passez en gate quand vous avez confiance. Calibré à 0 faux positif sur 5 000+ repos réels, et fail-open par défaut : une panne ne casse jamais un build.
Quels langages et frameworks ?
JavaScript/TypeScript et Python aujourd'hui (Go et .NET couvrent le sous-ensemble cœur), à travers les query builders et ORM courants. Le gate inter-locataires est l'une des 10 classes gratuites du client open source.