OWASP ASVS et WSTG : la méthode réelle d'un
pentest web
L'OWASP ne se résume pas au Top 10. L'ASVS 5.0 dit ce qu'une appli doit prouver, le WSTG comment le tester. Mapping d'une méthodo de pentest et dix contrôles ASVS niveau 2 vérifiés en mission.
own2pwn9 min de lecture

Un pentest aligné sur l'ASVS
En whitebox, on déroule les chapitres ASVS niveau par niveau et on cite l'exigence exacte sur chaque écart. Rapport actionnable, retest inclus.
Demander un pentest whiteboxQuand on parle OWASP, tout le monde pense au Top 10. C'est le document le plus cité et le moins utile en mission : une liste de risques répandus, pratique pour sensibiliser un comité de direction, inexploitable comme procédure de test. Les deux publications de la fondation qu'un pentester ouvre vraiment tous les jours portent des acronymes moins connus : l'ASVS et le WSTG.
L'Application Security Verification Standard (ASVS) dit ce qu'une application doit faire pour être tenue pour sûre. Le Web Security Testing Guide (WSTG) dit comment le vérifier sur une appli qui tourne. Un référentiel d'exigences d'un côté, un catalogue de tests de l'autre. On va voir comment on plaque concrètement une méthodologie de pentest sur les chapitres du WSTG, comment on vérifie dix contrôles ASVS de niveau 2 pendant une mission, et à quoi ressemble un extrait de rapport où une exigence ASVS est citée nommément. Cet article s'inscrit dans le test d'intrusion en entreprise et suppose que vous savez déjà ce qu'est une faille web.
ASVS 5.0 a tout renuméroté
8.2.2 n'a pas le même sens dans les deux versions. Toujours écrire la version à côté de l'identifiant. L'OWASP fournit d'ailleurs un guide de transition dédié aux équipes qui viennent de la 4.0.ASVS et WSTG : deux documents, deux usages
L'ASVS 5.0 s'organise en dix-sept chapitres, numérotés de V1 (Encoding and Sanitization) à V17 (WebRTC), en passant par l'authentification (V6), la gestion de session (V7) et l'autorisation (V8). Chaque exigence porte un identifiant chapitre.section.exigence et un niveau. Le standard définit trois niveaux de vérification : le niveau 1 rassemble environ 20 % des exigences, le socle minimal ; le niveau 2, que la plupart des applications devraient viser, porte l'ensemble à près de 70 % ; le niveau 3 ajoute les 30 % restants pour les applications qui exigent la plus forte assurance.
Le WSTG n'a pas la même vocation. Sa version stable, la 4.2, date du 3 décembre 2020 (la 5.0 est en chantier), et elle découpe le test d'une application web en douze catégories, chacune identifiée par un code : WSTG-INFO pour la collecte d'informations, WSTG-ATHN pour l'authentification, WSTG-BUSL pour la logique métier, et ainsi de suite jusqu'à WSTG-APIT pour les API. Là où l'ASVS énonce une propriété à démontrer, le WSTG détaille la manœuvre : quel paramètre trafiquer, quelle réponse observer, quel outil dégainer.
Ni l'un ni l'autre n'est le Top 10 de l'OWASP, qui reste une grille de sensibilisation. Le Top 10 vous dit que le contrôle d'accès cassé est le risque numéro un. Il ne vous dit ni comment le tester (ça, c'est WSTG-ATHZ), ni ce que l'application aurait dû implémenter pour l'éviter (ça, c'est ASVS V8). Confondre les trois, c'est rendre un rapport de pentest qui liste des CWE sans dire comment les vérifier ni comment les corriger.
Cartographier une méthodo de pentest sur les chapitres WSTG
Une mission web ne se déroule pas dans l'ordre du sommaire du WSTG. On la structure en phases, et chaque phase pioche dans une ou plusieurs catégories. Le tableau ci-dessous montre le mapping qu'on applique sur une mission classique, de la reconnaissance à la logique métier.
Trois catégories concentrent l'essentiel des findings graves. Le contrôle d'accès (WSTG-ATHZ) parce que l'IDOR et le BOLA sont partout et ne demandent aucune technicité d'exploitation. La validation d'entrée (WSTG-INPV) parce qu'elle abrite les injections, dont les variantes aveugles qui ne renvoient rien dans la réponse et qu'on ne prouve qu'avec un serveur out-of-band. Et la logique métier (WSTG-BUSL), la seule catégorie qu'aucun scanner ne couvre, parce qu'elle exige de comprendre ce que l'application est censée faire.
Le mapping change avec le mode d'engagement. En blackbox, whitebox ou greybox, on n'attaque pas les mêmes chapitres avec la même profondeur : sans code, la reconnaissance et la configuration pèsent plus lourd ; avec le code, on va directement lire les contrôles d'autorisation. Pour une cible qui expose surtout des endpoints REST ou GraphQL, on bascule le centre de gravité vers WSTG-APIT et la sécurité des API.
Dix contrôles ASVS niveau 2 et comment les vérifier en mission
Le WSTG dit où chercher, l'ASVS dit ce qu'on doit pouvoir cocher. Voici dix exigences de niveau 2, celui que vise la majorité des applications, avec la manœuvre concrète qui permet de conclure conforme ou pas. Les identifiants et les libellés sont ceux de l'ASVS 5.0.0, vérifiés dans le dépôt officiel. Les classiques du contrôle d'accès (l'IDOR/BOLA en 8.2.2, l'application des règles au niveau d'un service de confiance en 8.3.1) sont eux au niveau 1 : on les teste d'office, ils sont le socle.
| ASVS 5.0 | Exigence (résumé) | Comment on la vérifie |
|---|---|---|
| 6.2.12 | Mots de passe recoupés avec une base de mots de passe compromis | On tente d'inscrire un compte avec un mot de passe présent dans les fuites connues ; s'il est accepté, l'écart est là. |
| 6.8.2 | Signature des assertions d'authentification (JWT, SAML) toujours validée | On rejoue un JWT en alg:none ou avec une signature bidon ; s'il passe, la validation manque. |
| 7.4.3 | Option de fermer les autres sessions après changement d'un facteur d'auth | On ouvre deux sessions, on change le mot de passe dans l'une, on vérifie si l'autre reste active. |
| 7.5.1 | Ré-authentification avant de modifier un attribut sensible (email, téléphone, MFA) | On tente de changer l'email de compte sans redonner le mot de passe ; si ça marche, c'est un vecteur de prise de contrôle. |
| 8.2.3 | Accès au niveau des champs restreint aux permissions (BOPLA) | On ajoute un champ privilégié (role, isAdmin) dans un PATCH de profil et on regarde s'il est pris. |
| 8.4.1 | Contrôles inter-tenants dans une application multi-locataires | Avec deux comptes de tenants distincts, on substitue l'identifiant de ressource de l'un dans les requêtes de l'autre. |
| 4.1.3 | En-têtes posés par un intermédiaire non surchargeable par le client | On envoie soi-même X-Forwarded-For ou X-Real-IP ; si l'appli les fait confiance, le rate limiting et le log d'IP deviennent contournables. |
| 4.2.1 | Bornes des messages HTTP cohérentes (anti request smuggling) | On envoie une requête avec Transfer-Encoding et Content-Length en conflit et on observe le désaccord front/back. |
| 2.4.1 | Anti-automation contre les appels excessifs (exfil, quota, déni de service) | On boucle sur un endpoint coûteux ou énumérable et on regarde si un blocage se déclenche. |
| 16.3.1 | Journalisation de toutes les opérations d'authentification (succès et échecs) | Vérification documentaire ou greybox : on demande les logs après une salve d'échecs de connexion et on vérifie qu'ils apparaissent. |
Deux remarques de terrain. La dernière ligne, 16.3.1, illustre une limite du blackbox : sans accès aux journaux, on ne peut pas prouver qu'une opération est loguée, seulement constater qu'on n'est pas bloqué. Beaucoup d'exigences ASVS de documentation et de journalisation sont dans ce cas, ce qui explique pourquoi le standard note que le niveau 1 lui-même n'est pas entièrement testable par un auditeur externe sans documentation ni code. Et l'exigence 4.1.3 n'est pas un détail académique : un X-Forwarded-For que le client contrôle rend inefficace tout compteur de tentatives, sujet qu'on traite plus largement dans la gestion des vulnérabilités.
Blackbox suit le WSTG, whitebox suit l'ASVS
Le choix du référentiel structurant dépend de ce qu'on a sous la main. En pentest web blackbox, on n'a que l'application qui tourne : le WSTG est la colonne vertébrale naturelle, puisqu'il décrit des tests observables de l'extérieur. On progresse catégorie par catégorie, on note ce qui casse, et on rattache après coup chaque finding à l'exigence ASVS qu'il viole.
En pentest web whitebox, avec le code et la documentation, on inverse la logique : l'ASVS devient la checklist maîtresse. On déroule les chapitres V1 à V17 au niveau visé, on lit les contrôles d'autorisation directement dans le code plutôt que de les deviner à l'aveugle, et on couvre les exigences qu'un blackbox ne peut pas atteindre (journalisation, gestion des secrets, architecture). C'est aussi là que les outils de SAST, DAST et IAST prennent le relais sur les vérifications mécaniques, pour laisser l'humain sur la logique métier et les chaînes d'exploitation.
WSTG-ATHZ révèle un accès non restreint à un objet d'un autre compte.ASVS 5.0 8.2.2 (autorisation au niveau des objets, niveau 1).Citer une exigence ASVS dans un rapport
Un finding rédigé en texte libre se discute : le développeur estime que ce n'est pas grave, le pentester insiste, et le débat s'enlise. Rattaché à un identifiant ASVS, il devient un critère de recette opposable. Voici à quoi ressemble l'en-tête d'un finding tel qu'on l'écrit, avec l'exigence citée explicitement :
[HAUTE] Accès non autorisé aux commandes d'autres clients (BOLA)
Reference : WSTG-ATHZ-04 (Testing for IDOR)
Non-conformite : ASVS 5.0 8.2.2 (niveau 1)
"Verify that the application ensures that data-specific access is
restricted to consumers with explicit permissions to specific data
items to mitigate insecure direct object reference (IDOR) and broken
object level authorization (BOLA)."
Constat : GET /api/v2/orders/{id} renvoie la commande demandee
quel que soit le compte authentifie. En incrementant {id}
depuis le compte A, on lit les commandes du compte B
(nom, adresse, montant).
Impact : divulgation de donnees personnelles de tous les clients.
Correctif : filtrer chaque acces objet sur owner_id cote service,
pas seulement sur la presence d'une session valide.
Retest : rejouer l'enumeration depuis un compte tiers -> 403 attendu.Le gain est double. Pour l'équipe de dev, la ligne Correctif et l'identifiant du contrôle donnent une cible nette, pas une consigne vague. Pour la prochaine mission, le Retest se réduit à revérifier ce contrôle : on sait exactement quoi rejouer et quel résultat attendre. C'est ce qui fait qu'un rapport aligné sur l'ASVS survit à la mission, là où un rapport en prose finit au fond d'un tiroir. Le déroulement d'un pentest détaille la place de cette phase de restitution.
ASVS comme clause de contrat
À retenir
- ASVS = quoi exiger, WSTG = comment tester. L'ASVS 5.0 liste dix-sept chapitres d'exigences vérifiables sur trois niveaux ; le WSTG 4.2 décrit douze catégories de tests concrets.
- Le Top 10 sensibilise, il ne teste rien et ne spécifie rien. Un pentest sérieux s'appuie sur les deux autres.
- En mission, on structure les phases sur les catégories WSTG ;
WSTG-ATHZ,WSTG-INPVetWSTG-BUSLconcentrent les findings graves. - Le niveau 2 est la cible de la plupart des applis ; beaucoup de ses exigences (journalisation, en-têtes de confiance) sont plus faciles à prouver en whitebox qu'en blackbox.
- Blackbox suit le WSTG, whitebox suit l'ASVS. Dans les deux cas, on rattache chaque finding à l'identifiant du contrôle violé, avec sa version.
- Un finding qui cite
ASVS 5.0 8.2.2devient un critère de recette : corrigeable, retestable, opposable.
Vous voulez un pentest dont le rapport se lit comme une matrice de conformité ASVS plutôt que comme un roman ? En whitebox, on déroule les chapitres au niveau que vous fixez et on cite l'exigence exacte sur chaque écart : voyez le pentest web whitebox, comparez avec le prix d'un test d'intrusion, ou parlez de votre périmètre via la page contact.
Questions fréquentes sur l'ASVS et le WSTG
Quelle est la différence entre l'OWASP ASVS et le WSTG ?
L'ASVS (Application Security Verification Standard) est un référentiel d'exigences : il liste ce qu'une application doit prouver pour être considérée comme sûre, classées en trois niveaux. Le WSTG (Web Security Testing Guide) est un catalogue de tests : il décrit comment vérifier ces propriétés sur une appli qui tourne. L'un dit quoi exiger, l'autre dit comment le tester. En pratique, un pentester whitebox s'appuie sur l'ASVS et un pentester blackbox suit le WSTG.
Qu'est-ce que l'ASVS 5.0 ?
L'ASVS 5.0.0 est la version publiée le 30 mai 2025 par l'OWASP. Elle réorganise le standard en dix-sept chapitres numérotés de V1 (Encoding and Sanitization) à V17 (WebRTC) et conserve trois niveaux de vérification. La numérotation des exigences a complètement changé par rapport à la 4.0.3 : un identifiant comme 8.2.2 de la 5.0 ne correspond pas au même contrôle qu'en 4.0.
Combien de niveaux compte l'ASVS et lequel viser ?
Trois. Le niveau 1 regroupe environ 20 pour cent des exigences, le socle minimal. Le niveau 2, cible de la plupart des applications, ajoute une couche qui porte l'ensemble à environ 70 pour cent des exigences. Le niveau 3, environ 30 pour cent restants, vise le plus haut degré d'assurance. Le choix du niveau dépend de la sensibilité des données traitées, pas d'une règle universelle.
Le WSTG couvre-t-il les API ?
Oui. Le WSTG comporte une catégorie dédiée, WSTG-APIT (API Testing), en plus des onze autres qui vont de la collecte d'informations (WSTG-INFO) à la logique métier (WSTG-BUSL) et aux tests côté client (WSTG-CLNT). Pour un audit d'API, on combine cette catégorie avec les chapitres authentification, autorisation et validation d'entrée, car les failles d'API sont surtout des failles d'autorisation objet.
Le Top 10 de l'OWASP suffit-il pour un pentest ?
Non. Le Top 10 est une liste de sensibilisation aux risques les plus répandus, pas une méthodologie de test ni une checklist de conformité. Il ne dit ni comment tester une catégorie, ni ce qu'une application doit implémenter. Un pentest sérieux s'appuie sur le WSTG pour la procédure de test et sur l'ASVS pour les exigences vérifiables, le Top 10 servant tout au plus de grille de priorisation grand public.
Comment citer une exigence ASVS dans un rapport de pentest ?
En rattachant chaque écart à l'identifiant exact du contrôle non respecté, sa version et son niveau, par exemple non-conformité ASVS 5.0 8.2.2 (niveau 1, autorisation au niveau des objets). Cela transforme une observation en critère de recette opposable : l'équipe de dev sait précisément quoi corriger, et le retest se réduit à revérifier ce contrôle. Un rapport qui référence l'ASVS est mesurable, là où un texte libre reste discutable.
Veille sécurité
La suite, une fois par mois
Ce qui bouge vraiment sur la surface d'attaque externe, NIS2 et la sécurité applicative, écrit par le pentester qui signe ces articles. Un envoi par mois, désinscription en un clic.
Votre adresse ne sert qu'à cet envoi. Voir la politique de confidentialité.
Articles liés
appsec
Audit de sécurité informatique : grille, exemple de rapport et prix
Audit de sécurité informatique : ce que chaque type d'audit prouve vraiment, une grille de contrôles concrète, un extrait de rapport anonymisé et les prix affichés. Le volet technique, sans jargon.
appsec
Pentest en entreprise : pourquoi, quand et quel type commander
Pourquoi une entreprise commande un pentest : risque, conformité NIS2 et DORA, exigences clients. Quand le faire, quel type choisir (black, grey, white box, API, red team) et comment cadrer un prestataire.
appsec
Comment se déroule un test d'intrusion web ? Les étapes d'un pentest
Déroulement d'un test d'intrusion web, phase par phase : cadrage, reconnaissance, cartographie, découverte, exploitation, post-exploitation, rapport et retest. Méthodologie PTES et OWASP WSTG.