Blog

Les codeurs conquièrent la sécurité : Série "Partageons et apprenons" - Faiblesses de la gestion des sessions

Jaap Karan Singh
Publié le 31 janvier 2019

Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.

Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.

Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.

Comprendre les faiblesses de la gestion des sessions

Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.

La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.

Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.

Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.

Pourquoi une mauvaise gestion des sessions est dangereuse

Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.

Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.

Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.

Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.

La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.

Déjouer la gestion des sessions non sécurisées

La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.

Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:

     Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner

     Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.

     Les sessions sont automatiquement invalidées après un certain temps.

     Les identifiants de session sont modifiés après la connexion de l'utilisateur.

     Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.

Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.

Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.

Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.

Sécurisez vos sessions

Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.

Voir la ressource
Voir la ressource

Les sessions sont la clé d'une bonne expérience utilisateur lors de l'utilisation du web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.

Vous souhaitez en savoir plus ?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démonstration
Partager sur :
Auteur
Jaap Karan Singh
Publié le 31 janvier 2019

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Partager sur :

Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.

Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.

Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.

Comprendre les faiblesses de la gestion des sessions

Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.

La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.

Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.

Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.

Pourquoi une mauvaise gestion des sessions est dangereuse

Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.

Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.

Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.

Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.

La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.

Déjouer la gestion des sessions non sécurisées

La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.

Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:

     Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner

     Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.

     Les sessions sont automatiquement invalidées après un certain temps.

     Les identifiants de session sont modifiés après la connexion de l'utilisateur.

     Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.

Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.

Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.

Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.

Sécurisez vos sessions

Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.

Voir la ressource
Voir la ressource

Remplissez le formulaire ci-dessous pour télécharger le rapport

Nous aimerions que vous nous autorisiez à vous envoyer des informations sur nos produits et/ou sur des sujets liés au codage sécurisé. Nous traiterons toujours vos données personnelles avec le plus grand soin et ne les vendrons jamais à d'autres entreprises à des fins de marketing.

Soumettre
Pour soumettre le formulaire, veuillez activer les cookies "Analytics". N'hésitez pas à les désactiver à nouveau une fois que vous aurez terminé.

Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.

Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.

Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.

Comprendre les faiblesses de la gestion des sessions

Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.

La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.

Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.

Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.

Pourquoi une mauvaise gestion des sessions est dangereuse

Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.

Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.

Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.

Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.

La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.

Déjouer la gestion des sessions non sécurisées

La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.

Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:

     Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner

     Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.

     Les sessions sont automatiquement invalidées après un certain temps.

     Les identifiants de session sont modifiés après la connexion de l'utilisateur.

     Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.

Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.

Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.

Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.

Sécurisez vos sessions

Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.

Accès aux ressources

Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Voir le rapportRéservez une démonstration
Partager sur :
Vous souhaitez en savoir plus ?

Partager sur :
Auteur
Jaap Karan Singh
Publié le 31 janvier 2019

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Partager sur :

Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.

Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.

Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.

Comprendre les faiblesses de la gestion des sessions

Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.

La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.

Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.

Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.

Pourquoi une mauvaise gestion des sessions est dangereuse

Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.

Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.

Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.

Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.

La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.

Déjouer la gestion des sessions non sécurisées

La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.

Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:

     Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner

     Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.

     Les sessions sont automatiquement invalidées après un certain temps.

     Les identifiants de session sont modifiés après la connexion de l'utilisateur.

     Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.

Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.

Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.

Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.

Sécurisez vos sessions

Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.

Table des matières

Voir la ressource
Vous souhaitez en savoir plus ?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.

Réservez une démonstrationTélécharger
Partager sur :
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles
Centre de ressources

Ressources pour vous aider à démarrer

Plus d'articles