SecuScan AI v1.1.3 — la détection ne fonctionnait pas
Le scanner ne détectait rien
Sur un projet quelconque, SecuScan rendait 0 vulnérabilité, sans erreur visible.
Trois règles utilisaient du look-ahead ((?!…)), que le crate regex ne supporte pas. Les règles étant compilées paresseusement derrière un .expect(), rien n'échouait au build : le fil d'analyse paniquait au premier fichier.
dispatch_timed réduisait ensuite ce fil mort à un Err(_) générique et journalisait « File scan timed out ». Le moteur rendait donc une liste vide pour chaque fichier, en silence.
Mesure : un fichier Python contenant une injection SQL, des identifiants en dur et un hachage MD5 de mot de passe donnait 0 finding en 2 ms.
Corrections
- Les trois motifs reformulés en positif, sans look-ahead.
dispatch_timeddistingueDisconnected(analyseur en panique) d'un vraiTimeout, et journalise le premier en erreur avec le nom du fichier.- Un test compile les quatre jeux de règles : une regex invalide fait désormais échouer le build au lieu de désactiver le scanner.
Vérification
Sur le binaire installé, le même dossier passe de 0 à 3 findings :
| Sévérité | Détection | CWE |
|---|---|---|
| Critique | SQL Injection — Direct execute() | CWE-89 |
| Haute | Hardcoded Password | CWE-798 |
| Moyenne | Weak Cryptographic Function | CWE-327 |
Les rapports exportés en JSON, HTML et TXT les contiennent bien.
Rappel v1.1.2 — export de rapport
L'export n'écrivait aucun fichier : le contrôle « destination sous le répertoire utilisateur » comparait un chemin canonicalisé (verbatim sous Windows) à USERPROFILE, donc échouait toujours. Corrigé, et vérifié sur les cinq formats.
Installation
SecuScan AI_1.1.3_x64-setup.exe — installation pour l'utilisateur courant, sans élévation. Les mises à jour suivantes se font automatiquement.