Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 214 minIntermédiaire

OWASP Top 10 2025 : les dix risques expliqués

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • nommer les dix catégories de l'OWASP Top 10 2025 ;
  • classer une faille dans la bonne catégorie ;
  • traduire un classement de 2021 dans l'édition 2025 ;
  • utiliser le Top 10 comme grille d'audit.

3 exercices corrigés1 schéma

L'OWASP Top 10 est la liste des dix catégories de risques les plus critiques pour les applications web, publiée par la fondation OWASP et mise à jour tous les trois à quatre ans. L'édition en vigueur est l'OWASP Top 10:2025, qui remplace celle de 2021. Ce chapitre présente les dix catégories, ce qui a changé depuis 2021 et les autres référentiels de l'OWASP (API, mobile, ASVS). Chaque catégorie renvoie au chapitre qui la traite en détail.

C'est quoi l'OWASP ?

L'OWASP (Open Worldwide Application Security Project) est une fondation à but non lucratif, née en 2001, qui produit des ressources libres et gratuites sur la sécurité des logiciels : des guides, des outils (ZAP, Dependency-Check, Juice Shop), des fiches pratiques (Cheat Sheet Series) et des classements de risques. Son document le plus connu est le Top 10.

Le Top 10 n'est pas la liste de toutes les failles possibles : il en existe des centaines de types. C'est un classement de catégories, chacune regroupant plusieurs faiblesses (CWE) de même nature. Il sert de langage commun entre développeurs, auditeurs et clients, de grille de lecture pour un audit, et de base aux sujets de cybersécurité du BTS.

Comment le Top 10 est construit

L'édition 2025 est la huitième. Elle s'appuie sur des données de tests fournies par des entreprises spécialisées et des organisations qui auditent des applications. L'équipe a analysé 589 types de faiblesses (CWE), contre près de 400 en 2021, puis les a regroupées en dix catégories couvrant 248 CWE, avec au plus 40 CWE par catégorie. Huit catégories viennent de ces données ; les deux autres sont choisies par une enquête auprès des professionnels, pour faire remonter des risques que les tests automatisés mesurent mal. Le classement tient compte de la fréquence des failles dans les applications testées, de leur exploitabilité et de leur impact.

Chaque catégorie porte un code de la forme A01:2025 : « A » pour Application security risk, le rang, puis l'année de l'édition. Écris toujours l'année : A03:2021 (Injection) et A03:2025 (chaîne d'approvisionnement) n'ont rien à voir.

La liste 2025

CodeCatégorie (nom officiel en anglais)En une phraseExemple dans AppliFraisChapitre
A01:2025Contrôle d'accès défaillant (Broken Access Control)Un utilisateur fait ou voit ce qu'il ne devrait pasUn visiteur lit la fiche d'un collègue ; une requête forgée valide une fiche3 et 9
A02:2025Mauvaise configuration de sécurité (Security Misconfiguration)Des réglages par défaut ou de débogage restent en productionLa trace complète d'une erreur s'affiche à l'écran4
A03:2025Défaillances de la chaîne d'approvisionnement logicielle (Software Supply Chain Failures)Une dépendance, un outil de build ou un dépôt compromis ou vulnérableUne bibliothèque npm avec une CVE critique jamais mise à jour5
A04:2025Défaillances cryptographiques (Cryptographic Failures)Des données sensibles mal protégées en transit ou au reposDes mots de passe hachés en MD5, un site en HTTP6
A05:2025Injection (Injection)Une saisie interprétée comme du codeInjection SQL dans la recherche, XSS dans un libellé de frais7 et 8
A06:2025Conception non sécurisée (Insecure Design)Un défaut dans la logique ou l'architecture, pas dans le codeRien n'empêche de saisir un montant négatif10
A07:2025Défaillances d'authentification (Authentication Failures)L'identité de l'utilisateur est mal vérifiéeAucune limite d'essais à la connexion, jeton sans expiration11
A08:2025Défaillances d'intégrité des logiciels ou des données (Software or Data Integrity Failures)Du code ou des données utilisés sans vérifier qu'ils n'ont pas été modifiésUn script chargé depuis un CDN sans contrôle d'intégrité5
A09:2025Défaillances de journalisation et d'alerte (Security Logging & Alerting Failures)Une attaque n'est ni enregistrée ni signalée5 000 échecs de connexion en une nuit, et personne ne le voit12
A10:2025Mauvaise gestion des conditions exceptionnelles (Mishandling of Exceptional Conditions)L'application réagit mal à une erreur ou à une situation imprévueUne exception dans le contrôle des droits laisse passer la requête12

Ce qui change par rapport à 2021

Beaucoup de supports en ligne, et certains sujets d'annales, utilisent encore l'édition 2021. Voici la correspondance.

Top 10 2021Top 10 2025A01 Contrôle d'accèsA02 CryptographieA03 InjectionA04 Conception non sécuriséeA05 Mauvaise configurationA06 Composants vulnérablesA07 Identification, auth.A08 IntégritéA09 Journalisation, surveillanceA10 SSRFA01 Contrôle d'accès + SSRFA02 Mauvaise configurationA03 Chaîne d'approvisionnementA04 CryptographieA05 InjectionA06 Conception non sécuriséeA07 AuthentificationA08 IntégritéA09 Journalisation, alerteA10 Conditions exceptionnellesnouvelle
Du Top 10 2021 au Top 10 2025 : deux nouveautés, une fusion, des changements de rang
Édition 2021Édition 2025Ce qui change
A01 Broken Access ControlA01Reste premier ; la SSRF y est rattachée
A02 Cryptographic FailuresA04Descend de deux rangs
A03 InjectionA05Descend de deux rangs ; le XSS en fait toujours partie
A04 Insecure DesignA06Descend de deux rangs
A05 Security MisconfigurationA02Monte de trois rangs
A06 Vulnerable and Outdated ComponentsA03S'élargit à toute la chaîne d'approvisionnement : dépendances, outils de build, dépôts, distribution
A07 Identification and Authentication FailuresA07Devient Authentication Failures
A08 Software and Data Integrity FailuresA08Même rang, nom légèrement modifié (or au lieu de and)
A09 Security Logging and Monitoring FailuresA09Devient Logging & Alerting : il ne suffit pas d'enregistrer, il faut alerter
A10 Server-Side Request Forgery (SSRF)intégrée à A01N'est plus une catégorie à part
(n'existait pas)A10 Mishandling of Exceptional ConditionsNouvelle catégorie : erreurs mal gérées, échecs ouverts, états incohérents

Les dix catégories en bref

A01:2025, Contrôle d'accès défaillant. L'application vérifie que l'utilisateur est connecté, mais pas qu'il a le droit d'effectuer cette action sur cette donnée. Les formes typiques : modifier un identifiant dans l'URL pour lire la ressource d'un autre (IDOR), appeler une route d'administration sans en avoir le rôle, modifier un champ caché ou un jeton, une configuration CORS trop permissive, la falsification de requête intersite (CSRF) et, depuis 2025, la SSRF. Parade : contrôle côté serveur, refus par défaut, vérification du propriétaire de chaque ressource.

A02:2025, Mauvaise configuration de sécurité. Comptes par défaut, mode débogage actif, messages d'erreur détaillés, listage des répertoires, en-têtes de sécurité absents, attributs Secure et HttpOnly oubliés sur les cookies, analyseur XML qui accepte les entités externes (XXE). Parade : configuration durcie, identique et automatisée dans tous les environnements, avec des secrets différents dans chacun.

A03:2025, Défaillances de la chaîne d'approvisionnement logicielle. Ton application contient surtout du code écrit par d'autres. Une dépendance vulnérable, abandonnée ou piégée, un outil de build compromis ou un pipeline d'intégration continue mal protégé suffisent à la compromettre. En 2025, le ver Shai-Hulud s'est propagé tout seul dans l'écosystème npm en volant des jetons de publication. Parade : inventaire des composants (SBOM), analyse automatique des vulnérabilités, mises à jour suivies, sources de confiance.

A04:2025, Défaillances cryptographiques. Données sensibles transmises en clair, mots de passe hachés avec un algorithme rapide ou sans sel, clés écrites dans le code, aléatoire prévisible, algorithmes obsolètes. Parade : HTTPS partout, Argon2id ou bcrypt pour les mots de passe, AES-GCM pour les données à relire, clés hors du code.

A05:2025, Injection. Une donnée de l'utilisateur est insérée dans une commande interprétée (SQL, requête NoSQL, commande système, page HTML) et change son sens. C'est la catégorie qui compte le plus de CVE publiées : plus de 30 000 pour le seul XSS et plus de 14 000 pour l'injection SQL, selon l'OWASP. Parade : séparer les données du code (requêtes préparées), encoder les sorties selon leur contexte, valider les entrées.

A06:2025, Conception non sécurisée. Le code fait exactement ce qu'on lui a demandé, mais ce qu'on lui a demandé est dangereux : aucune limite au nombre de réinitialisations de mot de passe, question secrète comme seul moyen de récupération, montant négatif accepté, étape de validation contournable. Une implémentation parfaite ne corrige pas une conception défaillante. Parade : modéliser les menaces, écrire des exigences de sécurité, tester les cas d'abus.

A07:2025, Défaillances d'authentification. Mots de passe faibles acceptés, force brute et réutilisation de mots de passe volés (credential stuffing) non freinées, session qui ne change pas après la connexion, jeton sans expiration, récupération de mot de passe faible, absence de double authentification sur les comptes sensibles. Parade : limitation des tentatives, MFA, sessions et jetons bien gérés.

A08:2025, Défaillances d'intégrité des logiciels ou des données. Du code ou des données sont utilisés sans vérifier leur provenance : script chargé depuis un CDN sans attribut integrity, mise à jour téléchargée sans signature, objet désérialisé depuis une source non fiable, cookie de rôle non signé. Parade : signatures, contrôles d'intégrité, pipeline protégé.

A09:2025, Défaillances de journalisation et d'alerte. Les connexions, les échecs d'autorisation et les erreurs ne sont pas enregistrés, ou ils le sont sans que personne ne les lise. L'attaque dure des mois sans être détectée. Le nom 2025 insiste sur l'alerte : un journal que personne ne surveille ne protège rien. Parade : journaliser les événements de sécurité, centraliser, définir des seuils d'alerte.

A10:2025, Mauvaise gestion des conditions exceptionnelles. L'application n'anticipe pas une erreur, ne la détecte pas ou y réagit mal : exception non attrapée qui fait tomber le serveur, contrôle qui laisse passer en cas d'erreur (fail open), transaction interrompue à moitié, message d'erreur qui révèle la structure de la base. Parade : attraper les erreurs là où elles se produisent, échouer en refusant (fail closed), annuler complètement une transaction interrompue, gestionnaire d'erreurs global.

Les autres référentiels de l'OWASP

Le Top 10 vise les applications web. L'OWASP publie d'autres listes et d'autres outils que tu croiseras dans les sujets et en entreprise.

RéférentielÀ quoi il sert
API Security Top 10 (édition 2023)Les dix risques propres aux API : autorisation au niveau des objets (BOLA), des propriétés et des fonctions, consommation illimitée de ressources… (chapitre 13)
Mobile Top 10 (édition 2024)Les risques des applications mobiles : identifiants mal utilisés, stockage non sécurisé, communication non sécurisée… (chapitre 13)
ASVS (Application Security Verification Standard)Une liste d'exigences vérifiables, organisée en trois niveaux, pour spécifier ou auditer la sécurité d'une application. C'est le référentiel à citer pour « vérifier la conformité à un standard »
Cheat Sheet SeriesDes fiches pratiques par sujet : stockage des mots de passe, prévention des XSS, sessions, JWT…
WSTG (Web Security Testing Guide)Le guide méthodologique des tests d'intrusion web
ZAPUn scanner de vulnérabilités web gratuit, aujourd'hui maintenu sous le nom ZAP by Checkmarx (chapitre 14)
Juice ShopUne boutique en ligne volontairement vulnérable pour s'entraîner légalement

Utiliser le Top 10 comme grille d'audit

Face à une application inconnue, ou à un extrait de code dans un sujet, passe les dix catégories comme une liste de contrôle. Pour chacune, une question.

CatégorieLa question à te poser
A01Chaque route vérifie-t-elle le rôle et le propriétaire de la donnée, côté serveur ?
A02Que voit un attaquant en cas d'erreur ? Reste-t-il des comptes, des pages ou des réglages par défaut ?
A03Les dépendances sont-elles inventoriées, à jour, sans CVE connue ?
A04Les mots de passe sont-ils hachés avec un algorithme lent et salé ? Tout passe-t-il en HTTPS ?
A05Une saisie est-elle collée dans une requête, une commande ou une page sans préparation ni encodage ?
A06Que se passe-t-il si quelqu'un utilise la fonctionnalité de travers : montant négatif, étape sautée, mille appels ?
A07Peut-on essayer des mots de passe sans limite ? Les sessions et les jetons expirent-ils ?
A08Le code et les données chargés de l'extérieur sont-ils vérifiés ?
A09Une tentative d'intrusion laisserait-elle une trace ? Quelqu'un serait-il prévenu ?
A10Que fait le code quand une exception survient pendant un contrôle ?

Exercice 1 sur 3 Ranger chaque faille dans le Top 10 2025 Réussi À revoir

Donne le code de la catégorie 2025 de chaque faille.

  1. La page de recherche affiche Aucun résultat pour <script>…</script> et le script s'exécute.
  2. L'API accepte PATCH /api/fiches/18/valider envoyé par un visiteur.
  3. Le projet utilise une version de la bibliothèque axios touchée par une CVE de gravité élevée.
  4. En cas d'erreur, la page affiche la requête SQL complète et le nom des tables.
  5. L'application télécharge l'image dont l'utilisateur fournit l'URL et peut ainsi atteindre http://169.254.169.254/.
  6. Les mots de passe sont stockés en SHA-1, sans sel.
  7. Le contrôle des droits est dans un try, et le catch renvoie true.
  8. Aucun événement de connexion n'est enregistré.
Voir la réponseMasquer la réponse de l'exercice 1
  1. A05:2025 Injection (XSS réfléchie, CWE-79).
  2. A01:2025 Contrôle d'accès défaillant : contrôle de fonction absent.
  3. A03:2025 Chaîne d'approvisionnement logicielle (ex-A06:2021 Composants vulnérables).
  4. A02:2025 Mauvaise configuration : erreurs non gérées de façon centralisée, détails exposés. On peut ajouter A10:2025, car l'erreur est mal gérée ; la catégorie principale reste A02.
  5. A01:2025 : la SSRF y est rattachée depuis 2025 (c'était A10:2021).
  6. A04:2025 Défaillances cryptographiques.
  7. A10:2025 Mauvaise gestion des conditions exceptionnelles : le contrôle « échoue ouvert ».
  8. A09:2025 Défaillances de journalisation et d'alerte.

Tu avais trouvé ?

Exercice 2 sur 3 Traduire une ancienne numérotation Réussi À revoir

Un rapport d'audit de 2023 classe ses constats ainsi : « A03 Injection (2 constats), A06 Vulnerable and Outdated Components (5 constats), A10 SSRF (1 constat) ». Réécris le classement avec l'édition 2025.

Voir la réponseMasquer la réponse de l'exercice 2
  • A03:2021 Injection devient A05:2025 Injection (2 constats).
  • A06:2021 Composants vulnérables devient A03:2025 Défaillances de la chaîne d'approvisionnement logicielle (5 constats).
  • A10:2021 SSRF est rattachée à A01:2025 Contrôle d'accès défaillant (1 constat).

Tu avais trouvé ?

Exercice 3 sur 3 Défaut de conception ou défaut d'implémentation ? Réussi À revoir

Pour chaque cas, dis s'il s'agit d'une conception non sécurisée (A06) ou d'une erreur d'implémentation relevant d'une autre catégorie.

  1. La fonctionnalité « mot de passe oublié » demande seulement le nom de jeune fille de la mère.
  2. La requête de connexion concatène le login saisi dans le SQL.
  3. Un visiteur peut déclarer 900 nuits d'hôtel dans un mois de 31 jours.
  4. La route de validation oublie d'appeler le middleware de rôle, alors que la spécification le demandait.
Voir la réponseMasquer la réponse de l'exercice 3
  1. Conception (A06) : même parfaitement codée, une question secrète dont la réponse se trouve sur les réseaux sociaux est une mauvaise méthode de récupération.
  2. Implémentation : injection, A05.
  3. Conception (A06) : aucune règle métier ne borne la quantité. Le code fait ce qu'on lui a demandé.
  4. Implémentation : la spécification était bonne, le code ne la respecte pas. C'est un contrôle d'accès défaillant, A01.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Contrôle d'accès défaillant (A01) : IDOR, droits et SSRFRevoir le sommaire du cours