Aller au contenu principal

Guide

OWASP ASVS v5.0.0 : ce que couvre réellement un scan SAST

ASVS compte 348 exigences réparties sur 17 chapitres. Aucun analyseur statique — celui-ci compris — n'en vérifie la totalité, et tout éditeur prétendant le contraire manque de précision. Voici exactement lesquelles des 44 StaticCodeAudit rattache à une règle, chapitre par chapitre, et pourquoi le reste demande sincèrement autre chose que du filtrage de motifs dans le code source.

L'ASVS en un paragraphe

L'OWASP Application Security Verification Standard (ASVS) est un catalogue d'exigences de sécurité pour les applications web, organisé en 17 chapitres (V1 à V17) et 3 niveaux de vérification (L1 : hygiène de base, L2 : la plupart des applications, L3 : cibles à haute valeur). La version 5.0.0 définit 348 exigences individuelles. C'est une checklist autant pour des humains et des processus que pour des outils — la plupart des exigences décrivent un résultat (« vérifier que X est appliqué »), pas un motif de code, ce qui explique précisément pourquoi un scan purement statique ne peut pas vérifier mécaniquement chaque ligne.

Le chiffre honnête : 44 sur 348

StaticCodeAudit rattache 44 exigences ASVS v5.0.0 à au moins une règle de détection — environ 13% du standard complet. Ce n'est pas un arrondi marketing ; c'est le compte réel du fichier de mapping livré avec le scanner, et il apparaît à l'identique dans la section conformité de chaque rapport généré.

Chapitre Couvert
V1Encodage, Sanitization et Sandboxing 16 / 30
V3Sécurité du frontend web 11 / 31
V6Authentification 4 / 48
V11Cryptographie 4 / 25
V4Sécurité API et services web 3 / 16
V5Gestion de fichiers 2 / 13
V9Tokens autonomes 2 / 7
V12Communication sécurisée 1 / 12
V16Journalisation sécurité et gestion d'erreurs 1 / 17

Pourquoi les 8 autres chapitres sont à zéro

V2 (Logique métier), V7 (Gestion de session), V8 (Autorisation), V10 (OAuth et OIDC), V13 (Configuration), V14 (Protection des données), V15 (Codage sécurisé et architecture) et V17 (WebRTC) n'ont aujourd'hui aucune exigence rattachée à une règle. Ce n'est pas un oubli — l'essentiel de ce que ces chapitres demandent n'est pas visible comme un motif dans le code source : est-ce qu'un contrôle d'autorisation est correct pour une règle métier donnée, est-ce qu'un flux OAuth est configuré avec les bons scopes chez le fournisseur d'identité, est-ce qu'un timeout de session est réglé de façon adaptée à la sensibilité des données — cela demande de comprendre l'intention et la configuration à l'exécution, pas seulement de parser de la syntaxe. L'analyse statique est une donnée d'entrée pour une évaluation ASVS, pas un substitut à la revue humaine que ces chapitres appellent.

Comment une exigence se rattache à une vraie règle

Neuf exemples, directement issus du fichier de mapping — les vrais identifiants de règles qui produisent un finding quand ils se déclenchent :

Exigence Niveau Ce qui est vérifié Règle(s)
1.2.4 L1 Les requêtes SQL utilisent des requêtes paramétrées ou un ORM sql_injection_fstring, sql_injection_concat…
1.5.1 L1 Les parseurs XML sont configurés pour empêcher les XXE xxe_injection, xxe_injection_csharp, xxe_injection_php
3.4.3 L1 L'en-tête CSP est configuré missing_csp_header
3.5.1 L1 Les protections CSRF sont activées django_csrf_exempt, spring_csrf_disabled
6.3.3 L2 La MFA est disponible pour les opérations sensibles missing_mfa_python, missing_mfa_javascript…
9.1.2 L1 L'algorithme JWT « none » est rejeté jwt_none_algorithm
11.3.1 L1 Des algorithmes cryptographiques forts sont utilisés weak_crypto, weak_crypto_java…
11.5.1 L1 Des générateurs aléatoires cryptographiquement sûrs sont utilisés weak_random_java, insecure_random…
12.2.1 L1 Toutes les connexions utilisent TLS http_no_tls, unencrypted_transfer

La colonne Niveau est la classification propre à l'ASVS (L1 = de base, L2 = standard, L3 = haute assurance) — StaticCodeAudit ne l'attribue pas, elle est lue directement depuis la spécification OWASP.

Où cela apparaît dans le rapport

Chaque rapport HTML de scan inclut une section « OWASP ASVS v5.0.0 Compliance » avec une matrice par exigence : chacune des 44 exigences rattachées apparaît comme couverte-et-propre, couverte-avec-findings, ou non couverte — pas juste un pourcentage unique. Une exigence avec un finding HIGH actif (par exemple un hash MD5 déclenchant la 11.3.1) est visuellement distinguée de celle qui est couverte et passe sans problème, pour qu'un relecteur n'ait pas à deviner laquelle des 13% compte vraiment pour un code donné.

Le générer soi-même

Pas de flag séparé — la matrice ASVS fait partie de chaque rapport HTML standard :

./staticcodeaudit-linux-x86_64 /path/to/project --fail-on-high

Le même run produit aussi les matrices ISO 27001 Annexe A et NIST CSF 2.0 côte à côte. Voir la page couverture des standards pour le détail interactif des quatre référentiels.

Questions fréquentes

Est-ce que 44/348 signifie que StaticCodeAudit n'est conforme ASVS qu'à 13% ?

Non — ce raccourci confond deux choses différentes. 44/348 mesure la part de la checklist ASVS qu'un scan de code source peut vérifier mécaniquement, pas la part que votre application satisfait réellement. Un code peut être pleinement conforme à une exigence ASVS donnée sans qu'aucun outil ne le détecte (ex. un timeout de session correctement configuré), et les 304 exigences restantes ne sont simplement pas le genre de chose que l'analyse statique vérifie.

Est-ce que le chiffre 44 va augmenter avec le temps ?

Il a déjà bougé et peut rebouger avec l'ajout de nouvelles règles — il est lu depuis un fichier de mapping livré avec le scanner, pas figé dans un texte marketing. Voir le changelog pour les mises à jour du mapping de conformité.

La couverture ASVS diffère-t-elle selon le niveau ASVS (L1/L2/L3) ?

Oui — le niveau affiché dans la matrice est celui défini par l'OWASP pour cette exigence précise, pas une décision du scanner. La plupart des 44 exigences couvertes sont de niveau L1 (hygiène de base) ; quelques-unes, comme la disponibilité de la MFA (6.3.3), sont L2. Rien n'est actuellement rattaché en L3, cohérent avec le fait que les exigences L3 penchent vers la revue d'architecture et de processus.

Cela peut-il remplacer une évaluation ASVS manuelle ?

Non, et ce n'est pas positionné comme tel. C'est une première passe rapide, reproductible et hors-ligne sur les exigences réellement visibles comme des motifs de code — une preuve utile à joindre à une évaluation manuelle, pas un substitut à la revue humaine que demandent des chapitres comme Autorisation ou Logique métier.

Voir la matrice de conformité complète sur du vrai code

Ouvrez le rapport de démonstration en ligne et faites défiler jusqu'à la section OWASP ASVS — sans installation, sans inscription.

Ouvrir le rapport en ligne Télécharger le binaire de démo