「セッションハイジャック」とは、ハイジャックという言葉があるように、Webサービスを利用している接続を、乗っ取ってしまうサイバー攻撃です。
もし、セッションハイジャックの被害にあうと、ユーザーのパスワードやクレジットカードの情報が盗まれて、気づかないうちに大きな被害につながる可能性があります。
自社でセキュリティを担当している方は、ぜひこの記事を読んで正しい知識を身につけ、セキュリティの向上に役立ててみてください。
また、企業にとって危険で、IPAの情報セキュリティ10大脅威の一つにも挙げられる標的型攻撃メールの事例・サンプルをまとめたpdf資料を無料で配布しています。全編オリジナルの解説付きです。貴社のセキュリティ対策の参考にしてください。
セッションハイジャックとは
「セッションハイジャック(Session Hijacking)」とは、悪意ある人物がログイン中のサービス利用者のセッションIDを不正に取得し、セッションを乗っ取るサイバー攻撃です。
セッションハイジャックは、現在サービスに接続しているユーザーであるとなりすますため、ログインに必要なメールアドレスやパスワードなどが分からなくても乗っ取れてしまうのが特徴です。
もし、セッションを乗っ取られてしまった場合、そのサービスに登録されているメールアドレスや、クレジットカード、住所や氏名などの個人情報が閲覧できるようになるため、金銭的被害にもつながる可能性があります。
セッションについておさらい
ここで「セッション」についておさらいしておきましょう。
セッションとは、通信の始まりから終わるまでの一連の流れのことです。
ログインが必要なサービスでは、ユーザーごとの機能を提供するために、ユーザーごとのセッションを識別し続ける必要があり、そのために使われる識別子を「セッションID」と呼びます。
例えば通信販売サイトAmazonを利用するときは、以下のような流れになります。
- 会員登録 or ログインする
- 欲しい商品を検索
- 目当ての商品をカートに入れる
- 商品が届く住所や時間を指定
- クレジットカードで決済
- 注文が確定
- ログアウト
このような一連の流れを全て総括してセッションといい、この動きをユーザーごとに識別するために利用するのがセッションIDです。
セッションハイジャックとクロスサイトスクリプティングの違い
セッションハイジャックと同列に語られるサイバー攻撃に「クロスサイトスクリプティング」があげられますが、大きな違いは「サイトにログインしているユーザーになりすます」か「トラップを仕掛けて悪意あるスクリプトを実行する」という違いがあります。
クロスサイトスクリプティングは、Webサイトの脆弱性を見つけ、そこに情報を盗むスクリプトを仕掛けてWebサイトへ誘導します。それを知らずにサイトに訪れたユーザーが、気づかないうちにスクリプトを実行し、個人情報を盗む仕組みです。
セッションハイジャックはセッションIDに偽装して、そのユーザーになりすまして自らアクセスする「アクティブな攻撃」なのに対し、ログインには関与せず、ユーザーの気づかないうちにスクリプトを実行してもらう「待ちの攻撃」といえるでしょう。
セッションハイジャックの仕組み
セッションハイジャックの主な流れの仕組みは以下のような流れです。
1.ユーザーがセッション確立
基本的に、Webサイトにログインすると、ユーザーを識別するために、セッションIDが発行されます。
2.セッションIDを入手
なんらかの手段で、セッションIDを入手します。
3.ユーザーに成りすましてアクセスする
入手したセッションIDを利用して、正規のユーザーになりすましてアクセスします。
セッションを取得する方法により、流れは一部変わってしまいますが大まかな流れはこのようになります。実際に操作しているユーザーになりすましているため、サイト側からは異常が無いように見えます。
セッションハイジャックの手口
では、具体的にセッションハイジャックが起きてしまう原因である「セッションIDの特定」にはどのような手口が使われているのでしょうか。
これには、主に以下のような種類があります。
セッションIDを予測する
セッションIDを盗み見たりするのではなく、そもそもセッションIDの規則性を認識し、予測してセッションIDを見つけてしまうという手口です。
例えば、セッションIDが過去に使われていた物が以下のようなものだとします。
- 7/1 12時05分 abcd202207011205
- 7/2 07時45分 abcd202207020745
- 7/3 22時30分 abcd202207032230
これを見る限り、ユーザーIDと日付や時間でセッションIDが生成されているように見えますね。
この法則を考えると、7月4日にabcdというユーザーが10時30分にアクセスしたらセッションIDは「abcd202207041030」というIDになる可能性が高いように見えます。
このように、脆弱性の高いセッションIDの場合、この予測が成り立ちやすくなり看破されやすくなります。
ユーザーからセッションIDを奪取
セキュリティの脆弱性をつき、不正アクセスを行い、セッションIDをジャックする方法です。
また、セッションIDを直接ジャックする以外にも、Cookie(クッキー)を不正表示すること、セッションIDを盗み見ることでジャックするケースもあります。
通販サイトでは、「Cookieを有効にしてください」という表示が出るため、聞いたことがある人も多いのではないでしょうか。
Cookieは、Webサーバーがクライアントに保存する前に使用していたデータのことをいいます。
通販サイトで買い物をしている時に、買い物カゴに商品を入れたままにしてログアウトしても、再度ログインした時に商品がカゴから消えずに残っているのは、Cookieが情報をファイルとして保存しているからです。
そのCookieには、セッションIDや、個人情報などの機密性の高いデータが載っている可能性が高く、Cookieの情報から不正アクセスされてしまうリスクがあります。
Cookieの許可は、信頼できるサイトのみで行いましょう。
Cookieについては以下のページで解説しています。
こちらのページもあわせてご覧ください。
セッションハイジャックの被害事例
セッションハイジャックにおける被害事例としては「パスワードの流出」「不正アクセス」「個人情報の流出」などがあげられます。
実際にあった被害としては、以下のような事例があります。
ApacheのサーバがXSSでセッションハイジャック、パスワード流出の可能性
2010年4月5日、Apacheという世界的に有名なWebサーバソフトで、バグトラッキングソフト「JIRA」をホスティングしているサーバにターゲット攻撃を受けた事例です。
管理者がクリックしたURLには、クロスサイトスクリプティングでCookieを盗む攻撃コードが仕込まれており、管理者の権限を含んだセッションが奪われてパスワードが流出してしまいました。
クロスサイトスクリプティング攻撃がYahoo!オークションに仕掛けられる
2004年5月11日、有名オークションサイト「Yahoo!オークション」に、クロスサイトスクリプティング攻撃として、出品者の自己紹介ページに閲覧者のブラウザをクラッシュさせる「ブラウザクラッシャー」が仕込まれていてた事例です。
特に個人情報を盗まれるような被害は確認されなかったようですが、攻撃、悪用されていてもログなどから検知できないケースが多いため、即座に被害が確認できた稀有な事例といえます。
セッションハイジャックの対策
ここまでセッションハイジャックについて解説してきました。
セッションハイジャックの対策としては、以下の方法が考えられます。
セッションIDはURLに含めない
URLにセッションIDを含めると、そのURLを第三者に知られた際に、IDが漏洩したり推測されやすくなってしまいます。
「URLは他人に教えなかったら大丈夫」と思っていても、ブラウザからサーバへのリクエストを記録している「Webログデータ」で、知識があれば簡単に判明するので、Webアプリケーション側にセッションIDを持たせる管理に変更することにより、この問題を回避することができます。
IDをセッション管理ツールで管理
Webアプリケーション開発ツールや、フレームワークに実装されている、セッション管理ツールを使用することで、セッションIDが推測可能な状態になってしまうことを、ある程度回避することができます。
たとえば、セッションIDで使っている文字種別が少ない場合や、IDに乱数を絡めたり、ログイン後に既存のセッションIDを破棄して、毎回違ったIDをユーザーに付与したり、多重ログインを禁止することで、予測ができたり不正アクセスによる被害を防げるでしょう。
WAFによるセッションハイジャック対策
WAF(Web Application Firewall)とは、Webアプリケーションの脆弱性を突いた攻撃に対する、セキュリティ対策のひとつです。ネットワークレベルの対策である、ファイアウォールとは違い、外部へ公開するWebアプリケーションに特化したものといえます。
WAFはマルウェアの他に、不正な通信を検知して通信を遮断するため、セッションハイジャック対策になります。
まとめ
セッションハイジャックによるWebサイトの不正アクセスは、金銭的に大きな被害を出しかねないサイバー攻撃のため、自社でサービスを運用している場合は対策が必須です。
セッションハイジャックを防ぐには「セッションIDの管理」「WAFの活用」を徹底しましょう。