Objectifs du module :

Ce module a pour but d'aider les développeurs à mieux comprendre les vulnérabilités critiques mises en avant par l'OWASP, à savoir l’Open Web Application Security Project. Les participants apprendront à détecter ces vulnérabilités dans leur code, à les comprendre en détail et à appliquer des pratiques de prévention pour minimiser les risques de sécurité.

Les objectifs spécifiques sont les suivants :

  • Comprendre les vulnérabilités les plus critiques identifiées par l'OWASP.
  • Explorer en détail chaque vulnérabilité du Top 10 en termes de fonctionnement, d'impact et de prévention.
  • Apprendre à détecter ces vulnérabilités dans le code.
  • Mettre en œuvre des pratiques efficaces pour réduire ces risques dès le développement.

1. Introduction à l'OWASP et au Top 10 des vulnérabilités

OWASP

L’Open Web Application Security Project (OWASP) est une communauté internationale dédiée à la sécurité des logiciels. Cette organisation produit des ressources essentielles pour les développeurs, et l'une des plus connues est le OWASP Top 10, une liste régulièrement mise à jour qui identifie les vulnérabilités de sécurité les plus critiques dans les applications web.

Le OWASP Top 10

Cette liste de vulnérabilités est un outil de référence pour tous les développeurs de logiciels, car elle met en lumière les menaces les plus courantes qui touchent le monde des applications web. Elle est conçue pour sensibiliser les développeurs aux problèmes de sécurité les plus graves et pour encourager l'adoption des meilleures pratiques pour y remédier.

Importance pour les développeurs

La compréhension des concepts du Top 10 est cruciale. En effet, ces vulnérabilités sont souvent à l'origine d'incidents graves tels que des fuites de données, des compromissions de comptes ou des intrusions dans les systèmes. Appliquer les principes de sécurité de l'OWASP aide à éviter ces risques majeurs.

2. Explication détaillée des vulnérabilités du Top 10 OWASP

Voici un aperçu des 10 vulnérabilités critiques définies par l'OWASP, avec une explication détaillée de chacune :

A01:2021 - Failures in Access Control (Échec des contrôles d'accès)

Les contrôles d'accès mal implémentés permettent à des utilisateurs non autorisés d’accéder à des données sensibles ou de réaliser des actions non autorisées.

  • Exemple : Un utilisateur peut accéder à une page d'administration en modifiant simplement l'URL.
  • Prévention :
    • Centraliser les contrôles d'accès.
    • Valider systématiquement les autorisations côté serveur.
    • Appliquer le principe du moindre privilège par défaut.

A02:2021 - Cryptographic Failures (Échecs cryptographiques)

Les vulnérabilités cryptographiques se manifestent lorsque des données sensibles, comme les mots de passe, ne sont pas protégées par des algorithmes de chiffrement robustes.

  • Exemple : Stockage de mots de passe en clair dans une base de données.
  • Prévention :
    • Utiliser des algorithmes de chiffrement solides (comme AES).
    • Toujours chiffrer les données sensibles.
    • Assurer un transport sécurisé des données via TLS/SSL.

A03:2021 - Injection (SQL, NoSQL, OS Command Injection)

Les attaques par injection surviennent lorsque des données malveillantes sont introduites dans une application via des entrées non sécurisées, modifiant ainsi l’exécution du code.

  • Exemple : SQL Injection, où une requête SQL est manipulée pour exposer des données non autorisées.
  • Prévention :
    • Utiliser des requêtes préparées.
    • Valider et filtrer toutes les entrées utilisateur.
    • Limiter les permissions des bases de données.

A04:2021 - Insecure Design (Conception non sécurisée)

Les failles de conception exposent les applications à des attaques en raison de choix architecturaux inadéquats ou d’un manque de mécanismes de sécurité.

  • Exemple : Absence d’authentification robuste dans les processus de conception.
  • Prévention :
    • Appliquer une approche "Security by Design".
    • Procéder à des analyses de risques dès les premières phases de conception.

A05:2021 - Security Misconfiguration (Mauvaise configuration de la sécurité)

Des configurations mal ajustées, que ce soit pour des serveurs, bases de données ou services, peuvent exposer l'application à des attaques.

  • Exemple : Un serveur avec des informations de connexion par défaut non modifiées.
  • Prévention :
    • Désactiver les fonctionnalités inutiles.
    • Mettre à jour et configurer correctement les systèmes.

A06:2021 - Vulnerable and Outdated Components (Composants vulnérables ou obsolètes)

Utiliser des composants ou des bibliothèques obsolètes expose l'application à des vulnérabilités déjà connues.

  • Exemple : Utilisation d’une version vulnérable de Log4j.
  • Prévention :
    • Mettre à jour régulièrement les composants.
    • Scanner les dépendances à l’aide d’outils d’audit comme Snyk ou Dependabot.

A07:2021 - Identification and Authentication Failures (Échecs d'identification et d'authentification)

Les failles d’authentification permettent aux attaquants de contourner les systèmes de connexion, compromettant ainsi des comptes utilisateurs.

  • Exemple : Utilisation de mots de passe faibles.
  • Prévention :
    • Mettre en place une authentification robuste (ex. 2FA).
    • Interdire les mots de passe faibles et mettre en place une bonne gestion des sessions.

A08:2021 - Software and Data Integrity Failures (Intégrité des logiciels et des données)

Lorsque l’intégrité du logiciel ou des données n’est pas vérifiée, cela ouvre la porte à des attaques.

  • Exemple : Téléchargement de mises à jour non sécurisées, permettant l’injection de code malveillant.
  • Prévention :
    • Utiliser des signatures numériques pour valider les mises à jour.
    • Scanner les dépendances.

A09:2021 - Security Logging and Monitoring Failures (Échecs de journalisation et de surveillance)

Sans surveillance efficace et sans journalisation des actions critiques, les attaques peuvent passer inaperçues.

  • Exemple : Absence de logs permettant de retracer une attaque après un incident.
  • Prévention :
    • Implémenter une journalisation pour toutes les actions sensibles.
    • Mettre en place une surveillance active.

A10:2021 - Server-Side Request Forgery (SSRF)

Cette vulnérabilité permet à un attaquant d'utiliser le serveur pour envoyer des requêtes à des systèmes non autorisés.

  • Exemple : Faire des requêtes à des serveurs internes non protégés via une URL manipulée.
  • Prévention :
    • Restreindre les requêtes sortantes.
    • Valider toutes les URLs d’entrée.

Vidéo de Charles Decode:

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee