×

Comprendre OWASP Top 10 et CWE Top 25 : Les Indispensables de la Sécurité Logicielle

Dans le monde complexe de la cybersécurité, identifier et comprendre les vulnérabilités est une tâche primordiale pour tout développeur, architecte de sécurité ou auditeur. Deux ressources se distinguent comme des références incontournables : l'OWASP Top 10 et la liste CWE Top 25 (MITRE). Bien qu'elles visent toutes deux à améliorer la sécurité logicielle, elles ont des approches et des portées différentes. Explorons-les en détail.

L'OWASP Top 10 : Les Risques les Plus Critiques des Applications Web

L'OWASP (Open Worldwide Application Security Project) est une fondation à but non lucratif dédiée à l'amélioration de la sécurité logicielle. L'OWASP Top 10 est un document de sensibilisation largement reconnu qui met en lumière les dix risques de sécurité les plus critiques pour les applications web. Publiée généralement tous les trois ou quatre ans, la dernière version date de 2021, et une mise à jour est attendue pour 2025.

Objectif et Nature

  • Portée : Spécifiquement axée sur les applications web et leurs API.
  • Public Cible : Principalement les développeurs, les architectes d'applications et les professionnels de la sécurité des applications web.
  • Méthodologie : Basée sur des données agrégées provenant d'analyses de sécurité réelles, de vulnérabilités signalées et de l'expertise de la communauté. Elle classe les risques par impact et exploitabilité.
  • Rôle : Sert de point de départ pour les organisations pour améliorer leur posture de sécurité, en se concentrant sur les problèmes les plus courants et les plus impactants. C'est un document de sensibilisation et de priorisation.

Les 10 Catégories de l'OWASP Top 10 (2021)

  1. A01:2021 - Broken Access Control (Contrôle d'accès défaillant) : Les restrictions sur ce que les utilisateurs authentifiés peuvent faire ne sont pas correctement appliquées.
  2. A02:2021 - Cryptographic Failures (Défaillances cryptographiques) : Défaut lié à la cryptographie qui expose des données sensibles ou des systèmes. Anciennement "Sensitive Data Exposure".
  3. A03:2021 - Injection (Injections) : Des données non fiables sont envoyées à un interpréteur dans le cadre d'une commande ou d'une requête. (Ex: SQL, NoSQL, OS Command, LDAP, etc.)
  4. A04:2021 - Insecure Design (Conception non sécurisée) : Défauts de conception ou d'architecture qui exposent le système à des attaques.
  5. A05:2021 - Security Misconfiguration (Mauvaise configuration de sécurité) : Configurations par défaut non sécurisées, fonctionnalités inutiles activées, erreurs dans la configuration des en-têtes HTTP, etc.
  6. A06:2021 - Vulnerable and Outdated Components (Composants vulnérables et obsolètes) : Utilisation de bibliothèques, frameworks ou autres modules logiciels avec des vulnérabilités connues.
  7. A07:2021 - Identification and Authentication Failures (Échecs d'identification et d'authentification) : Failles liées à la gestion des identités, à l'authentification et à la gestion des sessions.
  8. A08:2021 - Software and Data Integrity Failures (Défaillances d'intégrité logicielle et des données) : Problèmes liés à l'intégrité des mises à jour logicielles, des données critiques, et des flux CI/CD.
  9. A09:2021 - Security Logging and Monitoring Failures (Échecs de journalisation et de surveillance de sécurité) : Absence de journaux adéquats, de surveillance ou de détection des incidents.
  10. A10:2021 - Server-Side Request Forgery (SSRF) (Falsification de requêtes côté serveur) : Une application web récupère une ressource distante sans valider l'URL fournie par l'utilisateur, permettant à l'attaquant de manipuler cette URL.

L'OWASP Top 10 est un excellent point de départ pour intégrer la sécurité dès les premières étapes du développement logiciel.

Le CWE Top 25 : Les Faiblesses Logicielles les Plus Dangereuses

Le CWE (Common Weakness Enumeration) est une liste gérée par la fondation MITRE, qui catégorise les types de faiblesses logicielles et matérielles. La liste CWE Top 25 Most Dangerous Software Weaknesses (les 25 faiblesses logicielles les plus dangereuses) est une compilation annuelle (la version 2024 est la plus récente) des faiblesses les plus fréquemment exploitées et ayant le plus fort impact sur la sécurité.

Objectif et Nature

  • Portée : Plus large que l'OWASP Top 10. Elle couvre les faiblesses logicielles dans divers types de logiciels, plateformes et langages de programmation (pas seulement les applications web).
  • Public Cible : Ingénieurs logiciels, architectes de sécurité, chercheurs en sécurité et développeurs qui cherchent une compréhension plus profonde des causes racines des vulnérabilités.
  • Méthodologie : La liste est générée en analysant les données de vulnérabilités réelles (comme la National Vulnerability Database - NVD) en fonction de leur fréquence d'apparition et de leur sévérité (basée sur les scores CVSS).
  • Rôle : Fournit une vue plus granulaire et technique des faiblesses, permettant d'adresser les problèmes à la source et d'améliorer la qualité globale du code.

Les 25 Catégories du CWE Top 25 (2024)

  1. CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') - Neutralisation incorrecte des entrées lors de la génération de pages web (XSS)
  2. CWE-787: Out-of-bounds Write - Écriture hors limites
  3. CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') - Neutralisation incorrecte des éléments spéciaux utilisés dans une commande SQL (Injection SQL)
  4. CWE-352: Cross-Site Request Forgery (CSRF) - Falsification de requêtes intersites
  5. CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') - Limitation incorrecte d'un chemin d'accès à un répertoire restreint (Path Traversal)
  6. CWE-416: Use After Free - Utilisation après libération
  7. CWE-78: Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') - Neutralisation incorrecte des éléments spéciaux utilisés dans une commande OS (Injection de commande OS)
  8. CWE-20: Improper Input Validation - Validation incorrecte des entrées
  9. CWE-125: Out-of-bounds Read - Lecture hors limites
  10. CWE-862: Missing Authorization - Autorisation manquante
  11. CWE-434: Unrestricted Upload of File with Dangerous Type - Téléchargement illimité de fichiers de type dangereux
  12. CWE-287: Improper Authentication - Authentification incorrecte
  13. CWE-502: Deserialization of Untrusted Data - Désérialisation de données non fiables
  14. CWE-77: Improper Neutralization of Special Elements used in a Command ('Command Injection') - Neutralisation incorrecte des éléments spéciaux utilisés dans une commande (Injection de commande)
  15. CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer - Restriction incorrecte des opérations dans les limites d'un tampon mémoire
  16. CWE-918: Server-Side Request Forgery (SSRF) - Falsification de requêtes côté serveur (SSRF)
  17. CWE-704: Incorrect Type Conversion or Cast - Conversion de type ou transtypage incorrect
  18. CWE-732: Incorrect Permission Assignment for Critical Resource - Attribution de permission incorrecte pour une ressource critique
  19. CWE-269: Improper Privilege Management - Gestion incorrecte des privilèges
  20. CWE-306: Missing Authentication for Critical Function - Authentification manquante pour une fonction critique
  21. CWE-400: Uncontrolled Resource Consumption - Consommation de ressources incontrôlée
  22. CWE-611: Improper Restriction of XML External Entity Reference - Restriction incorrecte de la référence à une entité externe XML (XXE)
  23. CWE-601: URL Redirection to Untrusted Site ('Open Redirect') - Redirection d'URL vers un site non fiable (Redirection ouverte)
  24. CWE-824: Access of Uninitialized Pointer - Accès à un pointeur non initialisé
  25. CWE-94: Improper Control of Generation of Code ('Code Injection') - Contrôle incorrect de la génération de code (Injection de code)

OWASP Top 10 vs. CWE Top 25 : Quelles Différences et Comment les Utiliser ?

Bien que les deux listes soient cruciales pour la cybersécurité, leurs différences les rendent complémentaires :

  • Portée : L'OWASP Top 10 est centrée sur les risques au niveau de l'application web, tandis que le CWE Top 25 s'intéresse aux faiblesses de code sous-jacentes qui peuvent affecter tout type de logiciel ou de système.
  • Granularité : L'OWASP Top 10 présente des catégories de risques plus larges et axées sur l'impact commercial. Le CWE Top 25, en revanche, est beaucoup plus technique et détaillé, décrivant les causes profondes des faiblesses. En fait, chaque catégorie de l'OWASP Top 10 peut être mappée à plusieurs CWEs.
  • Fréquence de mise à jour : L'OWASP Top 10 est mise à jour tous les 3-4 ans, alors que le CWE Top 25 est mis à jour annuellement.
  • Audience : L'OWASP Top 10 est idéale pour la sensibilisation des développeurs et des managers, offrant une vue d'ensemble des "big picture risks". Le CWE Top 25 est plus adapté aux ingénieurs et aux auditeurs qui effectuent des analyses de code approfondies.
Meilleure Pratique : Utiliser l'OWASP Top 10 comme guide de démarrage pour prioriser les efforts de sécurité sur les applications web, et se référer au CWE Top 25 pour une compréhension plus approfondie des causes racines et des techniques de prévention au niveau du code. Les deux sont des outils puissants qui, utilisés ensemble, offrent une défense robuste.

Conclusion : Des Outils Essentiels pour un Développement Sécurisé

Que vous soyez un développeur cherchant à écrire du code plus sûr, un professionnel de la sécurité évaluant les risques, ou une entreprise cherchant à protéger ses actifs numériques, l'OWASP Top 10 et le CWE Top 25 sont des références indispensables. Ils fournissent un cadre clair pour comprendre les menaces les plus pressantes et les meilleures pratiques pour les atténuer, contribuant ainsi à un écosystème logiciel plus sûr pour tous.