La preuve,
pas la supposition.
Suivez la donnée.
La preuve est le seul signal de sécurité qui survit à chaque nouvelle exécution. Les regex devinent à partir de motifs ; les reviewers LLM devinent à partir du contexte, facturent par PR et envoient votre code ailleurs. heisen-slop suit chaque valeur de requête à travers votre code par analyse de flux déterministe, et quand il ne peut pas prouver un chemin, il s'abstient et le dit — au lieu d'une devinette générative. Un blocage est un chemin prouvé de l'entrée attaquant vers un sink dangereux — jamais un motif qui a simplement correspondu.
Un moteur de flux, pas un scanner de motifs.
Le moteur lit votre code comme le ferait un interpréteur : il suit chaque valeur depuis son point d'entrée — un paramètre de requête, un champ de formulaire, un argument CLI — jusqu'à son point d'arrivée : un shell, une requête, un template, un désérialiseur. Il ne lève un finding que s'il peut prouver le chemin, et ne blanchit du code que s'il peut prouver que la valeur est une constante. Tout ce qu'il ne peut pas prouver, il s'abstient — ni blocage, ni faux vert.
29 classes sur 6 langages — 127 détecteurs.
Chaque ✓ est un détecteur de flux de données actif qui suit l'entrée de la requête jusqu'à un sink dangereux dans ce langage. C'est la couche deep scan du Firewall ; le catalogue Firewall de 125 classes comprend aussi des gates de motifs que la GitHub Action exécute sur votre runner.
✓ = un détecteur actif pour ce langage. — = non couvert dans ce langage aujourd'hui. Le deep scan hébergé laisse de côté la frontière de confiance : sur de vraies applications, c'était surtout du bruit.
Il connaît votre framework, votre base de données et votre client HTTP.
Un moteur de taint ne vaut que par les sources et les sinks qu'il connaît. Voici ceux modélisés aujourd'hui — le reste est suivi comme du code ordinaire, et un appel inconnu fait s'abstenir le moteur plutôt que deviner.
Un seul moteur, atteint par les outils que vous utilisez déjà.
GitHub uniquement pour l'instant : GitLab et Bitbucket ne sont pas pris en charge par le Firewall.
Prouver → s'abstenir → décider. Rien n'est jamais deviné.
Analyse de flux déterministe
Le moteur interprète chaque fichier de façon abstraite et suit le taint de chaque source vers chaque sink. Un chemin prouvé est un BLOCAGE (p = 0,94) ; une valeur prouvée constante est PROPRE (p = 0,02). 0 $, auditable, et identique à chaque exécution.
S'abstient sur la bande ambiguë
Quand un sink dangereux rencontre une source de requête sans qu'aucun chemin ne soit prouvable, le moteur s'abstient : il ne rend aucun verdict pour ce cas. Il n'en fait jamais un blocage, et ne le compte jamais comme propre.
Un verdict auditable
La preuve porte le sink et le flux — jamais votre code source. Sur SlopGrade Firewall, le deep scan est opt-in sur les repos privés et informatif par défaut ; bloquer sur ses findings est un réglage séparé. Seul Python peut rendre un CLEAN prouvé aujourd'hui ; les autres langages bloquent ou s'abstiennent.
L'axe que les acteurs en place ne peuvent pas suivre.
vs. scanners regex
Un regex se déclenche sur du texte qui a l'air dangereux. Le moteur se déclenche sur une donnée qui coule de façon prouvée vers un sink — une requête paramétrée sûre avec les mêmes mots-clés reste propre.
vs. revues par LLM
Un LLM peut répondre autrement au re-run, coûte de l'argent par PR et envoie votre code à un tiers. Le chemin prouvé est déterministe — même code, même verdict — et ne fait aucun appel de modèle. Quand aucun chemin n'est prouvable, le moteur s'abstient au lieu de deviner, et le deep scan hébergé ne conserve jamais une ligne de votre code.
vs. SaaS cloud
Les scanners hébergés dans le cloud copient votre repo à l'extérieur. Sur un repo privé, le run Firewall par défaut n'envoie qu'une empreinte structurelle. Le deep scan est analysé en mémoire puis jeté. Faire tourner le moteur dans votre infrastructure se met en place sous contrat Entreprise, sur demande.
Chaque chiffre ici vient d'une exécution — y compris les faibles.
Lisez le premier chiffre avec le dernier : le moteur est précis quand il tranche, et il s'abstient souvent. Sur du vrai code CVE (avis GitHub, lot jamais vu), les blocages sont justes au moins 3 fois sur 4 (25 sur 32, un plancher : tout blocage sur le fichier corrigé compte comme faux) ; sur 52 089 pull requests open source ordinaires, il en a bloqué 245, dont 46 pour une vraie faille — c'est pourquoi le deep scan est informatif par défaut et le blocage est un opt-in séparé. Le pack de règles pour bibliothèques de la porte CI est noté de la même façon : une relecture du dépôt entier sur 240 de ses lignes MEDIUM en trouve environ 1 sur 4 de vraies (25,0 %, 18,0–32,9), et non les 32,5 % des étiquettes sur extrait. Seuls les désaccords ont eu une seconde lecture et rien n'a été exécuté : le pack reste informatif et ne bloque jamais.
Ce que nous construisons ensuite.
Réponses directes.
Suit-il la donnée d'un fichier à l'autre ?
Oui en Python (imports, 3 niveaux), JavaScript/TypeScript (imports relatifs), Ruby (require_relative) et Go (le package). Pas encore pour les alias de chemin TypeScript ni les appels Java vers une autre classe.
Mon code quitte-t-il mon infrastructure ?
Pas par défaut : le run Firewall envoie une empreinte structurelle — chemins de fichiers, {file, line, kind} et les noms de tables et de colonnes dont le contrôle cross-tenant a besoin, jamais le contenu des fichiers. Le deep scan (heisen-slop) est actif par défaut sur les repos publics et en option payante sur les repos privés — il envoie au moteur au plus 80 fichiers signalés par un détecteur local ou qui contiennent un appel dangereux ; le moteur les analyse en mémoire puis les jette. Quand aucun chemin n'est prouvable, le moteur s'abstient.
En quoi est-ce différent de Snyk, Semgrep ou CodeQL ?
Semgrep et Snyk Code partent de règles de motifs ; CodeQL fait du dataflow mais demande d'écrire des requêtes et n'a pas de gate d'isolation tenant. Le moteur ne bloque qu'un chemin prouvé et s'abstient quand il ne peut pas en prouver. La contrepartie, c'est le rappel : sur les propres tests de règles de Semgrep, Semgrep trouve davantage.
GitLab ou Bitbucket sont-ils pris en charge ?
Pas encore pour le Firewall — il est GitHub uniquement (Action, checks, OIDC).
Mettez la preuve dans votre pipeline.
Ajoutez le deep scan (heisen-slop) à vos PR — gratuit sur les repos publics, opt-in sur les repos privés, déterministe, informatif par défaut.
Régulé ou air-gap ? Parlons du moteur dans votre infrastructure →