• 10 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 10/28/24

Empêchez le piratage de session

Bannière décorative

Découvrez un cas d’attaque

Vous vous souvenez de la faille Linkedin que nous avons vue dans le A02, sur les défaillances cryptographiques ? Malgré des précautions, en 2021, LinkedIn a subi une nouvelle attaque. L’entreprise a été victime d'une exploitation massive de son API, résultant de la création d'une base de données contenant des informations extraites de près de 700 millions de profils d'utilisateurs. Le pirate, se faisant appeler Tom Liner, a réussi à abuser de l'API de LinkedIn pour recueillir des données telles que des localisations, numéros de téléphone...

Cette attaque n'était pas une brèche de données au sens traditionnel puisque les informations étaient principalement obtenues par scraping : une pratique qui consiste à extraire des données accessibles au public d'une manière qui viole les termes de service de la plateforme. Cependant, l'ampleur de l'incident et les informations collectées ont soulevé de sérieuses préoccupations quant à la confidentialité et la sécurité des données des utilisateurs.

L'incident a mis en lumière les risques pour la sécurité des données et la vie privée des utilisateurs, rappelant l'importance cruciale d'une identification et authentification robustes pour les APIs. Les données obtenues pourraient être utilisées pour des attaques de phishing, d'ingénierie sociale, ou encore pour renforcer des campagnes de spam et de marketing ciblé non sollicité.

Appréhendez l'utilisation de cookies

Un cookie HTTP (également appelé cookie web, cookie Internet, cookie de navigateur ou simplement cookie) est une petite donnée envoyée depuis un site web et stockée sur l'ordinateur de l'utilisateur par un navigateur web lorsque l'utilisateur consulte le site. 

Les cookies ont été conçus pour constituer un mécanisme fiable permettant aux sites web de mémoriser des informations importantes (telles que les éléments ajoutés au panier dans une boutique en ligne) ou d'enregistrer l'activité de navigation de l'utilisateur (en se connectant ou en enregistrant les pages consultées).

Ils peuvent également être utilisés pour mémoriser des informations que l'utilisateur a précédemment entré dans des champs de formulaire, telles que des noms, des adresses, des mots de passe et des numéros de carte de crédit. Voilà pourquoi il représente un intérêt pour un attaquant.

Que se passe-t-il lorsqu'un site demande d'accepter des cookies ?

Vous vous souvenez peut-être que votre navigateur vous a averti qu'un site web nécessite l'utilisation de cookies pour que vous puissiez l'utiliser ?

HTTP ne peut pas enregistrer d'informations sur votre navigateur. Un cookie est donc un fichier tiers enregistré, qui donne un accès personnalisé à l'utilisateur du site. Les cookies ont été créés pour vous faciliter la vie, de sorte que vous n’ayez pas besoin de vous reconnecter ou d'entrer les mêmes données encore et encore. Ils aident un site web à se souvenir de ce que vous avez fait sur leur site pour personnaliser l'expérience. Ces cookies ne sont accessibles que par le site web qui les a créés.

Il existe deux types de cookies : les cookies de suivi et les cookies de session.

Découvrez les cookies de suivi

Les cookies de suivi sont un type de cookie spécifique distribué, partagé et lu sur au moins deux sites web non liés. Le but est de collecter des informations ou éventuellement de vous présenter des données personnalisées.

Supposons que j'achète des graines pour mon potager d’appartement sur un site web appelé seedsell.com. Celui-ci télécharge un cookie sur mon navigateur avec des informations qui m'identifient. Toutes mes activités sur ce site seront enregistrées sur seedsell.com via le cookie qui contient mon identifiant.

Puis, je décide d'aller sur le site funnikaaaats.com et soudain je vois toutes ces annonces me montrant les graines que je regardais sur seedsell.com !

Le visuel montre un processus en 5 étapes où un achat sur seedssell.com entraîne la création d'un cookie de suivi. Ce cookie est ensuite utilisé par un autre site, funnikaaaats.com, pour afficher une publicité ciblée, démontrant comment le suivi e
seedsell.com partage ses cookies de suivi avec funnikaaaats.com

Mais seul seedsell.com peut accéder aux informations des cookies stockées sur son site, alors comment funnikaaaats.com a découvert que j'aime ces graines ?

funnikaaaats.com a intégré un code pour seedsell.com à l'intérieur de son site web afin qu'il puisse accéder à votre cookie seedsell.com. Et maintenant, ces informations sont stockées sous ce cookie ID dans seedsell.com.

Maintenant, le cookie de suivi de seedsell.com sait quelles graines et vidéos de chat vous aimez !

Bien que les cookies de suivi ne peuvent pas être utilisés pour pirater une session, ils peuvent représenter un problème concernant la confidentialité et la vie privée, car ils permettent l’accès à vos habitudes de navigation.

Découvrez les cookies de session

Les cookies de session contiennent un identifiant de session

Supposons que vous vous connectez au site web de votre banque et que vous recevez un cookie qui est stocké dans votre navigateur et qui vous garde connecté jusqu'à ce que la session expire.

Dans ce cas, chaque session reçoit un ID de session. L'authentification peut être détournée si l'utilisateur malveillant usurpe le bon ID de session.

Avec le protocole HTTP, les sites web n'ont pas la possibilité d'enregistrer des informations d'authentification ou de session sauf s'ils les stockent dans un fichier sur les navigateurs. C'est à ça que servent les cookies de session.

Souvent, le navigateur enregistre un cookie qui contient les informations de session, l'ID de session, la date et l'heure d'expiration.

Protégez votre mécanisme d'authentification

Pour assurer la sécurité des sessions utilisateur et prévenir le piratage de session, il est essentiel d'adopter des stratégies de sécurisation efficaces. Ces stratégies comprennent l'implémentation de mesures de sécurité robustes pour l'authentification, la gestion des mots de passe et la protection des cookies de session.

Recommandations générales

Authentification multifacteur (MFA) : Mettez en place la MFA pour ajouter une couche de sécurité supplémentaire. Cela aide à prévenir les attaques automatisées, le bourrage des informations d'identification (credential stuffing), les attaques par force brute, et la réutilisation des informations d'identification volées.

Informations d'identification par défaut : Évitez d'utiliser des informations d'identification par défaut, surtout pour les comptes privilégiés. Assurez-vous de modifier ces informations lors de la mise en production.

Imaginez que vous venez tout juste de déballer votre nouvelle imprimante HP et que vous êtes prêt à l'installer. Par défaut, le nom d'utilisateur et le mot de passe sont tous deux 'admin'. Cela peut sembler pratique au premier abord, mais c'est en fait extrêmement risqué. Pourquoi ? Parce que ces identifiants par défaut sont connus de tous ! 

Gestion des mots de passe : Encouragez l'utilisation de mots de passe forts en intégrant des tests lors de la création ou du changement de mot de passe. Comparez les mots de passe saisis avec les listes de mots de passe faibles couramment utilisées pour prévenir les accès non autorisés.

Gestion de session : Utilisez un gestionnaire de session côté serveur qui génère un nouvel identifiant de session aléatoire avec une entropie élevée après la connexion. C’est-à-dire que l’identifiant est très aléatoire et donc difficile à deviner pour les attaquants. 

Protection contre les attaques d'énumération de compte : Durcissez les processus d'inscription et de récupération des informations d'identification contre les attaques d'énumération de compte, en utilisant des messages génériques pour tous les résultats afin de ne pas révéler si un compte existe ou non. 

Prenons un exemple concret concernant les attaques d’énumération de compte : imaginons une situation où Alice souhaite récupérer son mot de passe sur un site web.

Alice entre son adresse e-mail pour récupérer son mot de passe. Si l'e-mail n'est pas reconnu, le site affiche un message tel que : "Aucun compte n'est associé à cette adresse e-mail." Un attaquant, Bob, pourrait utiliser cette information pour deviner les e-mails associés à un compte sur le site en observant les messages d'erreur.

En revanche, en utilisant un message générique tel que “Si votre adresse e-mail est reconnue, un lien pour réinitialiser votre mot de passe vous sera envoyé.", Bob ne pourra pas deviner les e-mails associés à un compte. 

Recommandations liées aux cookies

Pour protéger les cookies de session contre les attaques, appliquez-les configurations suivantes :

  • Attributs Secure et HttpOnly : Utilisez l'attribut Secure pour s'assurer que les cookies sont envoyés uniquement sur des connexions sécurisées (HTTPS). L'attribut HttpOnly empêche l'accès aux cookies via JavaScript, réduisant ainsi le risque de cross-site scripting (XSS).

  • Attribut SameSite : Cet attribut permet de contrôler l'envoi de cookies avec les requêtes inter-sites, offrant une protection contre les attaques de type cross-site request forgery (CSRF).

  • Durée de vie limitée : Configurez une durée de vie limitée pour les cookies de session afin de réduire la fenêtre d'opportunité pour les attaquants en cas de vol de cookie.

Comment puis-je être sûr que la fonction authentification de mon application soit sécurisée ?

Les frameworks peuvent faciliter et renforcer le développement et notamment la partie authentification reprise dans la catégorie A07:20231 du TOP10 OWASP, voyons cela plus en détail.

Utilisez des Frameworks de Sécurité

Pour l'authentification, il est conseillé de s'appuyer sur des frameworks éprouvés plutôt que de développer son propre système. Des solutions offrent des méthodes d’authentification sécurisées et testées, telles que : 

  • ASP.NET Core Identity Framework pour les applications .NET ;

  • Ruby Omniauth pour Ruby ;

  • Java JAAS pour Java ;

  • PHP PHPSec pour PHP.

En adoptant ces pratiques, vous pouvez améliorer significativement la sécurité de votre application web, protéger les données des utilisateurs, et prévenir le piratage de session.

En résumé

  • L’exemple de LinkedIn en 2021 souligne l'importance d'une identification et authentification robustes pour les APIs.

  • La mise en place du MFA est une bonne pratique de sécurité pour protéger l’identification et l’authentification sur votre application web.

  • Les mots de passe par défaut doivent absolument être changés dans chaque application utilisée.

  • Il est important d'utiliser des messages génériques lors des processus d'inscription et de récupération des mots de passe pour éviter de révéler l'existence de comptes spécifiques.  

  • Il existe des attributs pour protéger du vol des cookies de session.

Dans le prochain chapitre, nous aborderons comment garantir l'intégrité de vos données et logiciels. Tenez bon, il ne vous reste plus que 3 vulnérabilités du Top 10 de l’OWASP à découvrir !

Example of certificate of achievement
Example of certificate of achievement