
セッションハイジャックの攻撃の仕組みとは? 代表的な手口や効果的な対策方法を解説

「セッションハイジャック」は、Webサービス利用時に発行されるセッションIDを不正に取得し、正規のユーザーになりすますサイバー攻撃の一つです。代表的な手口としては、セッションIDの推測、窃取、セッションフィクセーション(セッションの固定化)が知られています。被害に遭うと、機密情報の漏洩やWebサイトのデータ改ざんリスクがあり、これらは信頼失墜や損害賠償に発展する危険性をはらんでいます。本記事では、セッションハイジャックの特徴や犯行の仕組み、代表的な手口や攻撃を受けた場合の影響、対策方法について解説します。
セッションハイジャックとは?
セッションハイジャックとは、Webサービス使用時に発行されるセッションIDを不正に取得し、正規のユーザーになりすますサイバー攻撃です。セッションIDは、ユーザーがログインしている間にサーバーとクライアント間でやりとりされる一連の通信を識別するための一時的な識別子です。
セッションハイジャックの被害に遭うと、サーバーへの不正侵入による情報漏洩や改ざん、クレジットカードの不正利用などの危険があり、これらは信頼失墜や損害賠償に発展する恐れがあります。セッションハイジャックによる不正アクセスと正規のユーザーによる操作は、サーバー側では区別がつきません。そのため、ユーザーが気づかないうちに被害に遭っているケースが大半です。セッションハイジャックは、ユーザーのプライバシーやセキュリティに重大な影響を及ぼすため、適切な対策を講じることが重要です。
セッションとは
「セッション」とは、Webサイトにアクセスしてから終了するまでの一連の通信の流れのことです。例えば、オンラインショッピングサイトで買い物をする場合、ユーザーがログインしてから商品を選び、カートに入れ、最終的に購入手続きを完了するまでの一連の行動がセッションに当たります。このセッションはWebサーバー上のデータベースに保存され、「セッションID」を付与することで、一連の行動を同一のユーザーの操作によるものだと識別しています。セッションIDは、ユーザーが初めてWebサイトにアクセスした際にサーバー側で発行され、CookieやURLパラメータの一部としてユーザーが使用しているブラウザ内に保存されます。サーバーは、このセッションIDを用いることで、同一のユーザーが行っている一連の操作を追跡することができ、適切なサービスを提供できるようになります。
セッションハイジャックの犯行の仕組み
攻撃者は、不正に入手したセッションIDを使うことで、正規ユーザーになりすましてWebサイトにアクセスします。そして、本来はログイン後の正規ユーザーにのみに許可された権限を利用してサーバーへの不正侵入を試み、情報取得や改ざん、クレジットカードの不正利用などを行います。ここでは、セッションハイジャックの犯行の流れを紹介します。
① ユーザーのサイトログインにより、セッションIDが発行される
ユーザーがWebサイトにログインすると、サーバーはユーザー固有のセッションIDを発行します。セッションIDはCookieやURLパラメータとして、ユーザーが使用するブラウザに保存されます。セッションIDは、ユーザーのログイン状態の維持や状態を特定する際に使用され、これによりユーザーはWebサイトにログインした状態を保持したり、ショッピングカートの中身を管理したりすることができるようになります。
② 攻撃者がセッションIDを不正に入手する
攻撃者によるセッションIDの不正入手の方法には、セッションIDの生成パターンを解析し、正規のセッションIDから生成規則を推測して入手する方法や、攻撃者がネットワーク上の通信を盗聴して窃取する方法、偽のリンクが記載されたメールをユーザーに送りつけ、それをクリックしたユーザーをだまして攻撃者が用意したセッションIDを使用させる方法などがあります。
③ 攻撃者がユーザーになりすましてサイトにアクセスする
攻撃者は、不正に入手したユーザーのセッションIDを悪用し、正規ユーザーになりすましてWebサイトにアクセスします。Webサイト(サーバー)がセッションIDによって利用者の特定をしている場合、同じセッションIDでアクセスすることで、正規ユーザーになりすませてしまうのです。攻撃者はログイン後、本来は正規ユーザーにのみに許可された権限を悪用して、サーバーに不正侵入し、情報取得や改ざん、クレジットカードの不正利用などを行います。
セッションハイジャックの代表的な3つの手口
セッションハイジャックの手口として、セッションIDの推測、窃取、セッションフィクセーション(セッションの固定化)の3つが代表的です。ここでは、それぞれの手口についてご紹介します。
セッションIDの推測
セッションIDはユーザーID・IPアドレス・日時・乱数などを組み合わせたり、加工したりして生成されるケースが多いです。Webサーバーが生成するセッションIDのルールが規則的である場合、「総当たり攻撃(ブルートフォース攻撃)」を用いてセッションIDを推測し、正規の利用者になりすますことが可能になります。
セッションIDの窃取
ユーザーとサーバー間の通信が暗号化されていない場合、ネットワーク上の通信データを解析するために使用するパケットキャプチャーソフトウェアを悪用することで通信を盗聴して、セッションIDを窃取できます。また、Webサイトに脆弱性があると、不正なスクリプトを埋め込み、Webサイトを閲覧した不特定多数のユーザーのブラウザ上でそのスクリプトを実行させる「クロスサイトスクリプティング(XSS)攻撃」により、セッションIDが盗まれることがあります。
セッションフィクセーション
セッションフィクセーション(セッションの固定化)は、攻撃者が事前に用意したセッションIDを強制的に使用させる手法です。具体的な攻撃の流れは、攻撃者は事前に用意したセッションIDを使用させるため、SNSやメールを用いて偽のリンクを利用者に送信します。ターゲットとなった利用者が偽のリンクをクリックし、正規のWebサイトにログインしてしまうと、攻撃者は同じセッションIDを使用して正規のユーザーになりすまして、不正な操作を実行できてしまいます。
SNSやメールに記載されるリンクのドメインは、正規のWebサイトのドメインのためターゲットとなった利用者は気づきにくい傾向があります。
セッションハイジャックを受けた場合の影響
セッションハイジャックの被害に遭ってしまうと、機密情報や個人情報が漏洩する危険があります。また、Webサイトのデータ改ざんやクレジットカードを不正利用される可能性もあります。ここでは、具体的な影響について紹介します。
機密情報やプライベート情報の漏洩
不正アクセスにより、正規ユーザーになりすましてWebサービスにアクセスされてしまうと、本来はログイン後の正規ユーザーのみが閲覧・操作できる機密情報や個人情報を取得されてしまいます。個人情報は不正利用されるだけでなく、ダークウェブで売買される危険性もあります。また、組織の場合、顧客情報や社内企画書が盗まれることで、信頼失墜や損害賠償などの甚大な被害につながります。
サーバーへの不正侵入
管理権限を持つユーザーになりすましてサーバーに侵入されると、企業のWebサイトが改ざんやサーバー内のデータの流出など、顧客や取引先の信頼を失ってしまうような被害が考えられます。また、Webサイト内のリンクを改ざんされてしまうと、閲覧者がフィッシングサイトに誘導され、被害がさらに拡大する恐れもあります。
オンラインバンキングの不正出金やクレジットカードの不正利用
正規ユーザーになりすまして銀行などのオンラインバンキングにログインされてしまうと、多額の金銭を不正に引き出される可能性があります。また、不正アクセスされたアカウントにクレジットカード情報が登録されていると、攻撃者はその情報を悪用してネットショッピングや不正購入が可能です。身に覚えのない請求を見て初めて被害に気づくケースも多いです。
登録情報の漏洩や改ざん
Webサービスに不正アクセスされると、登録情報の漏洩や改ざんされる可能性があります。攻撃者が正規ユーザーになりすますことで、ログイン情報を含む登録情報が漏洩し、正規ユーザーが利用できなくなる恐れもあります。
セッションハイジャックに対する効果的な対策方法
セッションハイジャックへの対策において、Webサイトのユーザー側で実施できる対策は限られているため、Webサイトの管理者側の対策が重要になります。ここでは具体的な対策について紹介します。
セッションIDをURLに含めない
セッションハイジャックへの対策の基本は、セッションIDを知られないことです。URLにセッションIDを含めている場合、攻撃者は容易にセッションIDを取得できてしまいます。そのため、Cookieを用いてセッションIDを管理する方法に切り替えることが強く推奨されます。
推測が困難なセッションIDにする
セッションIDがユーザーIDと日付の組み合わせなど単純な構成の場合、攻撃者から推測されやすくなります。特に日付や連番など規則性のあるセッションIDは総当たり攻撃によって、推測される可能性が高いため、ランダムで予測困難な文字列を使用する必要があり、擬似乱数を組み合わせた推測困難なものにすることが重要です。
セッションIDの変更
ログイン後に既存のセッションIDを破棄し、新しくセッションIDを付与することで、セッションフィクセーションを防げます。セッションフィクセーションは、前述したとおり、攻撃者が事前に用意したセッションIDをユーザーに使用させ、ユーザーになりすます攻撃手法です。ログイン時に新たなIDを発行し、ログイン後に新しいセッションIDが付与される仕組みにすることで、攻撃者は事前に取得したセッションIDではアクセスできなくなります。
WAFの利用
Webアプリケーションの脆弱性を突いた攻撃を防ぐWAF(Web Application Firewall)を利用することで、Webアプリケーションにスクリプトを埋め込み、ユーザーのブラウザ上で不正なスクリプトを実行する「クロスサイトスクリプティング(XSS)攻撃」を抑制できます。
まとめ
ここまで、セッションハイジャックの概要や仕組み、代表的な手口、それらへの対策を紹介しました。セッションハイジャックは、実際に被害に遭っていてもユーザー側では気づきにくいケースも少なくないため、Webサイト運営者側の対策が重要になります。万が一、Webサイトの閲覧者やサービス利用者などに被害が及ぶと、信頼を失い多大な損失を招きかねません。今回ご紹介した記事が、自社のWebサイトではどのような対策を取るべきかを考えるきっかけとなれば幸いです。