[RUBY] Attaques de sécurité utilisant des sessions (identifiant de session, cookies)

supposition
Programmation débutant(2~Trois mois)Résume ce qu'il a appris.
Il peut ne pas fonctionner dans le champ réel ou contenir un contenu incorrect.
Je vous serais reconnaissant si vous pouviez ajouter et signaler toute erreur ou partie superficielle.

Nous avons résumé ce que nous avons appris sur les attaques de sécurité à l'aide de sessions.

Attaques et contre-mesures visant les sessions

Qu'est-ce qu'une session?

Une session est un mécanisme de stockage temporaire de données. Cette destination de stockage temporaire est appelée un cookie. Si vous accédez à YouTube ou Twitter depuis le même terminal, vous serez connecté avec votre propre compte. En effet, les informations de connexion sont temporairement stockées dans le cookie par un mécanisme appelé session, de sorte que vous êtes dans l'état connecté sans vous connecter à chaque fois. Une attaque ciblant un cookie qui stocke temporairement ces informations de connexion est appelée piratage de session.

Détournement de session

Il s'agit d'une méthode d'attaque qui utilise XSS etc. pour acquérir une session d'un utilisateur régulier qui n'est pas un utilisateur régulier.

Dans XSS, lorsque vous ouvrez une application Web ou une page Web, un script est activé et des informations personnelles sont envoyées à l'attaquant. Les articles résumés ci-dessus sont les suivants. https://qiita.com/Nako4/items/845da2ed4872524c2a15

Le cookie est stocké à l'aide d'un numéro d'identification appelé ID de session. En volant cet ID de session, le détournement de session est établi. ** ID de session ** Informations d'identification uniques fournies aux utilisateurs légitimes lors de la communication

Raisons pour lesquelles il est dangereux d'être attaqué

Je pense que vous pouvez en quelque sorte deviner le danger. Si la session est acquise par un attaquant malveillant, les informations de connexion seront transmises à un tiers et l'utilisateur légitime pourra faire tout ce qu'il peut. Par exemple, si vous avez enregistré l'adresse de livraison et les informations d'achat (numéro creca) ・ Vous pouvez voir les informations personnelles des utilisateurs réguliers ・ Achetez des biens sans autorisation ・ Vous pouvez envoyer de l'argent ・ Envoyez des e-mails falsifiés en utilisant votre adresse e-mail De cette façon, les dommages causés aux utilisateurs réguliers seront très importants.

Méthode d'attaque utilisant la session

Il existe trois manières spécifiques d'attaquer une session. ・ Deviner l'ID de session ・ Voler l'ID de session ・ Forcer l'ID de session

Deviner l'ID de session

Les problèmes liés aux règles de génération d'ID de session utilisées dans les applications Web permettent aux tiers de prédire plus facilement l'ID de session. ID de session problématique ・ Identifiant et adresse e-mail ・ Adresse IP distante · Date et l'heure Deviner l'ID de session est une méthode qui utilise des valeurs qui peuvent être référencées de l'extérieur. ** Contre-mesure ** Il ne génère pas son propre ID de session. Afin de ne pas générer un ID de session devinable, il est prudent d'utiliser un outil de développement d'applications Web tel qu'un framework sans créer de mécanisme de génération unique. En effet, si une vulnérabilité est détectée dans la fonction de gestion de session, on peut s'attendre à ce qu'elle soit rapidement signalée et améliorée. Ruby on Rails est également l'un de ces outils de développement d'applications.

Vol de l'identifiant de session

En JavaScript,

<script>document.cookie</script>

Avec le script Les informations sur les cookies peuvent être affichées. Si vous modifiez ce script pour envoyer les informations du cookie de l'utilisateur légitime au serveur attaquant, un détournement de session sera établi. Des mesures de sécurité insuffisantes dans l'environnement Internet peuvent entraîner la réception intentionnelle ou accidentelle de l'ID de session par un tiers lors de la communication entre un utilisateur légitime et le serveur.

** Contre-mesure ** ・ Empêcher XSS -Utiliser un environnement Internet sécurisé. Pour améliorer la sécurité de l'environnement Internet, nous utilisons un mécanisme de cryptage des communications sur Internet. Ce mécanisme de cryptage est appelé SSL.

SSL(Secure Sockets Layer) SSL est une technologie qui crypte la communication sur Internet. En cryptant et en communiquant, il est possible d'empêcher les écoutes clandestines et la falsification des informations de tiers. En utilisant ce SSL, vous pouvez le garder en sécurité lors de l'échange d'informations courantes telles que les cookies. Les URL compatibles SSL sont des pages Web commençant par https: //.

ID de session forcée

Il s'agit d'une méthode permettant à l'attaquant de fixer de force la session à partir du visage. La procédure spécifique est ① L'attaquant acquiert l'identifiant de session (abc) en tant qu'utilisateur légitime (2) Forcer l'ID de session obtenu en (1) à l'utilisateur régulier ③ Les utilisateurs réguliers se connectent à l'application cible ④ L'attaquant accède à l'application cible en utilisant l'ID de session (abc) forcé par l'utilisateur légitime.

Les sessions ont été utilisées pour maintenir l'état de l'utilisateur. Pour les utilisateurs légitimes, l'état dans lequel l'authentification telle que la connexion est terminée dans la session forcée par l'attaquant est temporairement sauvegardé. En d'autres termes, cette session peut également être utilisée par un attaquant pour accéder à la page de connexion. ** Contre-mesure ** Changer l'ID de session après la connexion Il existe de nombreuses façons de corriger un identifiant de session, il est donc important de continuer à le modifier pour qu'il ne soit pas corrigé. Par exemple, si vous modifiez l'ID de session immédiatement après la connexion, même si la session est forcée, elle sera mise à jour après la connexion, vous ne pouvez donc pas utiliser l'application Web en utilisant la session forcée par l'attaquant. Devise, l'un des joyaux Ruby on Rails, utilise ce mécanisme.

Résumé

Une session est un mécanisme qui vous permet de stocker temporairement des informations de connexion et est stockée dans un endroit appelé cookie. Il existe trois types d'attaques de sécurité utilisant des sessions: deviner, voler et forcer. Devinez: l'utilisation d'un framework existant sans créer vos propres règles de production rend plus difficile la détermination de l'ID de session. Voler: prenez des mesures XSS de base. Forcé: empêche la fixation de l'ID de session en modifiant l'ID de session après la connexion.

Recommended Posts

Attaques de sécurité utilisant des sessions (identifiant de session, cookies)