OWASP Top 10 : les plus grosses failles de sécurité des applications web
OWASP Top 10 : les plus grosses failles de sécurité des applications web
La liste du top 10 de l’OWASP est l’un des documents les plus importants pour sensibiliser aux risques sécuritaires dans le développement web. Découvrez dans cet article les failles les plus courantes et les mesures qui vous permettront de développer des applications web plus sécurisées.
Auteur / Autrice
Digicomp
Date
29.11.2022
Temps de lecture
17 Minutes
L’OWASP, acronyme de l’Open Web Application Security Project, est une organisation à but non lucratif qui publie environ tous les 3 ans une liste actualisée des 10 failles de sécurité les plus courantes et sérieuses pesant sur les applications web.
Ce top 10 des failles de sécurité, dressé et affiné depuis 2003 par des experts en sécurité du monde entier, est en libre accès.
Reconnaître – et corriger – les failles de sécurité grâce au top 10 de l’OWASP
Ce classement n’est cependant pas seulement à prendre comme une indication qui pointe sur les 10 risques les plus importants qui pèsent sur les applications web. Mais il comprend aussi des recommandations et bonnes pratiques qui permettent de refermer ces failles de sécurité.
C’est pourquoi le top 10 de l’OWASP s’adresse avant tout aux développeuses et développeurs web pour les sensibiliser aux potentielles failles de leurs applications. Le top 10 de l’OWASP doit permettre d’éviter d’emblée d’éventuelles attaques et d’échapper à des dommages et des pertes occasionnées par des personnes malveillantes.
Le top 10 2021 est le classement actuel de l’OWASP. Il existe quelques différences fondamentales avec sa version précédente, publiée en 2017. Notre formateur en cybersécurité, Yves Kraft, a consulté pour vous le document complet en anglais et explique dans cet article les failles listées au top 10 ainsi que les mesures concrètes et sécuritaires appropriées à mettre en œuvre.
Broken Access Control
Le contrôle des accès permet aux applications web de n’être accessibles qu’à un cercle limité de personnes, par exemple pour des utilisatrices et utilisateurs authentifié qui ne pourront agir qu’à un certain niveau d’autorisation. On parle de contrôle d’accès défaillant (Broken Access Control) lorsque les limitations prévues ne sont pas mises en œuvre correctement. Des personnes non autorisées ont alors accès à des données sensibles, et des pirates peuvent les modifier ou les détruire.
Les failles de sécurité les plus courantes :
Des hackers peuvent avoir accès librement à des rôles et des fonctions
Les paramètres et métadonnées peuvent être manipulés
Des cyberpirates peuvent s’octroyer des droits en se basant sur des bugs ou des défauts de conception dans la programmation
Comment y remédier :
L’application web doit être implémentée sur un serveur fiable ou par des API sans serveurs
Les utilisateurs ne doivent pas avoir accès à une nouvelle fonction avant que l’administrateur ne leur accorde expressément l’accès (Deny by Default)
Journalisez et surveillez les échecs de tentative de connexion ; les admins doivent être alertés en cas d’anomalies
Si des utilisateurs se déconnectent ou sont inactifs pendant un long laps de temps, la session doit être automatiquement invalidée
Les JSON Web Tokens sans états qui sont fournis lors de la connexion doivent avoir une durée de vie très courte
L’attaque par injection repose sur des données non fiables dans l’application web qui mènent à l’exécution de commandes. Les cybercriminels introduisent des données malveillantes et peuvent en conséquence voir, modifier et supprimer toutes les autres données – voire obtenir le contrôle du serveur.
Les formes les plus fréquentes d’injection :
SQL-Injection
Cross Site Scripting (XSS)
Code-Injection
Command-Injection
Les failles les plus courantes :
Les données venant des utilisateurs ne sont pas validées, filtrées ou nettoyées
L’interpréteur de l’application web utilise des requêtes dynamiques ou des appels non paramétrés
Des données corrompues ou hostiles sont utilisées ou concaténées
Comment y remédier :
Utilisez des API et frameworks sécurisés pour vos applications web ; évitez aussi les interpréteurs et utilisez à la place des requêtes paramétrées
Créez une validation positive des données entrées et du côté du serveur, utilisez donc une “white list” comme filtre
Utilisez des contrôles de banque de données au sein des requêtes (p. ex. LIMIT) ; en cas d’injection réussie, les données ne pourront pas être accessibles en masse
Dans cette catégorie, on retrouve les défauts au niveau du design et de l’architecture logicielle. Ces failles doivent être considérées séparément de l’implémentation. En effet : un design certes bien implémenté, mais non sécurisé, est fragile face aux attaques.
Comment y remédier :
La sécurité du design doit être intégrée le plus tôt possible lors du développement de l’application web ; exploitez le plus tôt possible les connaissances des experts en la matière
Définissez des contrôles d’accès, des logiques commerciales et des User Stories
Faites un test d’intégration pour vérifier la résistance de l’architecture
Séparer les couches système et réseau de l’application
Intégrez des bibliothèques avec des modèles sûres ou des composants prêts à l’emploi
Dans le dernier top 10 de l’OWASP, cette menace sécuritaire était encore en 9e position sous le nom de « Using Components with Known Vulnerabilities ». Malheureusement, la situation ne s’est pas améliorée depuis 2017, bien au contraire. Elle se retrouve aujourd’hui, avec un nouveau nom, en 6e position.
Les failles les plus courantes :
Les versions et les composants côté client et côté serveur ne sont pas connus
Des logiciels vulnérables, qui ne sont plus supportés ou obsolètes, sont encore utilisés
On ne recherche pas suffisamment régulièrement les vulnérabilités
Il n’y a pas de tests de compatibilité
Les configurations des composants ne sont pas sécurisées
Comment y remédier :
Supprimez les dépendances, fonctionnalités, composants, fichiers et documentations inutiles
Faites régulièrement l’inventaire des versions des composants client et serveur ainsi que de leurs dépendances. L’OWASP propose pour cela un outil adapté : le Dependency Check
N’utilisez que des sources officielles et des liens sûrs
Faites particulièrement attention aux bibliothèques et aux composants dont la maintenance n’est pas assurée et pour lesquels il n’y a plus de patchs de sécurité ou plus que d’anciennes versions
Pour compromettre un système, il suffit à la personne malveillante d’obtenir quelques accès ou l’accès administrateur. Des erreurs d’authentification sont très courantes en raison d’erreurs de design ou d’implémentation lors de la vérification des identités et des accès. Un pirate peut facilement exploiter une mauvaise authentification avec des méthodes manuelles ou des outils automatisés (listes de mots de passe).
Les failles les plus courantes :
L’application n’est pas protégée contre les attaques automatisées, des champs de connexion ou des formulaires de contact peuvent être remplis de façon automatisée
Des mots de passe faibles ou trop courants sont acceptés lors de l’enregistrement
Les mots de passe sont stockés en clair ou faiblement chiffrés
Les attaques par la force brute sont rapidement couronnées de succès parce qu’il est possible de deviner facilement les adresses email utilisées pour la connexion
Les sessions d’utilisateurs ne sont pas invalidées correctement en cas d’inactivité ou de déconnexion de l’utilisateur
Les identifiants de session sont exposés dans l’URL
Comment y remédier :
Une authentification à facteurs multiples permet d’éviter les attaques par force brute, le remplissage automatique des champs de connexion et la réutilisation de données de connexion volées
Les données de connexion standards doivent être modifiées immédiatement
Les mots de passe doivent être modifiés régulièrement
Sécurisez l’enregistrement et la récupération des données de connexion en utilisant des messages identiques et neutres. Si des personnes malveillantes reçoivent par exemple l’information « ce nom d’utilisateur est déjà attribué », elles connaissent alors une partie du puzzle et n’ont plus qu’à craquer le mot de passe.
Limitiez les tentatives de connexion suite à une tentative infructueuse ou utilisez un délai progressif entre les tentatives
L’utilisation d’un gestionnaire de connexion côté serveur, sécurisé et intégré permet d’augmenter la sécurité, car ce dernier génère des nouvelles ID de session aléatoires avec une entropie élevée après chaque connexion
Cette faille concerne les mises à jour logiciel, les données critiques et les pipelines CI/CD dont l’intégrité n’est pas vérifiée – par exemple les plug-ins, les bibliothèques ou les modules issus de sources non vérifiables ou non fiables. Les fonctions d’actualisation automatiques des applications sans vérification d’intégrité font aussi partie de cette faille.
Comment y remédier :
Utilisez des signatures numériques
N’utilisez que des bibliothèques et dépendances de sources fiables
Établissez un processus de révision des changements de code et de configuration
Mettez en œuvre une distinction, configuration et contrôle des accès fondamentaux du pipeline CI/CD
N’envoyez pas de données sérialisées non sécurisées ou non chiffrées à des clients non fiables
L’enregistrement et le contrôle sont certes difficiles à tester, mais il faut garder on œil attentif sur cette problématique. En effet, ces erreurs peuvent avoir des conséquences sur la fiabilité, la transparence, l’alerte en cas d’incidents et la criminalistique.
Les failles les plus courantes :
Les connexions, échecs de connexion ou de transactions sensibles ne sont pas journalisées
Les alertes ou les erreurs ne font l’objet que de journalisations insuffisantes ou peu claires, s’ils en font l’objet tout court
Les protocoles d’API et d’application ne sont pas contrôlés pour déceler des activités suspectes
Les protocoles ne sont stockés qu’en local
Il n’y a pas de seuil ou un seuil inefficace d’alerte ni de remontée d’information pour y répondre
Il n’est pas possible d’identifier une attaque en temps réel
Comment y remédier :
Mettez en œuvre un processus de contrôle et journalisez tout ce qui concerne la connexion
Conservez les données de journalisation suffisamment longtemps
Sauvegardez les données dans des formats supportés par les gestionnaires de logs
Une faille SSRF a lieu lorsque l’application web ne valide pas l’URL entrée par l’utilisateur lors d’une récupération de ressource distante. Une personne malveillante peut alors envoyer une requête manipulée à une destination inattendue. Étant donné qu’une récupération d’URL est un scénario courant des applications web modernes, l’incidence des failles SSRF augmente. L’accès direct de l’utilisateur à l’application et certes impossible grâce à l’authentification, mais les pirates exploitent de plus en plus le serveur web pour obtenir l’accès au système.
Comment y remédier au niveau du réseau :
Diminuez l’effet des SSRF en segmentant les fonctionnalités d’accès à distance dans des réseaux séparés
Bloquez la totalité du trafic de données à l’exception du trafic de données essentiel, utilisez le principe de « Deny By Default »
Comment y remédier au niveau de l’application :
Toutes les données d’entrée fournies doivent être nettoyées
Utilisez une “Allow List” positive
Désactivez la redirection HTTP
Apprenez à développer des applications web plus sécurisées avec Digicomp
Réduisez les failles sécuritaires lors du développement web grâce à notre formation intensive de 2 jours. Cette formation explore les méthodes actuelles d’attaque et les mesures simples pour les contrer.
Réduisez les failles sécuritaires lors du développement web grâce à notre formation intensive de 2 jours. Cette formation explore les méthodes actuelles d’attaque et les mesures simples pour les contrer.
Bonjour à tout le monde. Merci pour cet article efficace qui souligne l’importance du top 10 de l’OWASP (Open Web Application Security Project), qui est une ressource indispensable pour identifier et corriger les failles de sécurité dans les applications web. Ce classement, mis à jour tous les trois ans, est important pour les développeurs web et les professionnels de la cybersécurité univirtual, leur offrant un aperçu des vulnérabilités les plus critiques et des pratiques recommandées pour les éviter. En particulier, la gestion des contrôles d’accès est une des préoccupations majeures du top 10 de l’OWASP. Le contrôle d’accès défaillant, qui est une faille courante, peut permettre à des utilisateurs non autorisés d’accéder à des données sensibles. Pour éviter ce risque, il est essentiel de mettre en œuvre des solutions efficaces telles que des machine virtuelle univirtual sur des serveurs fiables, une gestion stricte des autorisations, et une surveillance active des tentatives de connexion. Ces mesures aident à maintenir un haut niveau de securité informatique en limitant les accès et en détectant les anomalies rapidement. L’implémentation des recommandations de l’OWASP est également fondamentale dans le contexte de la virtualisation et du cloud computing. Par exemple, en utilisant des serveur virtuel et des services managés, les entreprises peuvent améliorer leur capacité à gérer les accès et la sécurité de leurs applications. Assurer une haute disponibilité et une gestion rigoureuse des sessions et des comptes inactifs sont des pratiques clés pour sécuriser les environnements virtuels et cloud.
1 Commentaire
Bonjour à tout le monde. Merci pour cet article efficace qui souligne l’importance du top 10 de l’OWASP (Open Web Application Security Project), qui est une ressource indispensable pour identifier et corriger les failles de sécurité dans les applications web. Ce classement, mis à jour tous les trois ans, est important pour les développeurs web et les professionnels de la cybersécurité univirtual, leur offrant un aperçu des vulnérabilités les plus critiques et des pratiques recommandées pour les éviter. En particulier, la gestion des contrôles d’accès est une des préoccupations majeures du top 10 de l’OWASP. Le contrôle d’accès défaillant, qui est une faille courante, peut permettre à des utilisateurs non autorisés d’accéder à des données sensibles. Pour éviter ce risque, il est essentiel de mettre en œuvre des solutions efficaces telles que des machine virtuelle univirtual sur des serveurs fiables, une gestion stricte des autorisations, et une surveillance active des tentatives de connexion. Ces mesures aident à maintenir un haut niveau de securité informatique en limitant les accès et en détectant les anomalies rapidement. L’implémentation des recommandations de l’OWASP est également fondamentale dans le contexte de la virtualisation et du cloud computing. Par exemple, en utilisant des serveur virtuel et des services managés, les entreprises peuvent améliorer leur capacité à gérer les accès et la sécurité de leurs applications. Assurer une haute disponibilité et une gestion rigoureuse des sessions et des comptes inactifs sont des pratiques clés pour sécuriser les environnements virtuels et cloud.