Aller au contenu principal

StaticCodeAudit

Changelog

Évolution complète de StaticCodeAudit : fonctionnalités, améliorations et jalons par version.

Ce qu'on a livré, ce qu'on livre ensuite

Snapshot honnête de l'état du produit. « Fait » est en production. « En cours » est en construction maintenant. « À venir » est planifié mais pas commencé — dates indicatives.

Fait — livré

  • ✓Couverture standards 100 % : 703/703 règles builtin mappées à CWE ou WCAG
  • ✓DSL étendu : multi-CWE par règle, champ CVE, champ WCAG — tout propagé en JSON / SARIF / HTML
  • ✓SARIF rule.properties.tags + objet JSON finding.compliance — compatible GitHub code-scanning, DefectDojo, plateformes ASOC
  • ✓Loader de packs hors-bande (rules-updates/) avec vérification SHA-256 et spec manifest.json figée
  • ✓D.2 Performance : cache de règles + analyse incrémentale (3× plus rapide en cache chaud)
  • ✓Moteur taint : Python AST + JS/Java/C#/PHP lexical — F1 = 98,8 % sur OWASP BenchmarkJava v1.2, rappel = 100 %
  • ✓Moteur taint Java : analyse multi-fichiers + reconnaissance native de Spring — 17/18 failles réelles détectées sur WebGoat (94,4 %), contre 9/18 pour Semgrep
  • ✓Portail client : authentification réelle (email + mot de passe + code à usage unique) — remplace l'ancien accès par simple UUID

En cours — en construction

  • ⚙Pipeline veille CVE : ingestion quotidienne NVD / OSV / GitHub Advisory, filtrage par langages SCA
  • ⚙Console authoring opérateur : écrire une règle .sca, valider sur fixtures en sandbox, staging pour publication
  • ⚙Espace client : téléchargement authentifié des packs de règles (par tier d'abonnement)
  • ⚙Notifications email : alerter les abonnés actifs quand un nouveau pack est publié

À venir — planifié

  • ◎DSL v2 : vérification de signature Ed25519 au chargement (clé publique embarquée dans le binaire à la build)
  • ◎D.2.3 finalisation : vraie parallélisation (refactor des exécuteurs pour thread-safety)
  • ◎Langages supplémentaires : Go, Ruby, Kotlin, Swift — selon demande client
  • ◎Moteur taint : sanitizers cross-ligne / scope-level (actuellement RHS-only)
  • ◎Plugins IDE : VS Code + JetBrains (visualiseur findings read-only, lit le dernier JSON d'audit)

Aucun engagement sur les dates. On livre quand c'est prêt. Priorités pilotées client — dites-nous ce qui compte le plus pour vous.

Historique des versions

v2.0.0 Nouveau Juillet 2026

Moteur taint Java : graphe d'appels persistant multi-fichiers et détection native de Spring Framework, avec fusion des moteurs lexical et dataflow en une seule passe. Validé sur du code réel — le rappel sur WebGoat passe à 94,4 %, contre 50 % pour Semgrep OSS sur la même vérité terrain, sans nouveau faux positif sur 3 bases de code open source indépendantes.

Moteur Java — graphe d'appels multi-fichiers & détection Spring

  • →Validation sur code réel WebGoat : rappel 94,4 % (17 failles connues sur 18 retrouvées) contre 50 % (9/18) pour Semgrep OSS — même vérité terrain, règles de sécurité Java officielles
  • ✓Graphe d'appels persistant — résolution multi-sauts inter-fichiers (A→B→C), mis en cache SQLite avec invalidation par hash de fichier, remplace l'analyse lexicale mono-saut précédente
  • ✓Détection native Spring Framework — sources @RequestParam/@RequestBody/@PathVariable/@RequestHeader, liaison implicite de paramètres, propagation argument→paramètre à travers les appels de méthode internes
  • ✓Les moteurs lexical et dataflow tournent désormais ensemble sur chaque fichier Java et fusionnent leurs résultats : sur une base de code open source à 47 000 étoiles (JeecgBoot), +7 flux inter-fichiers gagnés, 0 perdu, 0 nouveau faux positif
  • ⓘPrécision revalidée sur 3 bases de code réelles indépendantes (spring-petclinic, spring-boot-realworld-example-app, JeecgBoot) — dont un correctif de sink XSS ayant éliminé 20 faux positifs (précision JeecgBoot : 49,3 % → 69,4 %)
v1.5.0 Nouveau Juin 2026

Moteur taint lexical Java : F1 = 98,8 % sur OWASP BenchmarkJava v1.2 (2 740 cas), rappel = 100 % — zéro vulnérabilité manquée. 6 catégories sur 8 à F1 = 100 % (sqli, cmdi, pathtraver, ldapi, trustbound, crypto). Total : 710 règles.

Moteur taint Java — OWASP BenchmarkJava v1.2

  • →OWASP BenchmarkJava v1.2 : F1 = 98,8 %, rappel = 100,0 % (2 740 cas) — vérifié sur un benchmark public et indépendant
  • ✓Injection SQL, injection de commande, path traversal, injection LDAP, trust boundary, crypto : tous à F1 = 100 %
  • ✓Pré-passe sommaires de méthodes : −406 faux positifs éliminés. Analyse inter-procédurale HashMap/List/switch-const/ternaire constant
  • ⓘ33 faux positifs résiduels sur la catégorie hash uniquement (MessageDigest.getInstance avec algorithme en config externe — limite structurelle SAST)
v1.4.0 Nouveau Mai 2026

Moteur taint dataflow Phase 7/8 (F1 = 1,000 sur Python ET multilangue JS/Java/C#/PHP) plus 3 règles supply-chain inspirées de l'attaque npm TanStack/Mistral (mai 2026, 170 paquets compromis). Suppression du moteur taint legacy (-3 519 LOC net). Total : 700+ règles sur 8 catégories.

Moteur dataflow taint (Phase 7/8)

  • ✓Implémentation clean-room — CFG, IR 3-adresses, treillis et worklist avec matching hybride dotted + regex (~6 200 LOC code, 3 800 LOC tests)
  • ✓F1 = 1,000 sur le corpus de fixtures SCA interne — zéro faux négatif, zéro faux positif, sur Python ET multilangue (JS/Java/C#/PHP)
  • ✓Profile loader (Flask, Django, Express, Spring, Laravel, .NET) injecté automatiquement dans les règles taint par catégorie — même précision que Snyk Code, sans cloud ni dépendance externe

Couverture supply-chain (TanStack/Mistral mai 2026)

  • ✓Règle npm_git_dependency — détecte les dépendances pinées sur un commit Git GitHub/GitLab/Bitbucket, qui contournent les advisories du registre npm
  • ✓Règles ide_config_exfil (JS + Python) — détectent les écritures silencieuses dans .claude/settings.json, .vscode/tasks.json, .cursor/, .aider/, .codeium/ utilisées comme vecteurs de persistance
  • →Couverture préventive native — pas de télémétrie, pas de sandbox cloud, chaque détection tourne hors ligne sur la machine du développeur
v1.3.0 Nouveau Mai 2026

D.2 Performance — cache des règles et analyse incrémentale rendent les analyses à chaud jusqu'à 3× plus rapides, idéal pour les pipelines CI/CD et les hooks pre-commit.

Performance

  • ✓Cache des règles : règles DSL parsées une seule fois, conservées entre les exécutions
  • ✓Analyse incrémentale : seuls les fichiers modifiés depuis le dernier scan sont réanalysés (hash de contenu)
  • →Jusqu'à 3× plus rapide en analyse à chaud (re-scans de code inchangé)
v1.2.0 Amélioré Avril 2026

+53 règles de détection pour les catégories non-sécurité : Architecture, Maintenance, Accessibilité/UX, Interface/UI. Sources : axe-core (WCAG 2.2), Ruff, Pylint, PMD, PHPMD, SonarJS, eslint-plugin-jsx-a11y, HTMLHint et SonarQube Cloud API.

Nouvelles règles — 8 vagues

  • ✓+16 règles UX/accessibilité (HTML + JSX) : axe-core WCAG 2.0/2.1/2.2, aria-hidden, viewport zoom, sous-titres vidéo, jsx-a11y
  • ✓+6 règles UI (HTML) : balises dépréciées, styles en ligne, viewport manquant, type de bouton, target blank, dimensions d'image
  • ✓+24 règles Maintenance : Python (Ruff/Pylint), Java (PMD), PHP (PHPMD), JavaScript (SonarJS), C# (SonarQube)
  • ✓+7 règles Architecture : Java, PHP, JavaScript, C# — couplage, classes utilitaires, champs publics
  • →698 règles au total (contre 645 auparavant)
v1.1.0 Moteur 2026

Détection & Couverture

  • ✓698 règles de détection dans 8 catégories
  • ✓8 langages : Python, JavaScript/TypeScript, HTML, Java, C#, PHP, YAML
  • ✓changelog.v2.detection.custom--create-rule) with DSL and taint propagation
  • ✓changelog.v2.detection.fixtures
  • ✓changelog.v2.detection.selftest--self-test) validates all fixtures on demand

Sécurité

  • ✓changelog.v2.security.owasp
  • ✓changelog.v2.security.iso27001
  • ✓changelog.v2.security.asvs
  • ✓changelog.v2.security.cicd
  • ✓changelog.v2.security.suppress# sca-ignore), config, or global disable

Exports & Intégration

  • ✓Export SARIF 2.1.0 pour GitHub Code Scanning et GitLab SAST--sarif) — compatible with GitHub Code Scanning and GitLab SAST
  • ✓Génération SBOM au format CycloneDX 1.5--sbom) — Software Bill of Materials
  • ✓changelog.v2.exports.gitblame--git-blame) — committer per finding
  • ✓changelog.v2.exports.hook--install-hook) — automatic audit before every commit
  • ✓changelog.v2.exports.failon--fail-on-high) — exit code 1 on HIGH findings

Rapports & Marque blanche

  • ✓Rapports en 4 langues : anglais, français, espagnol, allemand
  • ✓changelog.v2.reports.charts
  • ✓changelog.v2.reports.health
  • ✓changelog.v2.reports.glossary
  • ✓Marque blanche : nom d'outil, entreprise, logo et préfixe personnalisables
  • ✓Rétention des rapports par nombre, durée ou mode combiné--retention-dry-run)
  • ✓changelog.v2.reports.keyboard
  • ✓changelog.v2.reports.print
v1.0.0 Initiale 2025 — Première version

Fonctionnalités principales

  • ✓51 règles de détection dans 7 catégories
  • ✓4 langages : Python, JavaScript/TypeScript, HTML
  • ✓changelog.v1.core.reports
  • ✓Comparaison baseline entre snapshots d'audit
  • ✓changelog.v1.core.zero
  • ✓changelog.v1.core.offline
  • ✓changelog.v1.core.uuid--init)

Catégories optionnelles

  • ✓Audit des dépendances via pip-audit et npm audit (scan CVE)
  • ✓changelog.v1.optional.db