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

Empêchez une clé live d'atteindre l'historique git.

L'IA colle une vraie clé « juste pour tester » et elle atterrit dans un commit — où elle vit pour toujours, même après avoir supprimé la ligne. SlopGrade attrape le secret en dur dans la PR, avant le merge, et n'émet que sa localisation — jamais la valeur.

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

Une clé de production, commitée dans le code.

Le secret est maintenant dans le repo et son historique git — une rotation est le seul vrai correctif, et chaque clone en a une copie. Le gate l'arrête à la PR pour qu'aucune rotation ne soit jamais nécessaire.

Ce que l'IA a livré

config/stripe.ts — un secret live dans le code
const stripe = new Stripe('sk_live_4eC39HqLyjWDarjtT1zdp7dc')

Ce qui quitte votre runner

CWE-798
{ "file": "config/stripe.ts", "line": 12, "kind": "hardcoded-secret" }

Même une détection de secret n'émet que {file, line, kind} — jamais la valeur du secret. 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

La valeur du secret est-elle envoyée quelque part ?

Non. Même sur une détection, seuls la localisation et le type sont émis — jamais la valeur. Lancez --print-payload pour voir les octets exacts. Le code ne sort que via le deep scan opt-in (heisen-slop), sur un repo payant.

Et les clés de test / placeholder ?

Les formes reconnues de secrets live (préfixes fournisseur, tokens à haute entropie) sont signalées ; les placeholders évidents et les clés de test sont calibrés hors. Elle ne bloque que ce que la pull request introduit ; sur 52 089 pull requests open source ordinaires, la porte statique en a bloqué 59 (0,11 %).