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

Empêchez ../ d'échapper à votre répertoire de fichiers.

Quand l'entrée utilisateur est jointe à un chemin de fichier sans normalisation, un nom comme ../../etc/passwd échappe au répertoire prévu. L'IA l'écrit dans toute fonctionnalité « servir/télécharger un fichier ». SlopGrade la bloque en CI, avant le merge.

CWE-22
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, jointe dans un chemin de fichier.

Il n'y a pas de résolution-et-vérification que le chemin final reste dans le répertoire de base, donc les segments ../ sortent. Résoudre et vérifier le préfixe corrige ça — le gate bloque la jointure non vérifiée.

Ce que l'IA a livré

api/files.ts — entrée utilisateur dans le chemin
fs.readFile('./files/' + req.params.name) // ../ escapes

Ce qui quitte votre runner

CWE-22
{ "file": "api/files.ts", "line": 12, "kind": "path-traversal" }

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 rend une jointure de chemin sûre ?

Résoudre le chemin et vérifier qu'il commence toujours par le répertoire de base prévu (ou utiliser une map fixe de noms autorisés). Le gate reconnaît ce contrôle et le laisse passer ; la jointure nue est signalée.

Couvre-t-il aussi les uploads ?

Le côté écriture (zip-slip, chemins d'upload non restreints) est couvert par des classes de gate adjacentes dans le firewall complet ; la classe de cette page est la traversée en lecture/service. Voir le catalogue complet pour le reste.