Comment contrer les vulnérabilités critiques des applications web ?

Conseils pratiques en 3 vidéos de décryptage, fondées sur le Top 10 de l’OWASP, avec l’expert en cybersécurité Vincent Rémon.

Les années précédentes ont marqué un sombre bilan en matière d’attaques contre les applications web[1]. Ces incidents ont mis en évidence des vulnérabilités critiques susceptibles de nuire à la sécurité des données et des opérations des entreprises.

Face à cette escalade inquiétante qui pèse sur le capital applicatif, il devient impératif de s’adapter aux divers vecteurs d’attaque ciblant les applications web afin de minimiser les risques de sécurité.

A cet égard, Vincent Rémon, expert en cybersécurité, s’est donné pour mission de sensibiliser ses étudiants aux vulnérabilités critiques des applications web. Ce dernier a donc axé son cours sur les travaux de l’organisation OWASP[2], une référence en matière de sécurité des applications web. Le Top 10 de l’OWASP a été le point central de sa démarche. Il en résume les 10 risques les plus critiques chaque année.

Le défi pédagogique consistait à expliquer à ses étudiants ces vulnérabilités en seulement 10 minutes. Pour vous, il le fait en 6 minutes. Pour ce faire, Vincent Rémon a appliqué la démarche des explications « ELI5 » (« Explique-moi comme si j’avais 5 ans ») pour chaque vulnérabilité, accompagnées de conseils pratiques.

Techpop 1/3 : Contrôle d’accès défaillant, défaillances cryptographiques et les injections

1. Contrôle d’accès défaillant

J’ai les droits d’administration sur mon logiciel ou ma machine alors que je ne suis qu’un utilisateur.

Si je me fais pirater mon compte, le pirate a tous les droits. Et dans ce cas malheur à moi ! Le pirate pourra avoir accès à toutes mes ressources. Il pourra modifier ou supprimer mes données, installer des logiciels malveillants, ou même prendre le contrôle de mon système.

En revanche, si j’avais eu un compte limité, le pirate aurait fait moins de dégâts.

💡 On donne le moins d’accès possible aux utilisateurs. Plus précisément, cela signifie que vous ne devez donner à un utilisateur que les droits dont il a besoin pour effectuer son travail. (Principe du moindre privilège -PoLP[3]).

2. Défaillances cryptographiques

Si vous utilisez des vieux logiciels ou des protocoles de chiffrement obsolètes, ils ne protègent finalement plus rien du tout. Ou pire, si vous n’utilisez rien pour chiffrer vos données sensibles !

Les défaillances cryptographiques, peuvent en effet avoir des conséquences graves et donner un faux sentiment de sécurité. Des données mal chiffrées dans une base de données ou dans une communication sont facilement récupérables et lisibles en clair, alors qu’on les pensait protégées.

💡 Pour contrer ces menaces, on oublie les algorithmes dépassés tels que DES, MD5 et TLS 1.0 et on met à jour ses librairies cryptographiques.

3. Injection

Si je permets à un utilisateur de saisir des choses dans mon logiciel, je dois m’attendre à ce qu’il tente de rentrer des commandes malveillantes qui peuvent interagir avec mon système et en extraire des données.

💡 On filtre les données entrées par les utilisateurs. Ex : Si vous attendez un numéro de téléphone, vérifiez qu’on ne vous envoie que des chiffres et pas des lettres.

Techpop 2/3 :  Conception non sécurisé, la mauvaise configuration de sécurité, composants vulnérables et obsolètes, défaillance identification d’authentification

4. Conception non sécurisée

Si vous n’avez pas conçu votre application en suivant les principes de Security by Design (ou « sécurité par la conception »), vous exposerez à des failles potentielles d’injection, des droits d’accès ou de sécurité des données. Pour en savoir plus à ce propos, nous vous recommandons la lecture de « Trop de vulnérabilités dans vos applications ? Essayez le Risk Based Vulnerability Management » pour mieux comprendre comment concentrer les efforts sur les vulnérabilités les plus critiques.

💡 On automatise l’intégration de la sécurité à chaque phase du cycle de vie du développement logiciel (DevSecOps). On améliore la sécurité des applications (AppSec). On matérialise les menaces au format agile (Abuser Stories)

5. Mauvaise configuration de la sécurité

Il ne faut pas utiliser les applications et services (Machines Virtuelles, Docker, SaaS) telles qu’elles sont fournies en configuration d’origine : trop de services sont activés par défaut, trop de droits sont non nécessaires, et le tout n’est pas forcément à jour.

💡 On durcit les services, on supprime ce qui n’est pas utile. On change les logins et mots de passe par défaut. On désactive les messages d’erreur verbeux.

6. Composants vulnérables et obsolètes

Vous avez entendu parler de Log4j ? Log4j est particulièrement connu pour sa vulnérabilité critique surnommée “Log4Shell”. En novembre 2021, des pirates informatiques soutenus par l’Iran ont piraté une agence fédérale américaine qui n’a pas réussi à corriger un bug vieux d’un an[4]. Cela a affecté des millions de serveurs et d’applications à travers le monde[5].

Log4j, c’est exactement ça : une librairie externe utilisée par les développeurs, et laissée sans maintenance. Si vous ne prenez pas soin de vérifier et mettre à jour ces librairies – ou dépendances, elles peuvent être corrompues et exploitées par des attaquants.

💡 On liste, on scanne et on met à jour ses librairies externes avec des outis dédiés au SCA « software composition analysis ».

7. Défaillance identification d’authentification

Si vous n’imposez pas à vos utilisateurs d’utiliser des mots de passe robustes, ils ne le feront pas d’eux-mêmes. Un mot de passe trop court, trop simple, ou déjà utilisé ailleurs, ça ne sert à rien.

💡 On force les mots de passe avec 12 caractères minimum, avec des chiffres et des symboles, qui ne sont pas faciles à trouver, et surtout qui sont différents pour chaque site ! Conseil bonus pour votre confort et votre sécurité : 1Password, Bitwarden, Dashlane ou KeePass feront l’affaire pour renforcer la sécurité de ses données en ligne[6].

Techpop 3/3 :  Défauts d’intégrité des logiciels et des données, défaillances de la journalisation et de la surveillance de la sécurité et CSRF – Cross Site Request Forgery

8. Défauts d’intégrité des logiciels et des données

Si vous consommez des données ou du code qui doit être exécuté chez vous, il a très bien pu être intercepté et modifié par un attaquant au passage. Et hop, c’est un malware qui s’installe dans votre environnement !

C’est ainsi, en effet, que les défaillances d’intégrité des logiciels et des données se produisent lorsque des données ou du code sont altérés de manière non autorisée[7].

💡 On vérifie que les données et logiciels que l’on récupère sont conformes à celles qui ont été envoyées, avec des sommes de contrôle ou des signatures numériques.

9. Défaillances de la journalisation et de la surveillance de la sécurité

Si (quand) un pirate s’introduit dans votre environnement : si vous ne monitorez pas bien, vous ne le verrez pas. Si vous n’avez pas de logs, vous ne saurez pas quand et comment il est entré, donc vous ne saurez pas quoi corriger a posteriori.

💡 On journalise tous les événements sensibles dans les systèmes d’information, et on garde un œil sur ces logs.

10. CSRF – Cross Site Request Forgery

Si votre application web ne filtre pas ce qu’on lui envoie et ce qu’on lui demande de faire ou de récupérer, un attaquant peut lui faire passer des commandes qui seront exécutées dans votre serveur, avec les mêmes droits que l’application, et ainsi exfiltrer des données.

Cette vulnérabilité de sécurité, connue sous le nom de Cross-Site Request Forgery (CSRF) ou falsification de requête entre sites, permet à un attaquant de contraindre un utilisateur authentifié à effectuer des actions non désirées[8].

💡 Comme pour les injections, on filtre et on assainit ce qui est entré dans l’application, et on met en place des Firewalls

Contrer les vulnérabilité avec du bon sens

Vous voyez que certaines sont plus techniques que d’autres, mais la plupart relèvent du bon sens lorsque vous concevez, développez et maintenez des applications. Même si certaines recommandations vous semblent triviales, voire éculées, la réalité nous prouve que ces vulnérabilités ont la vie dure et que les bonnes pratiques sont encore loin d’être adoptées spontanément.

[1] Eliad Kimhy Lance Rhodes Badette Tribbey, « Slipping through the Slipping through the security gaps », akamai.com, App and API SOTI report, Volume 9, Issue 2, page 2, 30 pages, March 2023.

[2] OWASP : Open Web Application Security Project, organisation internationale à but non lucratif dont le cheval de bataille est la sécurité des application web.

[3] Vincent Rémon, « Trop de vulnérabilités dans vos applications ? Essayez le Risk Based Vulnerability Management », Principe de moindre privilège (PoLP) , groupeonepoint.com, 2023

[4] « Iranian Government-Sponsored APT Actors Compromise Federal Network, Deploy Crypto Miner, Credential Harvester », cisa.gov, November 25, 2022.

[5] « Log4j : la faille informatique qui fait trembler le Net sur ses fondations », france24.com, 14/12/2021.

[6] Vincent Rémon, « Quel gestionnaire de mot de passe choisir ? Édition 2023« , medium.com, 2023.

[7] « A08:2021 – Manque d’intégrité des données et du logiciel », owasp.org, 2021.

[8] KirstenS, « Cross Site Request Forgery (CSRF) », owasp.org, 2022.

Auteur : Vincent Remon

Expert cybersécurité et blockchain