Les vulnérabilités résultant d'une mauvaise configuration ou de l'utilisation decomposants obsolètes peuvent offrir aux attaquants une porte ouverte pour compromettre non seulement les applications elles-mêmes mais aussi les données sensibles qu'elles gèrent.
Découvrez un cas d’attaque
En 2023, une vague de cyberattaques a ciblé les serveurs VMware ESXi, exploitant une vulnérabilité spécifique identifiée sous le nom CVE-2021-21974. Cette faille, découverte presque deux ans auparavant, était une vulnérabilité de type dépassement de tas (heap-overflow en anglais) dans les serveurs VMware ESXi. Malgré la disponibilité d'un correctif depuis près de deux ans, de nombreux serveurs n'avaient pas été mis à jour, laissant ouverte une porte d'entrée pour les cybercriminels.
Cette série d'attaques, surnommée "ESXiArgs", a ciblé des serveurs VMware ESXi non patchés dans le monde entier. L'exploitation de la CVE-2021-21974 a permis l'exécution de code à distance, ce qui a rendu possible le déploiement d'un ransomware. Ce ransomware, déployé via la faille, a entraîné le chiffrement des données, causant d'importants dégâts et perturbations pour les entreprises et les organisations touchées.
Identifiez les différentes formes de mauvaises configuration de sécurité
Dans le développement web, une attention méticuleuse est requise non seulement pour écrire un code sécurisé, mais également pour s'assurer que les composants et configurations utilisés sont à jour et correctement configurés.
Voyons ensemble les formes de mauvaises configuration de sécurité les plus fréquentes :
1. Le durcissement insuffisant des couches applicatives
Premièrement, il est crucial de s'assurer que toutes les couches de votre application ont subi un processus de durcissement de sécurité adéquat.
Pensez aux multiples couches de votre application comme à des portes verrouillées dans un bâtiment. Si une de ces portes est laissée sans verrou, cela compromet la sécurité de tout le bâtiment. De même, des permissions mal configurées peuvent laisser des failles pour les attaquants.
2. La présence de fonctionnalités inutiles
Ensuite, il est important de maîtriser les fonctionnalités que vous souhaitez activées dans votre application. Des ports ouverts non utilisés, des services superflus, des pages ou des comptes non essentiels, sont autant de points d'entrée potentiels pour des menaces.
Pour comprendre cela, imaginez une maison avec des portes et des fenêtres inutiles. Chacune d'entre elles représente un risque de sécurité supplémentaire et doit être éliminée ou sécurisée.
3. Traitement des erreurs et fuites d'informations
Imaginez que vous gérez un site web hébergé sur un serveur Apache. Un jour, un utilisateur rencontre une erreur et le serveur renvoie un message d'erreur détaillé, qui inclut non seulement la nature de l'erreur, mais aussi la version exacte d'Apache utilisée - disons Apache 2.4.49.
À première vue, cela peut sembler inoffensif, voire utile pour le débogage. Cependant, en révélant la version spécifique du serveur Apache, vous avez involontairement donné un indice précieux à un attaquant potentiel. Avec cette information, l'attaquant peut rechercher des vulnérabilités connues spécifiques à cette version d'Apache.
Voyons cela ensemble avec l’exemple de cette version 2.4.49 d’Apache dans le point 4.
4. Composants logiciels vulnérables et obsolètes
Il est crucial de comprendre et de gérer efficacement les vulnérabilités qui peuvent affecter les systèmes et applications. C'est ici que le système CVE (Common Vulnerabilities and Exposures) entre en jeu.
Reprenons l’exemple précédent où un attaquant est en capacité de récupérer la version précise d’Apache que votre serveur web utilise.
Après quelques recherches, l’attaquant va découvrir que votre application est vulnérable à la CVE spécifique - CVE-2021-41773. Cette vulnérabilité a été identifiée dans la version d'Apache que votre serveur utilise. Un chemin incorrectement configuré pouvait permettre à un attaquant d'accéder à des fichiers en dehors de la racine du serveur web, menant potentiellement à la divulgation d'informations sensibles ou à l'exécution de code arbitraire si vous avez activé le mod_cgi.
Une telle vulnérabilité, si elle n'est pas corrigée, peut mettre en danger l'intégrité et la sécurité de l'ensemble de l'application web.
Protégez votre application grâce aux guides de bonnes pratiques
Mais comment puis-je sécuriser mon application web si j’utilise beaucoup de briques applicatives différentes ?
Face à la complexité croissante des applications web et à la diversité des briques applicatives utilisées, sécuriser efficacement son application peut sembler être un défi de taille. Heureusement, des guides de bonnes pratiques existent pour vous orienter dans cette tâche cruciale. Parmi eux, le guide d'hygiène informatique de l'ANSSI offre des conseils précieux pour renforcer la sécurité de vos systèmes. En complément, les recommandations fournies par l'OWASP, notamment à travers ses différents outils comme le Dependency Check, s'avèrent également inestimables.
Voyons comment ces ressources peuvent vous aider à sécuriser vos applications web.
Processus d'installation sécurisés
La mise en place de processus d'installation sécurisés est fondamentale. Un processus de durcissement répétable, par exemple, assure que chaque nouvel environnement déployé - que ce soit pour le développement, l'assurance qualité ou la production - soit correctement sécurisé avec une configuration verrouillée.
L'automatisation de ce processus réduit les efforts nécessaires et minimise les risques d'erreur humaine. Cela garantit un niveau de sécurité uniforme à travers tous les environnements.
Architecture d'application segmentée
Une architecture segmentée offre une séparation efficace entre les composants ou les environnements, limitant ainsi les possibilités d'attaques transversales. L'utilisation de la segmentation, de la mise en conteneurs, ou de groupes de sécurité dans le Cloud permet de créer des barrières supplémentaires contre les intrusions, renforçant la sécurité de l'ensemble du système.
Directives de sécurité et mise à jour des configurations
La mise en place de directives de sécurité, comme les en-têtes de sécurité, et la révision régulière des configurations selon les avis de sécurité (CVE), les mises à jour et les correctifs sont essentielles.
Gestion des composants et dépendances
La suppression des dépendances inutiles et l'inventaire continu des versions de composants à la fois client et serveur aident à maintenir un environnement propre et sécurisé. Des outils comme l’OWASP Dependency Check ou retire.js peuvent automatiser ce processus, facilitant la surveillance des vulnérabilités potentielles recensées dans des bases de données comme le CVE et le NVD. Il est également crucial de s'assurer que tous les composants sont obtenus à partir de sources officielles et sécurisées, et de prêter une attention particulière aux bibliothèques et composants obsolètes ou non maintenus.
Que faire si une CVE est publiée concernant une application que j’utilise ?
Lorsqu'une CVE (Common Vulnerabilities and Exposures) est publiée concernant une application que vous utilisez, il est important de prendre des mesures immédiates pour minimiser les risques de sécurité. Voici une liste d'étapes recommandées à suivre :
Informez-vous sur la CVE : Lisez la description de la CVE pour comprendre la nature de la vulnérabilité, son niveau de gravité, et les versions de l'application concernées. Les détails de la CVE sont généralement disponibles sur des sites tels que le National Vulnerability Database (NVD) ou le site du MITRE.
Consultez les recommandations du fournisseur : Les fournisseurs d'applications et les acteurs majeurs de la cybersécurité publient souvent des avis de sécurité ou des bulletins détaillant les vulnérabilités et recommandant des mesures de mitigation ou des correctifs.
Appliquez les correctifs : Si un correctif est disponible, planifiez et appliquez-le dès que possible. Assurez-vous de tester les correctifs dans un environnement de test ou de pré-production pour éviter d'introduire de nouveaux problèmes dans votre système.
Mettez en œuvre des mesures d'atténuation : Si un correctif n'est pas immédiatement disponible, ou si vous ne pouvez pas appliquer le correctif tout de suite, examinez les mesures d'atténuation recommandées par le fournisseur ou les experts en sécurité. Cela peut inclure la modification de configurations, l'isolation de composants vulnérables, ou l'application de règles de pare-feu.
Prenons un exemple avec la CVE-2021-41773 vue précédemment.
Pour protéger votre serveur contre la vulnérabilités CVE-2021-41773, il convient d'appliquer plusieurs de ces recommandations :
Si vous n’en avez pas l’utilisation, vous pouvez désactiver le mod_cgi en utilisant la commande
a2dismod cgi
.Changer la configuration de votre virtual host en ajoutant la configuration suivante :
<Directory /> Require all denied </Directory>
Cette modification va permettre de refuser l’accès par défaut.
En adoptant une approche globale et en suivant les guides de bonnes pratiques, il est possible de construire et de maintenir des applications web sécurisées, même dans un environnement composé de multiples briques applicatives.
En résumé
Une vulnérabilité spécifique peut être exploitée, soulignant l'importance de la vigilance et des mises à jour régulières.
Des outils comme les SCA permettent de s’assurer l’utilisation des dépendances afin de ne pas introduire de vulnérabilités dans l'application web.
Il est important de garder des versions à jour de ses logiciels et dépendances pour remédier aux vulnérabilités caractérisées par des CVE.
La sécurité est un processus continu nécessitant une attention constante pour protéger vos données et celles de vos utilisateurs.
Passons dans le prochain chapitre à la sécurisation des sessions utilisateurs pour éviter les détournements et maintenir l'intégrité des données.