Written by 石田成美

目 次
セッションハイジャックとは、Webサイトを利用する際に発行されるセッションIDを不正に入手し、正規のユーザーになりすまして不正アクセスをする、サイバー攻撃です。
セッションハイジャックをされると、サーバーへの不正侵入による情報漏洩や改ざん、クレジットカードの不正利用など、さまざまな被害が予想されます。
セッションハイジャックは、ユーザーのログインIDやパスワードが直接盗まれるのではなく、Webサイトで発行されるセッションIDを悪用した攻撃のため、「サイト管理者・運営者側」の対策が非常に大切です。
▼この記事を要約すると
- セッションハイジャックとは、推測や窃取などで不正に入手した「セッションID」を使って正規のユーザーになりすまし、ユーザーとサーバー間のやりとりを乗っ取るサイバー攻撃
- セッションハイジャックによる被害としては「機密情報・個人情報の窃取」「サーバーへの不正侵入」「登録情報の漏洩・改ざん」「クレジットカードの不正利用」「不正送金」などがある
- セッションハイジャックを防ぐためには、そもそもセッションIDをURLパラメータに含めない、第三者から推測されにくいセッションIDにする、ログイン成功後に新しいセッションIDを付与する、HTTPS通信で利用するCookieにsecure属性を加える、といった対策が有効
- セッションハイジャックは、Webサイトのセッション管理の脆弱性を狙った攻撃なので、Webサイトにおける脆弱性診断サービスを受けておくのも重要
セッションハイジャックとは
セッションハイジャックとは、推測や窃取などで不正に入手したセッションIDを使って正規のユーザーになりすまし、ユーザーとサーバー間のやりとり(=セッション)を乗っ取る(=ハイジャック)サイバー攻撃です。
この攻撃の特徴は、ユーザーのログインIDやパスワードを直接窃取してユーザーになりすますのではなく、Webサイトで発行された、セッションIDを窃取してなりすますという点です。ログインIDやパスワードが盗まれなくても、セッションIDが悪用されるとアカウントが乗っ取られてしまいます。
セッションハイジャックによるリクエストは、サーバー側からすると正規のユーザーによる操作と区別がつかないため、気づかないうちに被害を受ける場合が大半です。
セッションハイジャックをより理解するために、まずはセッションとセッションIDについて詳しく説明していきます。
そもそもセッション・セッションIDとは何か
「セッション」とは、Webサイトにアクセスしてから終了するまでの、通信の一連の流れのことを指します。
例えば、オンラインショッピングサイトで買い物をする場合
- ログイン(会員登録)する
- 欲しい商品を検索する
- 商品をカートに入れる
- 別の商品を検索する
- 商品をカートに入れる
- 発送先の住所を入力する
- クレジットカード情報を入力する
- 購入する
- ログアウトする
という「ログインからログアウトまでの一連の行動」があります。これがセッションです。
そしてこれら一連の行動=ログインしている同一のユーザー操作と判断するために、「セッションID」という情報が生成され、セッションに紐づけられます。通常セッションIDは、初回のアクセス時にサーバー側で発行され、CookieやURLパラメータの一部に付与された後、ユーザー側のブラウザに保存されます。
2回目以降はアクセスの度に、ユーザー側からセッションIDをサーバーに送ることで、サーバー側はどのユーザーかを識別して情報を取り出し、返送することで通信を継続します。このセッションの仕組みによって、商品を検索したりカートに商品を追加したりして、次の画面に遷移しても、同一人物としてのデータを継続してオンラインで反映できるのです。
セッションはユーザーの意思でログアウトするか、あるいは一定時間を経過すると、自動でセッションが切れるよう設定されています。
セッションハイジャックの仕組み・犯行の流れ
セッションハイジャックは、以下のような手順で行われます。
- ユーザーがサイトにログインし「セッションID」が発行される
- 攻撃者が発行された「セッションID」を不正入手する
- 攻撃者がユーザーになりすまし、サイトにアクセスする
1.ユーザーがサイトにログインし「セッションID」が発行される
Webサイトなどにログインすると、ユーザーを識別するためのセッションIDがサーバー側で自動的に発行され、セッションに紐づけられます。
セッションIDは、CookieやURLパラメータの一部に付与され、ユーザーに返送・ブラウザへと保存されます。
2.攻撃者が発行された「セッションID」を不正入手する
攻撃者は、セッションIDをさまざまな手口で不正入手します。
具体的な手口は、セッションIDの推測、窃取、固定化などがあります。詳しくは、以下「セッションハイジャックの代表的な3つの手口」で解説します。
3.攻撃者がユーザーになりすまし、サイトにアクセスする
攻撃者は、不正入手したセッションIDを使用してWebサイトにアクセスします。セッションを乗っ取ることで正規のユーザーになりすまし、本来「ログイン後のユーザーだけが許可される操作」ができてしまいます。
具体的には
- 非公開の個人情報の閲覧
- 商品の購入
- 送金、出金
- 登録情報の更新
- 掲示板への書き込み
などが挙げられます。
セッションハイジャックの代表的な3つの手口
セッションハイジャックの主な手口は、以下の3つです。
- セッションIDを推測
- セッションIDを窃取
- セッションIDの固定化(セッションフィクセーション)
1.セッションIDを推測
出典:IPA|安全なウェブサイトの作り方 – 1.4 セッション管理の不備
1つ目のセッションハイジャックの手口は「セッションIDを推測する」というものです。攻撃者がターゲットのシステムにログインを繰り返すことで、セッションIDの生成規則を割り出します。
セッションIDの生成規則が「1234」といった数字の連番や日付など「単純なもの」であれば、ブルートフォース攻撃(総当たり攻撃)などによって、攻撃者に認証を突破される可能性があります。
2.セッションIDを窃取
出典:IPA|安全なウェブサイトの作り方 – 1.4 セッション管理の不備
ユーザーとサーバー間の通信が暗号化されていない場合、パケットキャプチャソフト(ネットワーク上のパケットを収集するソフト)などを悪用することで、ユーザーとサーバー間の通信を盗聴できてしまいます。
それにより、セッションIDを盗むことが可能になります。
また、Webサイトに脆弱性がある場合、クロスサイトスクリプティング(XSS)でセッションIDを盗まれることがあります。
クロスサイトスクリプティングとは、Webサイトの脆弱性(セキュリティ上の欠陥)につけこんで不正なスクリプト(簡易プログラム)を埋め込み、サイトを閲覧した不特定多数のユーザーにスクリプトを実行させるサイバー攻撃のことです。
▼クロスサイトスクリプティングによってセッションIDを盗む流れ
- 攻撃者が脆弱性があるWebサイトに罠(不正なスクリプト)を仕掛ける
- 罠が仕掛けられたWebサイトにユーザーがアクセスする
- ユーザーがWebサイト内のリンクをクリックすると不正なスクリプトが実行される
- ユーザーは攻撃者が用意したフィッシングサイトに移動する
- 攻撃者にセッションIDが漏洩する
クロスサイトスクリプティングについては、下記の記事で仕組みや対策を解説しています。
3.セッションIDの固定化(セッションフィクセーション)
出典:IPA|安全なウェブサイトの作り方 – 1.4 セッション管理の不備
セッションIDの固定化とは、攻撃者が事前に用意したセッションIDを正規のユーザーに利用させ、後から攻撃者が正規のユーザーになりすます(セッションを乗っ取る)手法のことです。
事前に用意したセッションIDを含むURLを、メールやSNSなどで正規のユーザーに送り込みます。ユーザーがそのURLをクリックしてログインすると、Webサイト上では攻撃者が用意したセッションIDと正規ユーザーが紐づけられてしまいます。
その後、攻撃者も同じセッションIDでアクセスすれば、正規のユーザーになりすますことができるという仕組みです。
セッションハイジャックによる被害の例
セッションハイジャックによる被害は、以下のようなものが想定されます。
- 機密情報・個人情報が盗まれる
- サーバーに不正侵入される
- 登録情報が漏洩したり改ざんされたりする
- クレジットカードを不正に利用される
- オンラインバンキングにて不正送金される
1.機密情報・個人情報が盗まれる
正規のユーザーになりすまして各種サービスやサイトにアクセスされると、本来であればログイン後のユーザーだけが閲覧・操作できる個人情報が盗まれてしまいます。
盗まれた情報は不正に利用されるだけでなく、金銭目的のハッカーにより、ダークウェブ(※)で売買されるという危険性もあるでしょう。
※ダークウェブ…通常の検索エンジンによる検索では表示されないWebサイト。非常に匿名性が高く、違法なもの(不正に入手した個人情報や薬物、マルウェアを作成するツールなど)が多数取引されている
また企業の場合、不正アクセスによって顧客情報や社内企画書など重大な情報が盗まれることで、社外からの信頼失墜や損害賠償の支払いなど、甚大な被害が予想されます。
2.サーバーに不正侵入される
管理権限をもつユーザーになりすましてサーバーに侵入されると、企業のWebサイトの改ざんや、サーバー内に保存されているデータの流出、システムの破壊など、さまざまな被害が考えられます。
企業のWebサイトが改ざんされると、サイトの閲覧者がフィッシィングサイトに誘導されることがあり、被害がさらに拡大する恐れもあります。
また、データの流出やシステムの停止は、顧客や取引先の信頼を失うリスクがあります。
3.登録情報が漏洩したり改ざんされたりする
Webサービスなどに不正アクセスされると、そのサービスに登録してある情報が漏洩したり、改ざんされたりしてしまいます。
登録情報のなかには、Webサービスのログイン情報も含まれるため、正規のユーザーが利用できなくなる可能性があります。
4.クレジットカードを不正に利用される
不正アクセスされたアカウント情報に、クレジットカードの情報が登録されている場合、カードの所有者になりすまして盗んだカード情報を使い、ネットショッピングや不正購入に利用されます。
身に覚えのないクレジットカードの請求を見て、初めて被害に気付いたというケースも少なくありません。
5.オンラインバンキングにて不正送金される
オンラインバンキングのセッションが乗っ取られると、攻撃者が金融取引を自由に行うことができてしまいます。
攻撃者が用意した口座に勝手に送金させられたり、自身の口座から不正に金銭を引き出されたりする可能性が高いです。
セッションハイジャックの被害事例
セッションハイジャックのターゲットは個人だけでなく、過去には多くの有名な企業も被害にあっています。
セッションハイジャックに関する、過去の著名な被害事例についてご紹介します。
1.サーバー不正アクセス事件
世界的に有名なWebサーバーソフトウェアにて、セッションハイジャックが発生した事件です。
ホスティングサーバーの管理者が、クロスサイトスクリプティング攻撃によって管理者権限をもつセッションを奪われる事件がありました。
また攻撃者は同時にアカウントへの「ブルートフォース攻撃」も行い、どちらかが成功したことによって、管理者権限を含んだセッションが奪われました。
2.動画共有サービスの不正アクセス事件
2010年7月、世界最大の動画共有サービスが、セッションハイジャックによる不正アクセス被害にあった事件です。動画共有サービスのコメントシステムにて脆弱性が悪用され、クロスサイトスクリプティング攻撃により、セッションIDを奪われたそうです。
攻撃者にセッションIDが奪われた結果、動画のコメントが表示されなくる、デマ情報がポップアップ表示される、などの被害が広がりました。
セッションハイジャックを防ぐには?
セッションハイジャックを防ぐためには、以下のような対策が必要になります。
- セッションIDをURLパラメータに含めない
- 第三者から推測されにくいセッションIDにする
- ログイン成功後に新しいセッションIDを付与する(固定値にしない)
- HTTPS通信で利用するCookieは、secure属性を加える
- Webサイトにおける脆弱性診断サービスを受ける
1.セッションIDをURLパラメータに含めない
1つ目に有効な対策は「セッションIDをURLパラメータへ含めない」ことです。
Cookieが使用できないサイトなどでは「http://〇〇〇.com/△△△/select?id=12345」のように、セッションIDをURLパラメータに含んでいることがあります。
しかしURLパラメータにセッションIDが含まれていると、悪意のある攻撃者にそのURLを入手され、セッションハイジャックへ悪用される可能性があります。
セッションIDは、Cookieに格納、もしくはPOSTメソッドの hiddenパラメータに格納して受け渡しするようにしてください。
2.第三者から推測されにくいセッションIDにする(根本的な対策)
セッションIDが、日付や時刻・連番のような、単純で規則性のあるものは、攻撃者による総当たり(ブルートフォース攻撃)によって推測される可能性があります
セッションIDは、ランダムかつ長く複雑な文字列など、予測困難なものを採用しましょう。
3.ログイン成功後に新しいセッションIDを付与する(固定値にしない)
ログイン後に既存のセッションIDを破棄し、新しいセッションIDを付与することで、セッションIDの固定化(セッションフィクセーション)による攻撃を防ぐことができます。
セッションIDの固定化は、攻撃者が事前に用意したセッションIDをユーザーに使わせて、後から攻撃者が正規のユーザーになりすまして不正操作する、という手法でした。
固定のセッションIDを使用せず、毎回ログインする際に新たなIDを発行することで、セッションハイジャックのリスクを軽減することが可能です。
4.HTTPS通信で利用するCookieは、secure属性を加える
サーバーでCookieを発行する際に、Cookieに「secure属性」という項目を設定できます。
secure属性はCookieの設定の1つで、安全なHTTPS通信のみ利用可能とすることが可能です。
Cookieにsecure属性がない場合、暗号化されていないHTTPの通信でも利用できるため、HTTP通信によってCookie情報が盗聴される危険性があります。
5.Webサイトにおける脆弱性診断サービスを受ける
セッションハイジャックは、Webサイトのセッション管理の脆弱性を狙った攻撃です。そこで自社のWebサイトに脆弱性がないか、外部の診断サービスを受けてみるのも効果的な対策です。
脆弱性診断サービスを受けると、セッションハイジャックをはじめ、Webサイトにおける様々なセキュリティ課題を明らかにできます。
定期的に診断することで、Webサイトのセキュリティの向上とともに、信頼性も高めることができます。
セッションハイジャック対策なら「LANSCOPE プロフェッショナルサービス」にお任せ
貴社のWebサイト・Webアプリケーションにおけるセッションハイジャック対策なら、LANSCOPE プロフェッショナルサービスにお任せください。
セッションハイジャックの原因となる
- セッション追跡パラメータの漏洩
- セキュアでない cookie の使用
- ログアウト後のサーバセッションの長時間にわたる残存
といったWebサイトの脆弱性を、国家資格をもつ弊社のエキスパートが洗い出します。
PCサイトからモバイルサイト、WebAPIまで多様な媒体にて、脆弱性を明らかにし、優先度をつけて必要な対策をお伝えします。
「Webサイトを安全に運用したい」「自社サイトのインシデントによって、業務停止や信頼損失などを起こしたくない」という開発者様・サイト運営担当者様におすすめです。
また、診断内容を重要項目に絞り、より低価格でWebアプリケーションの脆弱性診断を受けていただける「セキュリティ健康診断パッケージ」も提供しております。
まとめ
本記事では「セッションハイジャック」をテーマに、その概要や事例・対策案について解説しました。
本記事のまとめ
- セッションハイジャックとは、不正入手したセッションIDを使ってセッションを乗っ取るサイバー攻撃である
- セッションハイジャックでは、アカウントやパスワードが盗まれなくても不正アクセス被害を受けるリスクがある
- Webサイトに脆弱性があると、セッションハイジャックなどのサイバー攻撃のターゲットになる
- セッションハイジャックは多くの原因が、セッションIDの不正入手に起因するものである
セッションハイジャックの性質上、ユーザー側の対策は限られますので、Webサイト管理者側の対策が最も重要になります。効果的な対策をとって、セッションハイジャックによる、サーバーへの不正侵入や情報漏洩など、被害を未然に防ぎましょう。
また弊社がWEBアプリケーション脆弱性診断を実施した際、検出数のもっとも多かった脅威・リスクの上位5つについて解説した、お役立ち資料もご用意しています。
ぜひ自社サイトやアプリケーションにおける、脆弱性対策の参考にご活用ください。

おすすめ記事