OWASP Top 10 2025 : ce qui change, chiffres à l'appui
par detektd team

L'OWASP Top 10 est la liste de référence des risques de sécurité des applications web. Elle sert de base aux audits, aux cahiers des charges et à une bonne partie des formations de développeurs. L'édition 2025, présentée le 6 novembre 2025, est la première mise à jour depuis 2021. Elle s'appuie sur des données fournies par des éditeurs d'outils de test et des cabinets d'audit, couvrant plus de 2,8 millions d'applications.
d'applications analysées pour construire le classement 2025, sur 589 types de faiblesses (CWE) étudiés (OWASP)
Comment le classement est construit
Les données couvrent 589 CWE (le catalogue standard des types de faiblesses logicielles), dont 248 sont finalement regroupés dans les dix catégories. Huit catégories sont choisies à partir des données : leur fréquence dans les applications testées, croisée avec un score d'exploitabilité et d'impact calculé sur les CVE correspondantes. Les deux autres, A03 et A09, sont portées par un sondage auprès des praticiens, pour faire remonter des risques que les outils automatiques mesurent encore mal.
- A01 Contrôle d'accès défaillant : reste premier, absorbe désormais le SSRF.
- A02 Mauvaise configuration de sécurité : monte de la 5e à la 2e place.
- A03 Défaillances de la chaîne d'approvisionnement logicielle : nouvelle, elle élargit l'ancienne catégorie « composants vulnérables et obsolètes ».
- A04 Défaillances cryptographiques : descend de la 2e à la 4e place.
- A05 Injection : descend de la 3e à la 5e place.
- A06 Conception non sécurisée : descend de la 4e à la 6e place.
- A07 Défaillances d'authentification : même rang, nom simplifié.
- A08 Défaillances d'intégrité des logiciels et des données : inchangée.
- A09 Défaillances de journalisation et d'alerte : même rang, l'accent passe de la surveillance à l'alerte.
- A10 Mauvaise gestion des conditions exceptionnelles : nouvelle.
A01 : le contrôle d'accès, toujours en tête
La catégorie regroupe 40 CWE et cumule 1 839 701 occurrences dans les données, pour 32 654 CVE associées. En moyenne, 3,74 % des applications testées présentent au moins une de ces faiblesses, et jusqu'à 20,15 % selon la source de données. L'intégration du SSRF (CWE-918) acte une idée simple : laisser le serveur appeler une URL fournie par l'utilisateur revient à lui prêter les droits réseau du serveur.
La forme la plus courante est aussi la plus simple : une route qui renvoie un objet à partir de son identifiant sans vérifier qu'il appartient à l'utilisateur connecté (IDOR, ou BOLA dans le vocabulaire des API). L'authentification fonctionne, mais l'autorisation n'existe pas.
// app/api/invoices/[id]/route.ts
export async function GET(_req: Request, { params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
const user = await requireUser(); // authenticated...
// Vulnerable: any logged-in user can read any invoice by changing the id
// const invoice = await db.invoice.findUnique({ where: { id } });
// Fixed: the query itself enforces ownership, and a miss looks like a 404
const invoice = await db.invoice.findFirst({ where: { id, ownerId: user.id } });
if (!invoice) return new Response(null, { status: 404 });
return Response.json(invoice);
}A02 : la configuration passe deuxième
La mauvaise configuration (16 CWE, 719 084 occurrences) touche en moyenne 3 % des applications testées, et jusqu'à 27,70 % dans certaines sources : le taux maximal le plus élevé du classement. L'OWASP l'explique par la place croissante de la configuration dans le comportement d'une application moderne. Les scénarios cités sont concrets : comptes par défaut restés actifs sur une console d'administration, listing de répertoires activé, traces d'erreur détaillées renvoyées aux visiteurs, stockage cloud ouvert à Internet par défaut.
des applications présentent une mauvaise configuration de sécurité dans la source de données la plus touchée, le taux le plus élevé du Top 10 2025 (OWASP)
A03 et A10 : les deux nouvelles venues
A03 remplace « composants vulnérables et obsolètes » par une notion plus large : la chaîne d'approvisionnement logicielle dans son ensemble, c'est-à-dire les dépendances, mais aussi les outils de build, les pipelines CI/CD et les registres de paquets. Sa place vient en partie du sondage des praticiens, et colle à l'actualité : vers npm comme Shai-Hulud, compte de mainteneur détourné sur axios.
A10 regroupe 24 CWE sur la gestion des situations anormales, avec 769 581 occurrences. Deux d'entre elles concernent directement le web : CWE-209, un message d'erreur qui révèle des informations sensibles (requête SQL, chemin de fichier, version de framework), et CWE-636, l'échec « ouvert », quand une erreur laisse le système dans un état plus permissif qu'avant.
// Fails open: if the permission service times out, everyone is allowed
async function canAccess(user: User, doc: Doc) {
try {
return await permissions.check(user.id, doc.id);
} catch {
return true;
}
}
// Fails closed: an error denies access and is logged, never shown
async function canAccess(user: User, doc: Doc) {
try {
return await permissions.check(user.id, doc.id);
} catch (err) {
logger.error({ err, userId: user.id, docId: doc.id }, "permission check failed");
return false;
}
}Comment s'en servir
Le Top 10 n'est pas une norme de conformité ni une liste exhaustive : c'est un outil de sensibilisation et de priorisation. Pour vérifier une application point par point, l'OWASP renvoie vers l'ASVS (Application Security Verification Standard). Le classement reste utile pour décider par où commencer : les trois premières catégories concentrent l'essentiel de ce qu'un attaquant trouve sur une application web exposée.
Ce que detektd couvre du Top 10
Un scan externe ne voit pas tout (la conception ou la journalisation se vérifient de l'intérieur), mais une grande partie du classement se teste depuis Internet. detektd vérifie notamment l'accès à des objets d'autres utilisateurs, CORS et SSRF (A01), en-têtes, fichiers exposés, listing de répertoires et consoles d'administration (A02), dépendances vulnérables, scripts tiers sans SRI et hôtes de scripts orphelins (A03), TLS et certificats (A04), injections SQL, NoSQL et XSS (A05), JWT faibles et cookies de session mal protégés (A07), et les messages d'erreur trop bavards (A10).

DBIR 2026 : l'exploitation de failles devient la première porte d'entrée
Dans le rapport annuel de Verizon, l'exploitation de vulnérabilités explique 31 % des intrusions, devant le phishing et les identifiants volés. Dans le même temps, les entreprises n'ont entièrement corrigé que 26 % des failles activement exploitées, en 43 jours médians. Ce que ça implique pour une application web exposée.

Certificats TLS : de 398 à 47 jours, le renouvellement manuel a vécu
Depuis le 15 mars 2026, un certificat public ne peut plus dépasser 200 jours. Ce sera 100 jours en 2027 et 47 jours en 2029, et Let's Encrypt descendra à 45 jours dès 2028. Le calendrier, les raisons, et ce qu'il faut automatiser pour qu'un certificat expiré ne coupe plus jamais votre site.