大半の人々にとって、Webサイトやポータルにログインすることはインターネットの日常的な使用方法です。Webサイトにログインするたびに、セッションが作成されます。セッションとは、2つのシステム間のコミュニケーションです。このコミュニケーションは、ユーザーが終了するまでアクティブなままです。インターネットを介してコミュニケーションを行う上でセッションを開始することは不可欠ですが、これにより、セッションハイジャックのリスクも生じてしまいます。この記事を読み、セッションハイジャックとその仕組み、およびユーザー自身による保護対策をご確認ください。
セッションハイジャックとは
セッションハイジャック(場合によってはCookieハイジャック、Cookieサイドジャック、またはTCPセッションハイジャックと呼ばれます)は、攻撃者がユーザーのインターネットセッションを乗っ取るときに起こります。これは、ユーザーがオンラインでショッピングするとき、請求書に対して支払いを行うとき、または銀行の残高を確認するときに起こる可能性があります。セッションハイジャッカーは、ブラウザーまたはWebアプリケーションを標的とし、その目的は、閲覧セッションを乗っ取ってユーザーの個人情報やパスワードを入手することにあります。
セッションハイジャッカーは、Webサイトをあざむいてセッションハイジャッカーがユーザーであると信じ込ませます。この種の攻撃は、アプリケーションのセキュリティに対して重大な結果をもたらす可能性があります。なぜなら、攻撃者が正規のユーザーとして偽装することで、保護されているアカウント(およびアカウントに含まれるデータ)に不正にアクセスできるからです。
セッションとは
ユーザーがHTTP接続を介してWebサイトまたはアプリケーションにアクセスするたびに、このサービスは一連のコミュニケーションを開いてアクセスを可能にする前に、(たとえば、ユーザー名やパスワードを介して)ユーザーを認証します。ただし、HTTP接続自体は「ステートレス」であるため、ユーザーが行う各アクションは独立して表示されます。このため、HTTPのみを使用している場合、ユーザーは実行するアクション、または表示するページごとに自分自身を再認証する必要があります。
セッションはこの問題を解決します。セッションは、ユーザーがログインしたときにWebサイトまたはアプリケーションをホストしているサーバー上に作成され、初回の認証での基準として機能しつづけます。ユーザーは、サーバー上でセッションが開かれている限り認証された状態を維持でき、サービスからログアウトすることでセッションを終了できます。一部のサービスは、一定時間操作が行われないとセッションを終了します。
多くのサービスでは、Webサイト上の一時セッションCookie、URL、または隠されたフィールド内に保存される一連の数字と文字であるセッションIDを発行することで、これらのセッションを作成します。すべてではありませんが一部の事例で、これらのセッションIDは暗号化されます。多くの場合、セッションIDは、ユーザーのIPアドレスなどの予測可能な情報に基づいています。
セッションハイジャックの仕組み
セッションハイジャックの仕組みを、仮定の例を挙げて以下に示します。
ステップ1:インターネットユーザーが通常どおりにアカウントにログインします。
これには、オンラインバンク、クレジットカードアカウント、オンラインストア、アプリケーション、またはポータルなどがあります。アプリケーションまたはWebサイトが、ユーザーのブラウザーに一時セッションCookieをインストールします。このCookieには、サイトがユーザーの認証とログインを維持し、セッション中にユーザーのアクティビティを追跡することを可能にする、ユーザーに関する情報が含まれます。セッションCookieは、ユーザーがログアウト(または一定時間操作を行わないときは自動的にログアウト)されるまでブラウザー内に残ります。
ステップ2:犯罪者が、インターネットユーザーの有効なセッションにアクセスします。
犯罪者は、様々な手法を使用してセッションを盗みます。多くの場合、セッションハイジャックには、ユーザーのセッションCookieの盗難、Cookie内のセッションIDの特定、この情報を使用したセッションの乗っ取りが含まれます。セッションIDは、セッションキーとも呼ばれます。犯罪者は、セッションIDを取得すると、検知されずにセッションを乗っ取ることができます。
ステップ3:セッションハイジャッカーは、セッションから盗難を行います。
本来のインターネットユーザーがオンライン体験を続けるのに伴い、ハイジャッカーは継続中のセッションを使用して様々な悪質な行為を行います。これには、ユーザーの銀行口座からの金銭の盗難、アイテムの購入、個人データの取得による個人情報の盗難、または重要なデータの暗号化とその返還のための身代金の要求などが含まれます。
セッションハイジャック攻撃は通常、アクティブなコミュニケーションセッションの数が多い活発なネットワークに対して実行されます。これにより、攻撃者は大量のセッションを悪用することができ、また、サーバー上のアクティブなセッションの数が多いため、検知される確率が下がるので、攻撃者を保護することとなります。
セッションハイジャックのタイプ
クロスサイトスクリプティング
クロスサイトスクリプティング攻撃には、Webサーバーまたはアプリケーション内のセキュリティ上の弱点を悪用するサイバー犯罪者が関わっています。クロスサイトスクリプティングは、Webページにスクリプトを挿入する攻撃者が行います。これにより、Webブラウザーがユーザーのセッションキーを攻撃者に明かしてしまい、攻撃者がセッションを乗っ取ることが可能になります。
セッションサイドジャック(セッションスニフィングとも呼ばれます)
この攻撃では、犯罪者はユーザーのネットワークトラフィックにアクセスする必要があります。犯罪者は、ユーザーが安全でないWi-Fiを使用した場合、または中間者攻撃を使用することで、アクセスが可能になります。セッションサイドジャックでは、犯罪者は、「パケットスニフィング」を使用して、インターネットユーザーのネットワークトラフィックを監視してセッションを検索します。これにより、攻撃者は、セッションCookieを取得し、セッションを乗っ取ることができます。
セッションフィクセーション
セッションフィクセーション攻撃では、犯罪者は、セッションIDを作成し、ユーザーをだましてこれを使用してセッションを開始するよう仕向けます。攻撃者がユーザーにアクセスして欲しいWebサイトのログインフォームへのリンクが含まれるメールを、ユーザーに送信します。ユーザーが偽のセッションIDを使用してログインすることで、攻撃者が侵入できるようになります。
マンインザブラウザー攻撃
この攻撃は中間者攻撃と似ていますが、攻撃者はまず被害者のコンピューターをトロイの木馬に感染させる必要があります。被害者がだまされてマルウェアをシステムにインストールしたら、マルウェアは被害者が標的のサイトにアクセスするのを待ちます。マンインザブラウザーマルウェアは、取引情報を気づかれないように変更できるだけでなく、ユーザーが知らぬ間に追加の設定を作成することもできます。リクエストは被害者のコンピューターから開始されるため、このリクエストが偽物であることをWebサービスが検知することは非常に困難です。
予測可能なセッショントークンID
多くのWebサーバーは、カスタムアルゴリズムまたは事前定義済パターンを使用してセッションIDを生成します。セッショントークンは予測しやすくなるにつれ、強度が下がります。攻撃者は、複数のIDを取得してパターンを分析し、有効なセッションIDを予測できるようになります(このアプローチは、総当たり攻撃になぞらえることができます)。
セッションハイジャックとセッションスプーフィングの違い
セッションハイジャックとセッションスプーフィングには類似点がありますが、同じタイプの攻撃ではありません。これら2つの主な違いは、セッションハイジャックは、正規のユーザーがWebセッションにすでにログインしているときに起こります。対照的に、セッションスプーフィングは、攻撃者がユーザーになりすまして新しいWebセッションを開始するときに起こります(ユーザーがその時点でログインしている必要がありません)。
この違いは、正規のユーザーが体験する攻撃が異なることを意味します。セッションハイジャックでは、攻撃者がセッションを中断することで、被害者のWebサイトやアプリケーションの動作が異常になる場合や、クラッシュさえする場合もあります。しかし、セッションスプーフィング攻撃中にはユーザーがアクティブにログインしていないため、ユーザーは次回のセッション中でも混乱はありません。
セッションハイジャック攻撃の影響
セッションハイジャックを防止する措置を講じていないと、多くの危険が伴います。これらの危険には、次のようなものがあります。
個人情報の窃取
アカウントに保存されている個人情報に不正にアクセスすることで、攻撃者は、ハッキングしたWebサイトまたはアプリケーションの範囲を超えて被害者の個人情報を盗むことができます。
金銭の盗難
攻撃者は、セッションハイジャックを介して、ユーザーの代わりに金融取引を実行する能力を取得できます。これには、銀行口座からの金銭の送金や保存されている決済情報を使用した購入などがあります。
マルウェアの感染
ハッカーがユーザーのセッションIDを盗むことができれば、ユーザーのコンピューターをマルウェアに感染させることもできます。これにより、標的のコンピューターの制御を奪い、そのデータを盗むことができます。
サービス拒否(DoS)攻撃
ユーザーのセッションの制御を奪ったハッカーは、接続しているWebサイトまたはサーバーに対するDoS攻撃を開始し、サービスを中断したり、サイトをクラッシュさせたりすることができます。
SSOを介した別のシステムへのアクセス
SSOとは、シングルサインオン(Single Sign On)を意味します。攻撃者は、SSOが有効である場合、別のシステムに不正アクセスし、セッションハイジャック攻撃の潜在的なリスクを拡散することもできます。このリスクは特に、従業員用として現在SSOを有効にしている多くの組織にとって重要です。これが意味することは、金融情報や顧客情報を格納しているシステムなど、より強力な認証プロトコルとより予測しにくいセッションCookieを使用して高度に保護されたシステムでさえ、システム全体で最も弱いリンクと同程度の保護能力しか持ち得なくなるということです。
セッションハイジャック攻撃の例
Zoom爆撃
新型コロナウイルス感染症の大流行中、世界中の人々がZoomなどのビデオ会議アプリを利用しました。これらのアプリはセッションハイジャッカーの格好の標的となり、「Zoom爆撃」というニックネームさえ付けられています。セッションハイジャッカーがプライベートなビデオセッションに参加したという、ニュース報道がありました。一部の事例では、口汚い罵り、不愉快な言動を叫んだり、わいせつ画像を共有したりしました。これに対して、Zoomはより優れたプライバシー保護機能を導入してリスクを最小限に抑えました。
Slack
2019年、バグバウンティプラットフォームの研究者が、Slack内の脆弱性を発見しました。この脆弱性により、攻撃者がユーザーを騙して偽のセッションに強制的にリダイレクトさせて、そのセッションCookieを盗むことができます。これにより、攻撃者は、Slack内で共有されている任意のデータにアクセスできるようになります(このことは、多くの組織にとって重大である可能性があります)。Slackは迅速に対応し、この研究者がこの問題を明らかにしてから、24時間以内に脆弱性にパッチを適用しました。
GitLab
2017年、あるセキュリティ研究者が、ユーザーのセッショントークンがURL内で直接使用可能になるというGitLabの脆弱性を発見しました。さらに調査をすすめると、GitLabが有効期限が切れることのない永続的なセッショントークンを使用していたことが判明しました。これが意味するのは、攻撃者が1つのセッショントークンを取得できれば、期限切れの心配なくこれを使用できるということです。この脅威にさらされた状態と永続的なトークンの組み合わせにより、重大なリスクがもたらされます。この結果、ユーザーは総当たり攻撃を介したセッションハイジャックによって、様々な深刻な攻撃にさらされます。GitLabは、これらのトークンの使用および保存方法を変更することで、この脆弱性を修正しました。
セッションハイジャックの防止方法
セッションハイジャックの防止に関する以下のヒントに従い、オンラインのセキュリティを改善してください。
公衆Wi-Fiへの接続を避ける
バンキングやオンラインショッピングなどの重要な取引の実行や、メールやソーシャルメディアアカウントへのログインを公衆Wi-Fiで行わないでください。パケットスニフィングを使用して、セッションCookieやその他の情報を取得しようとしているサイバー犯罪者が近くにいる可能性があります。
VPNを使用する
公衆Wi-Fiを使用する必要がある場合、仮想プライベートネットワーク(VPN)を使用して安全を最大限に高め、セッションハイジャックを防ぎましょう。VPNを使用すると、IPアドレスがマスキングされ、すべてのオンラインアクティビティがやり取りされるプライベートトンネルを作成することで、オンラインアクティビティがプライベートになります。VPNは、ユーザーが送受信するデータを暗号化します。
フィッシングやその他のオンライン詐欺に警戒する
メールが正規の送信者からのものであることが分かっていない限り、そのメール内のリンクをクリックしないでください。セッションハイジャッカーがユーザーに、クリックするためのリンクが含まれるメールを送信してくる場合があります。このリンクにより、デバイスにマルウェアがインストールされたり、攻撃者が準備したセッションIDを使用してユーザーをログインさせるログインページに誘導したりする場合があります。
サイトのセキュリティに注意を払う
信頼できる銀行、メールプロバイダー、オンライン小売業者、ソーシャルメディアサイトは、セッションハイジャックを回避するための防御策を講じています。URLがHTTPSから始まるWebサイトを利用してください。「S」は「Secure(安全性の高い)」を表します。疑わしいオンラインショップやセキュリティが堅牢でない可能性があるその他のプロバイダーを使用すると、セッションハイジャック攻撃を受けやすくなります。
アンチウイルスソフトウェアを使用する
ウイルスを簡単に検知し、あらゆるタイプのマルウェア(セッションハイジャックを実行するために攻撃者が使用するマルウェアを含む)からユーザーを保護できる評価の高いアンチウイルスソフトウェアをインストールしてください。すべてのデバイスで自動更新を設定し、システムを最新の状態に保ってください。
関連製品
関連記事