SNSやネットバンキングを利用していて、「身に覚えのないログイン通知が届いた」「アカウントの設定が勝手に変更されていた」といった経験はありませんか。こうした被害は、パスワードの漏えいだけでなく、セッションハイジャックによって引き起こされることもあります。
セッションIDが第三者の手に渡ると、パスワードを入力しなくても本人としてサービスを利用される可能性があります。SNSアカウントの乗っ取りや個人情報の漏えい、不正送金などにつながるケースもあるため、被害を防ぐには、攻撃の仕組みと対策をあわせて理解しておくことが欠かせません。
セッションハイジャックとは
Webサイトやアプリでは、ログイン後にユーザーを識別するための「セッション」が利用されています。
セッションハイジャックは、この認証状態を悪用し、第三者が正規ユーザーになりすましてサービスへアクセスする攻撃です。パスワードそのものを盗まなくても、ログイン後の認証情報が奪われることで、不正利用につながる場合があります。
SNSやECサイトだけでなく、企業の業務システムやクラウドサービスも対象になるため、個人・企業を問わず注意が必要です。
セッションハイジャックが発生する仕組み
セッションハイジャックは、セッションIDを不正に取得し、その情報を使ってログイン中のユーザーになりすます攻撃です。攻撃者がパスワードを知っているとは限らず、認証後に発行されたセッションIDが狙われます。
一連の流れは「ログイン」「セッションIDの取得」「なりすまし」の3段階に分けて考えると理解しやすくなります。
ログインしてセッションIDが発行される
ユーザーがIDとパスワードを入力して認証に成功すると、サーバーはセッションIDを発行します。この情報はCookieに保存されることが多く、以降はセッションIDを使ってログイン状態が維持されます。
この仕組みによって、サービスを利用するたびにログインし直す必要がなくなります。一方で、セッションIDが第三者に渡ると、その利便性がそのまま攻撃に利用される可能性があります。
攻撃者がセッションIDを取得する
攻撃者はさまざまな手口でセッションIDの取得を試みます。例えば、暗号化されていない通信を盗み見たり、XSSを利用してブラウザ内のCookieを窃取したり、あらかじめ用意したセッションIDを利用者に使わせるセッションフィクセーションも代表的な手法です。
どの方法であっても狙われるのはパスワードではなく、ログイン後に発行されたセッションIDです。
セッションIDを利用してログイン状態を乗っ取る
盗み出したセッションIDを利用すると、攻撃者は正規ユーザーとしてサービスへアクセスできる場合があります。サーバーはセッションIDをもとに認証済みかどうかを判断するため、本人と区別できなくなることがあるからです。
その結果、SNSへの投稿やメッセージの送信、ECサイトでの購入、企業システムへのアクセスなど、本来は本人しか行えない操作が第三者によって実行されるおそれがあります。
セッションハイジャックの代表的な攻撃手法
実際の攻撃では通信内容を盗み見たり、Webサイトの脆弱性を悪用したりと、さまざまな方法でセッションIDの取得が試みられます。
セッションフィクセーション
セッションフィクセーションは、攻撃者があらかじめ用意したセッションIDを利用者に使わせ、そのセッションIDを利用してログイン後の認証状態を乗っ取る攻撃です。
通常のセッションハイジャックは「発行済みのセッションIDを盗む」ことを目的としますが、セッションフィクセーションでは、攻撃者が最初から同じセッションIDを共有させる点が大きく異なります。
例えば、細工されたURLからWebサイトへアクセスさせたり、セッションIDが固定された状態でログインを誘導したりすることで、利用者が認証を終えた後も攻撃者が同じセッションIDを利用できる場合があります。
スニッフィング(通信の盗聴)
暗号化されていない通信では、送受信されるデータを第三者に盗み見られる可能性があります。この通信内容を取得する手法がスニッフィングです。
セッションIDが平文で送信されている場合、攻撃者はその情報を利用してログイン中のユーザーになりすませることがあります。現在ではHTTPSの普及によりリスクは低くなっていますが、暗号化されていないWebサイトや安全性が確認できない公共Wi-Fiでは注意が必要です。
XSSを利用したセッション情報の窃取
WebサイトにXSS(クロスサイトスクリプティング)の脆弱性があると、攻撃者は悪意のあるスクリプトを実行させ、Cookieに保存されたセッションIDを取得できる場合があります。
利用者は通常どおりWebサイトを閲覧しているだけでも攻撃の対象になることがあり、不審なリンクをクリックしたことがきっかけで被害につながるケースもあります。Cookieが適切に保護されていなければ、セッションIDが第三者に取得されるリスクは高くなります。
Man-in-the-Middle攻撃(中間者攻撃)
攻撃者が利用者とWebサービスの通信の間に入り込み、送受信される情報を盗み見たり改ざんしたりします。
公共Wi-Fiなど信頼できないネットワーク環境では、中間者攻撃によってセッションIDが漏えいする可能性があります。通信内容が暗号化されていても、不正なアクセスポイントへ接続してしまうと被害につながるケースがあるため、安全性が確認できないネットワークの利用は避けることが重要です。
セッションハイジャックの主な原因
セッションハイジャックは、特定の攻撃手法だけで発生するものではありません。通信環境やWebサイトの設定、利用者の使い方など、複数の要因が重なることで被害につながるケースが多くあります。
通信が暗号化されていない
Webサイトとの通信が暗号化されていない場合、送受信されるデータを第三者に盗み見られるリスクがあります。セッションIDも通信内容に含まれるため、HTTPSに対応していないWebサイトではセッションハイジャックの被害につながる可能性があります。
現在では多くのWebサイトでHTTPSが採用されていますが、一部の古いシステムや暗号化されていないページでは注意が必要です。
Cookieが適切に保護されていない
セッションIDはCookieに保存されることが一般的です。しかし、CookieにHttpOnlyやSecureなどの適切な属性が設定されていない場合、XSSなどの攻撃によってセッションIDが取得されるリスクが高まります。
利用者だけで対策できる問題ではなく、Webサイトやサービス提供者が適切な設定を行うことも重要です。
Webサイトに脆弱性が残っている
入力フォームやコメント欄などに脆弱性が残っていると、攻撃者はXSSなどを利用してセッションIDを取得できる場合があります。
また、古いCMSやプラグインを更新せずに運用していると、既知の脆弱性が悪用されることもあります。利用者側だけでなく、管理者側でも継続的なセキュリティ対策が求められます。
公共Wi-Fiを利用している
フリーWi-Fiなど、誰でも利用できるネットワークでは通信内容が盗み見られるリスクがあります。正規のアクセスポイントを装った偽Wi-Fiへ接続してしまうと、中間者攻撃によってセッションIDを取得される可能性もあります。
外出先で重要なサービスへログインする場合は、VPNやモバイル回線を利用したほうが安全です。
クリックジャッキングとの違い
クリックジャッキングとは、利用者が気付かないうちにボタンやリンクをクリックさせ、意図しない操作を実行させる攻撃です。一方、セッションハイジャックはログイン後の認証情報を悪用して本人になりすます攻撃であり、攻撃の目的や仕組みが異なります。
どちらもWebサービスを狙った攻撃ですが、混同しやすいため、違いを押さえておきましょう。
両者は別の攻撃ですが、Webサイトの脆弱性やセキュリティ対策の不備が原因で被害につながる点は共通しています。
なお、クリックジャッキングによって不正な操作が行われた後、その情報がほかの攻撃に悪用されるケースもあります。そのため、どちらか一方だけではなく、Webサイト全体のセキュリティ対策を考えることが重要です。
セッションハイジャックによる被害
セッションハイジャックが成立すると、攻撃者はログイン中のユーザーとしてサービスを利用できるようになります。その結果、アカウントの不正利用だけでなく、個人情報や企業データの漏えい、金銭的な損失など、さまざまな被害につながるおそれがあります。
被害の内容は利用しているサービスによって異なりますが、特に次のようなケースが多く見られます。
アカウントを不正に利用される
セッションIDを取得した攻撃者は、本人になりすましてサービスへアクセスできます。
例えば、SNSでは勝手に投稿やDMを送信されたり、ECサイトでは登録情報や配送先を書き換えられたりすることがあります。クラウドストレージでは保存されているファイルの閲覧や削除、企業システムでは業務データへのアクセスなど、本来は本人だけが行える操作が第三者に実行される可能性があります。
利用者がログアウトしていない状態では、不正利用に気付きにくいことも少なくありません。
個人情報や機密情報が漏えいする
セッションハイジャックでは、ログイン後に閲覧できる情報がそのまま攻撃者に公開されてしまう可能性があります。
氏名や住所、電話番号といった個人情報だけでなく、契約情報や購入履歴、社内資料、顧客情報などが閲覧・ダウンロードされるケースもあります。企業の場合は、一度の情報漏えいが取引先への影響や法的対応につながることもあり、被害が長期化するおそれがあります。
金銭的な被害やサービスの悪用につながる
オンラインバンキングや決済サービスでは、不正送金や不正決済が行われる可能性があります。
また、サブスクリプションサービスでは契約内容を変更されたり、ECサイトでは高額商品を購入されたりするなど、直接的な金銭被害が発生するケースもあります。
企業向けサービスでは、攻撃者が管理者権限を悪用し、設定変更やデータの持ち出しを行うことで、業務停止や復旧対応など大きな損失につながることもあります。
実際に発生したセッションハイジャックの事例
セッションハイジャックは理論上の攻撃ではなく、実際にさまざまなサービスで被害が報告されています。
例えば、Webサイトの脆弱性を悪用してCookieを窃取し、利用者のアカウントへ不正アクセスしたケースや、公共Wi-Fiを悪用してセッション情報を取得し、オンラインサービスへログインされたセッションハイジャック事件も報告されています。
また、企業では業務システムの認証情報が悪用され、顧客情報や社内データが外部へ流出した事例もあります。近年では、クラウドサービスやリモートワーク環境の普及に伴い、企業アカウントを狙った攻撃も増加しています。
被害のきっかけはさまざまですが、「セッションIDが第三者に取得された」という点は共通しています。そのため、利用者だけでなく、サービスを提供する企業側でもセッション管理を適切に行うことが重要です。
セッションハイジャック対策
セッションハイジャックへの対策は、ユーザー自身ができることと、Webサイト側で実施すべきことに分けられます。どちらか一方だけでは十分とは言えず、両方を組み合わせることが被害の防止につながります。
ユーザーができるセッションハイジャック対策
セッションIDは、利用者が意識しないところで管理されています。普段どおりに使っていても被害に遭う可能性があります。
・HTTPSで保護されていないWebサイトではログインしない
・信頼できない公共Wi-Fiでは重要なサービスを利用しない
・利用後はログアウトし、共有端末ではブラウザを閉じる
・OSやブラウザを常に最新の状態へ更新する
・不審なリンクや添付ファイルを開かない
・多要素認証(MFA)を有効にする
マルウェアや悪意のあるプログラムが原因でセッション情報が漏えいするケースもあります。端末のセキュリティ状態を定期的に確認し、不要なファイルの整理や脆弱性対策をまとめて行いたい場合は、Advanced SystemCareを活用するのも一つの方法です。
Windowsを安全な状態で利用するには、OSだけでなくドライバーも最新の状態を保つことが大切です。更新状況をまとめて確認したい場合は、Driver Boosterを利用すると管理しやすくなります。
セッションハイジャックを検知する方法
セッションハイジャックは、必ずしも「ログイン通知」が届くとは限りません。攻撃者が既存のセッションを悪用した場合、利用者が異変に気付くまで時間がかかることもあります。
例えば、次のような変化が見られたら、一度ログイン状況を確認したほうが安心です。
・身に覚えのない投稿やメッセージが送信されている
・アカウント情報やパスワードが変更されている
・ログイン中の端末一覧に見覚えのない端末が表示される
・ログイン状態のまま突然ログアウトされる
これらの症状が見られた場合は、まず利用中の端末やログイン履歴を確認し、必要に応じてセッションを終了させましょう。
メールアドレスが過去の情報漏えいに含まれていないか確認しておくことも重要です。自分のメールアドレスに漏えいの可能性がないか気になる場合は、まずメールアドレス流出チェックで確認方法を把握しておくと安心です。実際の漏えい状況は、Have I Been Pwnedで確認できます。
セッション情報をクリアする方法
セッションハイジャックが疑われる場合は、パスワードを変更するだけでなく、現在のセッションを無効化することも重要です。
多くのWebサービスでは、次の手順でセッション情報をリセットできます。
①すべての端末からログアウトする
②パスワードを変更する
③「ログイン中の端末」や「セッション一覧」がある場合は、すべてのセッションを終了する
④ブラウザのCookieとキャッシュを削除する
⑤ブラウザに不要な拡張機能がインストールされていないか確認する
ブラウザの拡張機能が原因で情報が漏えいするケースもあるため、使っていない拡張機能や不要なソフトは定期的に整理することをおすすめします。不要なアプリをまとめて削除したい場合は、IObit Uninstallerを利用すると管理しやすくなります。
Webサイト管理者が実施したい対策
セッションハイジャックを防ぐためには、利用者だけでなく、Webサイト管理者による適切なセッション管理も欠かせません。
・HTTPSを必須にする
・CookieにHttpOnly・Secure・SameSite属性を設定する
・ログイン成功後にセッションIDを再生成する
・セッションの有効期限を適切に設定する
・同一セッションによる異常なアクセスを監視する
・WAFやアクセスログ監視を導入する
セッション管理は一つの設定だけで十分とは言えません。OSやブラウザ、アプリケーションまで含めて継続的に安全性を見直すことが重要です。Windowsのセキュリティ対策については、IObitでもさまざまな情報を紹介しています。
まとめ
セッションハイジャックは、パスワードが漏えいしていなくても被害が発生する可能性がある攻撃です。「強いパスワードを設定しているから大丈夫」と考えるのは危険です。
普段利用しているWebサービスでも、公共Wi-Fiの利用やブラウザの設定、ログイン状態の管理など、少しの油断が被害につながることがあります。ログイン履歴や利用中の端末を定期的に確認し、不要なセッションは終了させる習慣を付けておくと、不正アクセスのリスクを抑えやすくなります。


