Introduction à la sécurité
Importance de la sécurité des applications web
Les applications web sont devenues un élément indispensable de notre vie quotidienne, permettant d’accéder à des informations, des services et des divertissements en ligne. Cependant, avec la croissance exponentielle des applications web, les risques liés à la sécurité ont également augmenté de manière significative. Les attaquants exploitent souvent les vulnérabilités des applications web pour accéder à des informations sensibles, voler des données personnelles ou même prendre le contrôle des systèmes. C’est souvent le script de films catastrophe où les hackers prennent le contrôle d’une ville mais dans la réalité, ils peuvent faire beaucoup de dégâts à une entreprise. Évitons ensemble que la prochaine entreprise soit la vôtre.
Dans ce premier chapitre, nous allons introduire les concepts de base de la sécurité des applications web et les différentes menaces auxquelles sont confrontées les applications web. Nous allons également présenter les différents types d’attaques et les vulnérabilités les plus courantes des applications web.
Ce chapitre servira de base pour les chapitres suivants, où nous aborderons la manière dont Cypress peut être utilisé pour tester la sécurité des applications web et renforcer leur sécurité.
1. Les conséquences des failles de sécurité
Les failles de sécurité dans les applications web peuvent avoir des conséquences graves, à la fois pour les utilisateurs et pour les organisations qui les développent et les exploitent.
a. Vol de données sensibles
Les attaquants peuvent exploiter les failles de sécurité pour accéder aux données sensibles, telles que les informations personnelles, les identifiants de connexion, les données financières, les informations médicales, etc.
Le vol de données peut entraîner des conséquences financières importantes, une perte de confiance des utilisateurs, des litiges juridiques et une atteinte à la réputation de l’organisation.
Un exemple réel a eu lieu en 2017 : le piratage d’Equifax.
Equifax, l’une des plus grandes agences d’évaluation du crédit aux États-Unis, a été victime d’un piratage massif qui a entraîné le vol de données sensibles de plus de 147 millions de personnes. Les conséquences de cette faille de sécurité ont été extrêmement graves.
Les données volées comprenaient des informations personnelles sensibles telles que les noms, les numéros de sécurité sociale, les dates de naissance, les adresses et les numéros de permis de conduire. Les cybercriminels ont exploité une vulnérabilité du logiciel utilisé par Equifax pour accéder au réseau de l’entreprise et extraire ces données.
Les informations volées peuvent être utilisées par les criminels pour commettre des fraudes financières, ouvrir des comptes bancaires ou des cartes de crédit au nom des victimes, et causer des préjudices financiers importants. D’ailleurs, les victimes dont les données ont été compromises ont dû faire face à de nombreux problèmes, tels que le risque d’usurpation d’identité, des perturbations financières, la nécessité de surveiller régulièrement leur historique de crédit et la difficulté de rétablir leur réputation financière.
L’incident a ébranlé la confiance du public dans la capacité d’Equifax à protéger les informations personnelles de ses clients. Cela a conduit à une perte de réputation considérable pour l’entreprise et à des poursuites légales et réglementaires.
Equifax a dû faire face à des coûts considérables pour répondre à l’incident, notamment en termes de notifications aux victimes, de services de surveillance du crédit, de mesures correctives et de litiges juridiques. L’entreprise a également subi une baisse significative de sa valeur boursière.
b. Utilisation abusive des comptes d’utilisateurs
Les failles de sécurité peuvent permettre aux attaquants de prendre le contrôle des comptes d’utilisateurs légitimes.
Les attaquants peuvent utiliser ces comptes pour des activités frauduleuses, telles que l’envoi de spam, la diffusion de contenus malveillants, l’accès non autorisé à d’autres systèmes, etc.
En juillet 2020, le réseau social Twitter a été victime d’une attaque de grande ampleur qui a conduit à l’utilisation abusive des comptes d’utilisateurs influents (Barack Obama, Elon...
Les principaux acteurs de la sécurité des applications web
1. Les développeurs
Les développeurs jouent un rôle indispensable dans la sécurité des applications web. Leur expertise technique et leur compréhension des bonnes pratiques de développement sécurisé sont cruciales pour garantir que les applications sont résistantes aux attaques et protègent les données sensibles.
a. Connaissance des vulnérabilités
Les développeurs doivent être familiarisés avec les différentes vulnérabilités courantes des applications web, telles que les injections SQL, les failles de validation d’entrée, les attaques de type Cross-Site Scripting (XSS) et les problèmes de gestion des sessions. Ils doivent comprendre comment ces vulnérabilités peuvent être exploitées et comment les éviter lors de la conception et du développement d’applications.
b. Utilisation de bonnes pratiques de codage sécurisé
Les développeurs doivent suivre les bonnes pratiques de codage sécurisé pour réduire les risques de vulnérabilités. Cela inclut l’utilisation de bibliothèques de sécurité, l’échappement approprié des entrées utilisateur, la vérification des autorisations et l’utilisation de techniques de cryptographie appropriées lorsque cela est nécessaire.
L’échappement consiste à transformer certains caractères spéciaux présents dans les entrées utilisateurs pour qu’elles ne soient pas interprétées comme du code. Par exemple, si un utilisateur met <script>alert(’je vais tout prendre’)</script>, on échappe en séquence sécurisée en les transformant en <script >alert(’je vais tout prendre’) <script > et le script n’est pas exécuté avec du JavaScript.
c. Tests de sécurité
Les développeurs doivent participer à des tests de sécurité réguliers pour identifier et corriger les vulnérabilités potentielles dans les applications web. Cela peut inclure des tests d’intrusion, des analyses de vulnérabilités et des examens de code.
d. Sensibilisation à la sécurité
Les développeurs doivent être conscients des enjeux de sécurité et de l’importance de leur rôle dans la protection des données sensibles. Ils doivent être formés et sensibilisés aux meilleures pratiques de sécurité, aux normes et aux réglementations en vigueur.
e. Collaboration avec les équipes de sécurité
Les développeurs doivent travailler en étroite collaboration avec les équipes de sécurité de l’entreprise pour comprendre les exigences de sécurité, partager les connaissances et les meilleures pratiques, et prendre des mesures pour remédier aux vulnérabilités identifiées.
f. Suivi des mises à jour de sécurité
Les développeurs doivent rester à jour avec les dernières mises à jour de sécurité des frameworks, des bibliothèques et des dépendances utilisées dans le développement des applications web. Ils doivent appliquer les correctifs de sécurité dès qu’ils sont disponibles pour éviter d’exposer les applications à des vulnérabilités connues.
2. Les testeurs
Les testeurs jouent eux aussi un rôle capital dans la sécurité des applications web en identifiant les vulnérabilités et les faiblesses potentielles des systèmes avant leur déploiement. Leur expertise en matière de tests de sécurité permet de détecter les failles de sécurité et de s’assurer que les applications sont protégées contre les attaques
a. Tests d’intrusion
Les testeurs réalisent des tests d’intrusion pour identifier les vulnérabilités des applications web. Ils utilisent des techniques avancées pour simuler des attaques réelles et vérifier si les défenses de l’application sont efficaces. Les résultats de ces tests aident à identifier les faiblesses potentielles et à recommander des mesures correctives.
b. Analyses de vulnérabilités
Les testeurs effectuent des analyses de vulnérabilités pour identifier les failles de sécurité dans les applications web. Ils utilisent des outils spécialisés pour rechercher les vulnérabilités connues, telles que les injections SQL, les failles de sécurité XSS et les problèmes...
Les principaux objectifs de la sécurité des applications web
1. Confidentialité des données
La confidentialité des données concerne la protection des informations personnelles et sensibles des utilisateurs en veillant à ce qu’elles ne soient pas divulguées, compromises ou utilisées de manière inappropriée.
Les applications web doivent collecter uniquement les données nécessaires pour fournir les services attendus. Il est important de limiter la collecte d’informations personnelles et de s’assurer que les utilisateurs sont informés des données collectées et des finalités pour lesquelles elles seront utilisées.
Les données sensibles telles que les informatiques d’identification, les numéros de carte de crédit ou les données médicales doivent être cryptées lorsqu’elles sont stockées ou transmises. Le chiffrement assure que seules les personnes autorisées peuvent accéder aux données, même en cas de violation de sécurité.
Par exemple, pour les données médicales, un algorithme de chiffrement symétrique AES est utilisé pour sécuriser les données. Il utilise une clé secrète pour chiffrer et déchiffrer les informations. La clé est une chaîne de bits aléatoire d’une longueur spécifiée, par exemple, une clé de 256 bits. Les données médicales sont chiffrées à l’aide de l’algorithme AES et la clé de chiffrement. Elles peuvent être ainsi stockées dans une base de données sécurisée. L’objectif est de s’assurer que seules les personnes autorisées avec la clé de déchiffrement appropriée peuvent accéder aux données et les comprendre.
2. Intégrité des données
L’intégrité des données fait référence à...
Les menaces courantes pour les applications web
1. ISO 27001 : un des standards de sécurité
OWASP, l’Open Worldwide Application Security Project, est une fondation à but non lucratif qui travaille à améliorer la sécurité des logiciels. C’est une communauté ouverte et dédiée aux organisations pour leur permettre de concevoir des applications fiables.
OWASP, étant une référence dans le monde de la sécurité, a créé un document OWASP top 10, que nous avons présenté précédemment. Les développeurs se basent sur ce document comme étant les risques de sécurité les plus critiques au niveau web.
La norme ISO 27001 est une norme internationale qui vise la gestion de la sécurité de l’information en se concentrant sur quatre aspects principaux :
-
assurer la disponibilité des informations et des services ;
-
sécuriser l’intégrité des données critiques ;
-
garantir la confidentialité des données sensibles ou des données clients ;
-
assurer la disponibilité et la conformité des preuves légales, lois, régulations, etc.
Certaines entreprises sont certifiées pour prouver leurs niveaux de qualité de service sur la sécurité.
D’après l’OWASP, les dix principaux risques/menaces de sécurité des applications ont changé ces dernières années :
Nous en verrons quelques-uns dans les sections qui suivent.
2. Les attaques par injection
Les attaques par injection sont passées en troisième position dans la liste alors qu’en 2017, elles étaient en première position. Malgré tout, elles restent dans le top 10, donc il faut s’en méfier.
Il s’agit d’exploiter une vulnérabilité dans une application web pour y insérer du code malveillant, comme les attaques d’injection SQL et les attaques XSS (Cross-Site Scripting).
3. Les attaques par force brute
C’est l’une des attaques les plus connues par les néophytes. Il s’agit d’une tentative de trouver un mot de passe en essayant de nombreuses combinaisons différentes jusqu’à ce que le mot de passe correct soit trouvé. Le nom de cette attaque est assez clair, ils attaquent en forçant le champ pour se connecter. Si l’application web ne limite pas le nombre d’essais, cette attaque ne peut pas être stoppée sauf s’il y a une double authentification.
4. Les attaques par contournement d’authentification
Les attaques de contournement d’authentification : il s’agit d’une tentative de contourner le processus d’authentification d’une application web, souvent en exploitant une faille de sécurité.
5. Les attaques par déni de service
Il s’agit d’une tentative de rendre une application web inaccessible en la submergeant de trafic.
Il y a deux types d’attaque par déni de service : les attaques par déni de service (DoS) et déni de service distribué (SSoS).
Les types d’attaques DoS/DDoS sont :
-
Attaques de volumétrie :
-
Surcharge par bande passante : ces attaques inondent le réseau de la cible avec un volume énorme de données, saturant ainsi la bande passante.
-
Amplification DNS : ces attaques utilisent des requêtes DNS falsifiées pour générer un trafic volumineux vers la cible.
-
Attaques de protocole :
-
SYN flood : exploite le processus de handshake TCP en envoyant de nombreuses requêtes SYN sans répondre aux SYN-ACK de la cible.
-
Ping of death : envoie des paquets ping malformés ou trop gros pour perturber le système cible.
-
Attaques au niveau de l’application :
-
HTTP flood : inonde un serveur web avec des requêtes http pour surcharger ses ressources.
-
Slowloris : ouvre de nombreuses connexions http à la cible et les maintient ouvertes aussi longtemps que possible.
6. Les attaques par manipulation de session
Il s’agit d’une tentative de voler ou de manipuler les données de session d’un utilisateur pour accéder à une application web.
Il y a également plusieurs types d’attaques :
-
Détournement de session : l’attaquant...
Les principes de base de la sécurité des applications web
1. Le principe du moindre privilège
Le principe du moindre privilège est un concept clé de la sécurité informatique qui vise à limiter l’accès et les privilèges accordés aux utilisateurs, aux processus et aux systèmes uniquement à ce qui est strictement nécessaire pour effectuer leurs tâches spécifiques.
Les privilèges les plus bas doivent être attribués à chaque utilisateur, processus ou système pour effectuer son travail. Cela signifie que les utilisateurs ne doivent pas avoir des privilèges excessifs ou une autorisation d’accès à des ressources qui ne sont pas attribués à leurs fonctions.
Le principe du moindre privilège vise à réduire les risques associés aux accès non autorisés ou aux erreurs humaines. En limitant les privilèges, on réduit la surface d’attaque potentielle et les conséquences potentielles en cas de compromission d’un utilisateur ou d’une application.
En appliquant ce principe, les tâches et les responsabilités sont séparées de manière à ce que chaque utilisateur n’ait accès qu’aux ressources nécessaires pour accomplir ses propres tâches. Par exemple, un utilisateur peut avoir des droits d’accès en lecture seule sur une base de données, tandis qu’un autre utilisateur peut avoir des droits d’accès en écriture. Cette segmentation réduit les risques de modifications ou d’accès non autorisés.
Il est important de mettre en place des mécanismes de contrôle des privilèges pour appliquer le principe du moindre privilège. Cela peut inclure l’utilisation de listes de contrôle d’accès, de rôles et de politiques d’autorisation afin de définir les droits d’accès et les permissions des utilisateurs.
Il est indispensable de surveiller et d’auditer régulièrement les privilèges accordés aux utilisateurs et aux processus. Cela permet de détecter les anomalies, les tentatives d’accès non autorisées ou les changements inappropriés dans les droits d’accès. Les journaux d’audit et les outils de gestion des droits d’accès peuvent être utilisés pour faciliter ce processus.
Une gestion rigoureuse des privilèges est nécessaire pour appliquer le principe du moindre privilège de manière efficace. Cela inclut l’attribution des privilèges en fonction des besoins réels, la révision régulière des droits d’accès, la révocation des privilèges lorsque les utilisateurs n’en ont plus besoin, et la mise en place de processus de demande et d’approbation pour l’attribution de nouveaux privilèges.
Voici un exemple réel : dans une entreprise où l’on doit badger afin d’entrer dans le bâtiment, ces badges servaient à limiter les accès à des salles qui étaient dites sensibles car les projets étaient confidentiels. Or, un jour, un ordinateur physique a été volé dans une salle dite sensible ; personne n’a été accusé car la sécurité n’était pas au point : les badges n’étaient pas activés dans cette salle et les caméras étaient hors service. Le lendemain, les privilèges ont été abaissés. Plus personne n’avait le droit d’accéder aux salles qui ne le concernaient pas et il y avait un historique d’accès aux salles selon le badge nominatif. L’impact financier n’était pas élevé mais la confiance entre les salariés était rompue. Les décisionnaires ont voulu être humains mais des personnes malintentionnées auraient pu exploiter les données de l’ordinateur à des fins malveillantes.
2. Le principe de la défense en profondeur
Le principe de la défense en profondeur est une stratégie de sécurité qui consiste à superposer plusieurs couches de défense pour protéger les systèmes et les données contre les attaques. Les couches peuvent inclure des mesures techniques, des politiques et des procédures. Chaque couche de sécurité est conçue pour contrer un type spécifique de menace ou d’attaque.
L’idée est de créer une série de barrières de sécurité interconnectées, de manière...