OWASP Top 10 ou les 10 vulnérabilités à connaître
Tu as sûrement déjà entendu parler d’injections SQL mais est-ce que tu connais les 9 autres vulnérabilités les plus fréquentes ?
Avant de commencer, je tenais à vous remercier pour les super taux d’ouverture de cette newsletter (plus de 50% pour chaque édition) 🙏🏻
Mais pour aider encore plus de PM à comprendre la tech j’ai besoin de vous 🫵🏻
Alors n’hésitez pas à partager la publication que ce soit sur Linkedin à votre réseau, sur Slack à vos collègues ou même sur What’s App à vos amis 🫠
Commençons par expliquer le concept à ta grand-mère
Imagine que tu as une maison avec plein de portes. Certaines portes sont faciles à ouvrir par n’importe qui, ce qui peut permettre aux voleurs d’entrer. L’OWASP Top 10, c’est comme une liste de ces portes vulnérables : elle te montre où il est important de mettre des serrures solides pour protéger ta maison et garder les voleurs à l’extérieur.
Let’s dive in !
L'OWASP Top 10 est une liste des dix principales vulnérabilités de sécurité pour les applications web, élaborée par l'Open Web Application Security Project (OWASP), une ONG américaine reconnue pour ses recommendations. Ce top 10 fait aujourd’hui référence et est utilisé apr de nombreux cabinets d’audits.
A01 — Broken Access Control (Contrôle d'accès défaillant)
Description : Le contrôle d'accès défaillant permet aux utilisateurs d'accéder à des ressources ou des fonctionnalités auxquelles ils ne devraient pas avoir accès. Cela inclut des actions telles que la modification de comptes d'autres utilisateurs, la visualisation de données sensibles et l'exécution de tâches administratives.
Exemple : Un utilisateur non administrateur parvient à accéder à une page d'administration et à modifier les paramètres du site.
Potentiel impact : Une défaillance de contrôle d'accès peut conduire à des violations de données, à des atteintes à la confidentialité et à l'intégrité des informations, et à des actions non autorisées sur l'application.
A02 — Cryptographic Failures (Défaillances cryptographiques)
Description : Les défaillances cryptographiques surviennent lorsque les données sensibles ne sont pas correctement protégées par des méthodes de chiffrement adéquates. Cela inclut l'utilisation de protocoles de chiffrement obsolètes, la gestion incorrecte des clés et le stockage non sécurisé des données.
Exemple : Utilisation du protocole HTTP au lieu de HTTPS pour la transmission de données sensibles.
Potentiel impact : Les défaillances cryptographiques peuvent entraîner la divulgation de données sensibles telles que des mots de passe, des informations financières et des données personnelles, exposant ainsi les utilisateurs à des risques de fraude et de vol d'identité.

Cet exemple d'échec cryptographique montre comment un attaquant exploite des mesures de chiffrement faibles pour voler des données sensibles.
A03 — Injection (Injection)
Description : Les attaques par injection surviennent lorsque des données non fiables sont envoyées à un interpréteur dans le cadre d'une commande ou d'une requête. Cela permet à un attaquant d'exécuter des commandes malveillantes, de voler des données ou de modifier la base de données.
Exemple : Une injection SQL permet à un attaquant de manipuler les requêtes de la base de données pour accéder ou modifier des données. C’est pour cela que tout input dans votre application doit-être sécurisé pour éviter les injections de code.
Potentiel impact : Les attaques par injection peuvent entraîner des violations de données, des pertes de données, des modifications non autorisées de données et un accès non autorisé à des informations sensibles.

Ce graphique montre comment un attaquant peut facilement voler tous les mots de passe stockés dans une base de données à l'aide d'une injection de code.
A04 — Insecure Design (Conception non sécurisée)
Description : Une conception non sécurisée signifie que l'application n'a pas été construite en tenant compte des principes de sécurité dès le départ. Cela inclut l'absence de validation des entrées utilisateur, des contrôles d'accès faibles et des flux de travail vulnérables.
Exemple : Absence de mesures de validation des entrées, permettant à des données malveillantes de compromettre l'application.
Potentiel impact : Les vulnérabilités de conception peuvent conduire à une exposition accrue aux attaques, à une mauvaise gestion des erreurs et à une sécurité générale affaiblie de l'application.
A05 — Security Misconfiguration (Mauvaise configuration de la sécurité)
Description : Les mauvaises configurations de sécurité surviennent lorsque les paramètres de sécurité ne sont pas correctement définis ou maintenus. Cela inclut des configurations par défaut non sécurisées, des comptes de test ou de développement actifs en production, et des messages d'erreur détaillés exposant des informations sensibles.
Exemple : Serveur web de production configuré pour afficher les messages d'erreur détaillés avec des informations de déboggage.
Potentiel impact : Les mauvaises configurations de sécurité peuvent être facilement exploitées par des attaquants pour obtenir des informations sensibles, compromettre les systèmes et mener des attaques plus sophistiquées.

Exemple de scénario d'attaque par mauvaise configuration de la sécurité dans lequel l'attaquant parvient à prendre le contrôle de tous les dispositifs vulnérables en utilisant les informations d'identification par défaut.
A06 — Vulnerable and Outdated Components (Composants vulnérables et obsolètes)
Description : L'utilisation de bibliothèques, frameworks et autres composants logiciels obsolètes ou vulnérables peut introduire des failles de sécurité dans l'application. Les vulnérabilités connues dans ces composants peuvent être exploitées par des attaquants.
Exemple : Utilisation d'une version obsolète de jQuery avec des vulnérabilités connues.
Potentiel impact : Les composants vulnérables peuvent permettre aux attaquants d'exploiter des failles pour compromettre l'application, voler des données et perturber les services.

Exemple de la manière dont un attaquant peut exploiter les failles du système pour injecter des codes malveillants
A07 — Identification and Authentication Failures (Défaillances d'identification et d'authentification)
Description : Les défaillances dans les mécanismes d'identification et d'authentification permettent aux attaquants de compromettre des comptes utilisateurs. Cela inclut les mots de passe faibles, l'absence de multifactoriel, et les sessions non sécurisées.
Exemple : Mots de passe stockés en texte clair dans la base de données.
Potentiel impact : Les défaillances d'authentification peuvent entraîner des prises de contrôle de comptes, des violations de données et des accès non autorisés à des informations sensibles.

Ce graphique montre un exemple d'attaque automatisée (par des bots) contre des systèmes dont la gestion et la protection des mots de passe sont médiocres.
A08 — Software and Data Integrity Failures (Défaillances d'intégrité logicielle et des données)
Description : Les défaillances d'intégrité surviennent lorsque les logiciels ou les données sont compromis pendant leur transport ou leur stockage. Cela peut inclure des mises à jour non sécurisées, des bibliothèques tierces compromises et des manipulations malveillantes.
Exemple : Téléchargement et utilisation de bibliothèques de code provenant de sources non vérifiées.
Potentiel impact : Les défaillances d'intégrité peuvent entraîner l'exécution de code malveillant, des corruptions de données et une compromission générale de la sécurité de l'application.

Cet exemple montre comment un attaquant accède au réseau de la victime en exploitant une intégration continue et une livraison continue non sécurisées.
A09 — Security Logging and Monitoring Failures (Défaillances de journalisation et de surveillance de la sécurité)
Description : L'absence de journalisation et de surveillance adéquate des événements de sécurité empêche la détection rapide et la réponse aux incidents de sécurité. Cela inclut des journaux incomplets, des alertes manquantes et une surveillance insuffisante.
Exemple : Absence de journaux pour les tentatives de connexion échouées ou les modifications de paramètres critiques.
Potentiel impact : Les défaillances de journalisation et de surveillance retardent la détection des attaques, limitent la capacité de réponse et augmentent le risque de violations prolongées.

Un exemple montrant comment une faille de sécurité peut passer inaperçue en raison d'un manque de logs et de surveillance de la sécurité.
A10 — Server-Side Request Forgery ( Falsification de requête côté serveur )
Description : Les attaques SSRF se produisent lorsque l'application web effectue des requêtes non sécurisées à des domaines arbitraires. Les attaquants exploitent cette vulnérabilité pour accéder à des ressources internes non autorisées, telles que des services internes ou des métadonnées de serveur.
Exemple : Exploitation d'une fonctionnalité de téléchargement de fichiers pour envoyer des requêtes à des services internes sensibles.
Potentiel impact : Les attaques SSRF peuvent entraîner un accès non autorisé aux serveurs internes, à des informations sensibles, et peuvent servir de point de pivot pour d'autres attaques.

Le graphique montre comment un serveur vulnérable peut être exploité par un pirate pour accéder à des données sensibles.
Envie d’aller encore plus en détails ? Retrouve toutes les informations sur le site de l’OWASP.
Et d’un point de vue Product ?
En tant que Product Manager, vous êtes également responsable de la sécurisation de votre produit. Connaître l’OWASP Top 10 vous permet de comprendre les principales menaces auxquelles votre application peut être confrontée. Cela vous donne les clés pour entamer une discussion éclairée avec vos développeurs sur les mesures de sécurité à mettre en place.
Discutez avec vos développeurs : vous découvrirez peut-être que votre application a déjà subi plusieurs attaques, et j'espère qu'elle y a résisté. Pour maintenir ce niveau de sécurité, il est essentiel de consacrer du temps de développement à l'amélioration continue de la sécurité de votre application. Pensez également à passer des audits de sécurité réguliers pour vous assurer que vous avez fait le maximum pour protéger votre produit.