動画はこちら↓
今回は、セッションハイジャックという攻撃手法について解説していきます!
セッションって、Webサイトにログインしたときに使われるアレのこと?
そう!ログイン状態を保持するための仕組みだよ!でも、そのセッションが乗っ取られてしまうと、ログイン中のアカウントが乗っ取られてしまうことになります。どんな攻撃なのか、また対策はどうすればいいのかについて解説していくよ!
セッションハイジャックは、ログイン中のセッションIDを盗み取ったりしてセッションを乗っ取り、攻撃者がユーザーになりすます攻撃です。
つまり、ユーザー本人のアカウントで勝手に操作できちゃうってこと!?
その通り!例えば、SNSで勝手に投稿される、クレジットカードが不正利用される、銀行サイトで送金される、機密情報が盗まれるといった被害が考えられるよ。
なんでもできちゃうじゃん!これは怖い...
でも、そもそもどうやってセッションを乗っ取るの?
いくつかの方法があるよ。代表的なものを紹介するね!
セッションハイジャックの手法は、大きく分けて3つあるよ。
まず初めに、脆弱性などを利用してセッションIDを盗む方法です。
例えば、XSS脆弱性などを使ってセッションIDを抜き取るなどの方法があります。
XSS脆弱性で漏洩したセッションIDを使って、さらにセッションハイジャック攻撃をされちゃうんだね...!
そうそう。他にも、通信を盗聴するパケットスニッフィングという方法もあるよ。
通信の中に含まれるセッションIDが盗まれちゃうってことか!
その通り!HTTPSを使っていないと通信が暗号化されないから、盗聴される危険があるよ。
次に、セッションIDを推測する方法です。
セッションIDが連番になっていたり、日付を元に作られていたりすると、攻撃者から推測されやすくなってしまうよ。
確かに!
最後に、攻撃者が用意したセッションIDをユーザーに使用させる方法です。これをセッションフィクセーション攻撃というよ。
セッションIDを攻撃者があらかじめ用意しておいて、それをユーザーがクリックするURLの中に埋め込んだりしてユーザーのセッションIDとして使用させます。
ユーザーがそのセッションでログインすると、ブラウザはセッションID1234の人はログイン済みですね、と判断します。
だからその後に攻撃者が同じセッションIDでアクセスしたら、ログイン後の状態で操作できちゃうってことになるよ。
セッションIDを盗んで使うだけじゃなくて、ユーザーに押し付けて使わせる、みたいな手法もあるんだね...!漏洩させない対策だけしてもダメってことか。
そうそう。じゃあ次は対策について紹介していくよ!
一番大事なのは、セッションIDを安全に管理することだよ。
まずはセッションIDは予測しづらいランダムな値にし、正しくCookieに保存すること。さらにハッシュ化して保存しておくことで、万が一漏洩してもリスクを軽減できるよ。
あとはセッションフィクセーション対策のためにログイン後やパスワード変更後にセッションIDを変更することも有効だよ。
ログイン後にセッションIDが変わるなら、攻撃者が持っているセッションIDではログイン後の状態でアクセスはできないね!
そうそう!あとはセッションIDに有効期限を設定したり、一定時間操作がなかったら自動ログアウトするのもいいね。
セッションIDが固定されていたり、ずっと同じだったりすると、攻撃者が使いやすくなっちゃうんだね。
その通り!また、IPアドレスごとにセッションを固定する、セッションIDの使用回数や時間を制限する、同じセッションIDでの複数のアクセスを検出したら無効化するなど、不正なセッションIDの利用を制限するのも重要になるよ。
なるほど!乗っ取られたセッションがそのまま使えないようにする工夫も大事なんだね!
そうそう!ただ、IPアドレスは使う端末を変えたり企業のネットワーク内とかで変わる可能性があるので、過度に依存するとユーザーが使いづらくなってしまうこともあるからそこは注意しよう。
次に、HTTPSを使うことです。すべての通信をHTTPSで暗号化することで、ネットワーク上でセッションIDを盗まれにくくするよ。
なるほど!フリーWi-Fiとかでも、HTTPSなら盗聴されにくいんだね!
そうそう。さらにCookieにSecure属性を設定することで、HTTPSでのみ送信するようにできるから、これも忘れず設定しておくことが大事だね!
次にXSS対策をすることです。
XSSによってセッションIDが盗まれないように、サイト側で適切な対策が必要だよ。XSSの対策については、過去の動画でも解説しているので、そちらもぜひ合わせて見てみてください。
最後に二段階認証(2FA)を導入することです
セッションIDが盗まれても、二段階認証を突破しないとログインできない仕組みにするのも有効だよ。
確かに!スマホに送られてくる認証コードを入力しないとログインできないようにすれば、乗っ取られにくくなるね!
そうそう。ただ、あまりにも頻繁に2段階認証を行うのはユーザー視点で使いづらいから、新しいデバイスやブラウザの使用時、久しぶりのログイン時とか、タイミングを工夫するのがいいよ。
今日はセッションハイジャックについて解説しました!
セッションIDが盗まれると、ログインしているアカウントが乗っ取られる危険があるってことがよくわかったよ!
うん!でも、セッションIDの管理をしっかりしたり、きちんと対策をすれば防ぐことができるよ!
動画の方も是非是非ご覧ください!