SlopGradeby Maxor Global LLC
Se connecterDémarrer l'essai gratuit de 14 jours
Gate injection · CWE-89

Attrapez l'injection SQL avant qu'elle n'atteigne main.

Le SQL concaténé est la brèche la plus ancienne du métier — et l'IA l'écrit plus vite que quiconque ne peut la relire. SlopGrade lit chaque PR sur votre propre runner et bloque la requête qui construit du SQL à partir de l'entrée utilisateur, avant le merge.

CWE-89
Catalogue des gates
0
lignes de code stockées
MIT
client open source — lisez chaque ligne
JS/TS · Python · Go · .NET
Langages
Le bug

L'entrée utilisateur, concaténée dans une requête.

L'id de la requête est collé dans la chaîne SQL. Un id forgé comme 1 OR 1=1 vide la table ; une sous-requête exfiltre une autre table. Les requêtes paramétrées corrigent ça — le gate garantit que la version non paramétrée ne merge jamais.

Ce que l'IA a livré

api/users.ts — entrée utilisateur dans la chaîne SQL
db.query('SELECT * FROM users WHERE id = ' + req.params.id)

Ce qui quitte votre runner

CWE-89
{ "file": "api/users.ts", "line": 12, "kind": "sql-injection" }

Chemin, ligne, classe. Sur un repo privé, le contenu du fichier reste sur le runner par défaut ; le deep scan (heisen-slop) est une option payante. Auditez-le avec --print-payload.

Comment le gate l'attrape

Détecte → adapte → vérifie. Par défaut, rien d'autre ne sort.

01 · DÉTECTE

Dans votre runner, sur le diff

Le client open source parcourt la pull request et signale le motif en local — dataflow intra-fonction. Par défaut, aucun code ne quitte la machine.

→
02 · ADAPTE

Verdict serveur + gate

L'empreinte structurelle est classée côté serveur. Un hit dur bloque le check sur un repo privé payant ; les repos publics sont gatés gratuitement ; le paywall échoue en mode ouvert.

→
03 · VÉRIFIE

Posté inline, re-vérifié au push

Le constat est posté sur sa ligne exacte. Pour les quelques classes qui ont une réécriture sûre et déterministe (vérification TLS coupée, debug actif, yaml.load…), un correctif est généré ET vérifié dans votre runner ; sinon vous corrigez, et le push suivant re-vérifie.

→
Les questions des équipes

Qu'est-ce qui compte comme injection SQL ici ?

Toute requête construite en concaténant ou interpolant une entrée non fiable dans la chaîne SQL, en JS/TS, Python, Go ou .NET — à travers les drivers courants et les échappatoires raw-query des ORM. Les requêtes paramétrées/préparées passent.

Va-t-il signaler les requêtes paramétrées sûres ?

Les placeholders ($1, ?, :name) et les query builders qui paramètrent sont reconnus comme sûrs. La porte ne bloque que ce que la pull request introduit ; sur 52 089 pull requests open source ordinaires, elle en a bloqué 59 (0,11 %). Démarrez en advisory pour vérifier, puis passez en bloquant.