SlopGradeby Maxor Global LLC
Se connecterDémarrer
Gate injection · CWE-918

Bloquez le fetch qui atteint votre endpoint de métadonnées.

Une requête côté serveur vers une URL fournie par l'utilisateur peut pivoter vers 169.254.169.254 et voler des identifiants cloud. L'IA l'écrit dès qu'une fonctionnalité « récupère une URL donnée par l'utilisateur ». SlopGrade la bloque en CI avant le merge.

CWE-918
Catalogue des gates
0
file content leaves CI
0
false positives · 5,000+ repos
JS/TS · Python · Go · .NET
Langages
Le bug

Une URL contrôlée par l'utilisateur, fetchée côté serveur.

Rien ne valide l'hôte, donc un attaquant le pointe vers le service de métadonnées cloud ou un panneau d'admin interne. Une allowlist de la destination corrige ça — le gate bloque le fetch non-allowlisté.

Ce que l'IA a livré

api/proxy.ts — fetch vers une URL utilisateur
const r = await fetch(req.query.url) // hits 169.254.169.254

Ce qui quitte votre runner

CWE-918
{ "file": "api/proxy.ts", "line": 12, "kind": "ssrf" }

Chemin, ligne, classe. Le contenu du fichier ne sort jamais. Auditez-le avec --print-payload.

Comment le gate l'attrape

Détecte → adapte → vérifie. 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, 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, correctif vérifié en local

Le constat est posté sur sa ligne exacte. Quand un correctif existe, il est généré ET vérifié dans votre runner — proposé seulement une fois qu'un re-scan prouve la disparition.

Les questions des équipes

Et si l'URL est partiellement validée ?

Une allowlist de destination (schéma + hôte) est reconnue comme sûre. Un simple contrôle de protocole (startsWith https) ne l'est pas — il autorise encore les hôtes internes. Le gate est calibré sur cette distinction.

Quels langages ?

JavaScript/TypeScript et Python pour la classe complète ; Go et .NET couvrent les motifs fetch/client-HTTP cœur.