セッションハイジャックとは?

公開: 2023-04-27

セッションハイジャックは、WordPress サイトの所有者が知っておく必要があるサイバー攻撃の一種です。 TCP セッション ハイジャックとも呼ばれるセッション ハイジャックにより、攻撃者は適切にログインしたユーザーのように見えます。 攻撃者は、有効なユーザーの知識や許可なしにセッション ID を取得して、ユーザー セッションを乗っ取ります。 攻撃者は、ユーザーのセッション ID を盗んだ後、標的のユーザーになりすますことができます。 攻撃者は、許可されたユーザーが同じシステムにログインした後、許可されたユーザーが実行できるすべてのことを実行できます。

ハイジャックされたセッションでハッカーができる最悪のことの 1 つは、認証なしで Web アプリケーションまたはサーバー コントロールにアクセスすることです。 攻撃者がユーザーのセッションを乗っ取った場合、セッションがアクティブである限り、攻撃者は自分自身を認証する必要はありません。 セッションを生成したアプリケーションは、セッションをハイジャックした認証済みユーザーであると認識します。

つまり、ハッカーは侵害したユーザーと同じアクセス権を享受できます。 正当なユーザーは、攻撃が発生する前にセッションを認証していたため、ハイジャックに成功すると、攻撃者は認証を完全に回避できます。

このガイドでは、セッション ハイジャックの詳細について説明します。 WordPress サイトでこの問題が発生しないようにするために何をする必要があるかを正確に示します。

セッションとは正確には何ですか?

セッションは、単一の HTTP 接続全体で発生する通信エンドポイント間の一連の対話です。

ハイパーテキスト転送プロトコル (HTTP) は Web の基盤です。 これにより、ハイパーテキスト リンクを使用したり、Web ページをロードしたりできます。 HTTP は、ネットワーク上のデバイス間で情報を渡すためのアプリケーション層プロトコルでもあります。

HTTP の重要な特徴は、「ステートレス」であることです。 つまり、Web サイトでセッションを開いたクライアント (ユーザーやブラウザーなど) に関するデータは保存されません。 各セッションは完全に新しいものです。 HTTP は、以前のセッションからのユーザーに関するデータを保持しません。

無国籍への対応

WordPress のような Web アプリケーションは、同じユーザーと異なるユーザーからの複数の接続間の状態を追跡する必要があります。 ユーザーがログインしたら、各ユーザーのセッションを識別する必要があります。複数のデバイスまたはブラウザーでログインしている可能性があります。

ユーザーが WordPress などのアプリケーションにログインすると、サーバーはセッションを作成します。 セッションは、ユーザーに固有のパラメーターを保存することにより、ユーザーの接続の「状態」を維持します。 ユーザーがアプリケーションにログインしている間、セッションはサーバー上で維持されます。

セッションは、ユーザーがシステムからログアウトするか、事前に定義された期間アクティビティがない場合に終了します。 ユーザー セッションが終了すると、アプリケーションはそのデータをサーバーのメモリから削除する必要があります。

セッション識別子

セッション ID (または「キー」または「トークン」) は、一意のセッション識別子です。 通常、これらはサーバーとクライアントが相互に送信する長いランダムな英数字の文字列です。 認証アプリケーションは通常、セッション ID を URL、Cookie、または Web ページの非表示フィールドに保存します。

セッション ID は、ステートレス システムで状態を維持するのに役立ちますが、潜在的なセキュリティ上の問題も伴います。 たとえば、Web アプリケーションのセッション ID を生成するアルゴリズムを理解していれば、それらを自分で生成できます。 さらに、Web アプリケーションが SSL 暗号化を使用して HTTP を HTTPS として暗号化していない場合、セッション ID は平文で送信されます。 パブリック ネットワークでは、誰でも暗号化されていない接続を傍受し、セッション ID を盗むことができます。

セッションハイジャックは実際にどのくらい正確に機能しますか?

セッション ハイジャック攻撃の成功は、非常にステルスです。 これらは通常、アクティブな通信セッションが多数ある非常にビジーなネットワークで行われます。

セッションハイジャックの最も一般的な形式のいくつかは、次のものを利用します。

  • 予測可能なセッション トークン ID
  • セッション スニッフィング
  • セッションのサイドジャッキング
  • マンインザブラウザ マルウェア
  • クロスサイト スクリプティング
  • セッション固定

これらの脅威ベクトルを 1 つずつ見ていきましょう。

予測可能なセッション トークン ID

多くの Web サーバーは、カスタム アルゴリズムまたは事前定義されたパターンを使用して、セッション ID を生成します。 一意のセッション トークンの全体的な予測可能性が高いほど、弱くなります。

そして、ハッカーが予測しやすくなります。

セッション スニッフィング

セッション スニッフィングは、ハッカーがアプリケーション層のセッション ハイジャックに使用する最も単純で基本的な方法の 1 つです。

攻撃者は、Wireshark などのパケット スニファや OWASP Zed などのプロキシを使用して、ネットワーク トラフィックをキャプチャします。 このトラフィックに、クライアントと Web サイト間の接続用の暗号化されていないセッション ID が含まれている場合、ID が盗まれる可能性があります。 ハッカーは、有効な ID またはトークンを使用して、サイトとそのユーザーのアカウントへの不正アクセスをすばやく取得できます。

セッションのサイドジャッキ

攻撃者はパケット スニッフィングを使用して、ユーザーがサイトにログインするときにセッション Cookie を傍受することができます。 ログイン ページが暗号化されていないか、弱い暗号化が使用されている場合、サイバー犯罪者はこの方法でユーザー セッションを簡単に乗っ取ることができます。

マンインザブラウザ

この攻撃では、攻撃者は最初に被害者のコンピューターまたはブラウザーをマルウェアに感染させる必要があります。

このマルウェアは、ブラウザのトランザクション情報を目に見えないように変更し、ユーザーが気付かないうちにトランザクションを作成できます。 破損したブラウザのリクエストは、被害者の物理デバイスによって開始されるため、有効であると見なされます。

クロスサイト スクリプティング

サイバー犯罪者は、アプリケーションまたはサーバーの脆弱性を悪用して、サイトの Web ページに任意のコードを挿入する可能性があります。 これにより、侵害されたページが読み込まれたときに、訪問者のブラウザがそのコードを実行します。

セッション Cookie で HTTP のみが設定されていない場合、挿入されたコードを介してセッション キーを盗むことができます。 これにより、攻撃者はユーザー セッションをハイジャックするために必要なすべてを手に入れることができます。

セッション固定

これは、まだ認証されていない有効なセッション ID を使用します。 セッション固定を使用して、攻撃者はユーザーをだましてこの特定の ID で認証させようとします。

認証が行われると、攻撃者は被害者のコンピューターに完全にアクセスできるようになります。

セッション固定は、Web アプリケーションがセッション ID を管理する方法における大きな制限を調査します。

ハッカーはセッション ハイジャックから何を得るのか?

ハッカーがセッションをハイジャックすると、そのアクティブなセッションで正当なユーザーが許可されていたすべてのことを実行できます。

最も効果的で有害なセッション ハイジャックは、次のような結果をもたらす可能性があります。

  • 侵害された銀行口座
  • 不正なオンライン購入商品をオンラインで購入する
  • 盗難の特定
  • 社内システムからのデータ盗難

良くない! セッション ハイジャック セッションが成功すると、多くの損害が発生する可能性があります。

セッションハイジャックの例は何ですか?

2012 年の秋、Juliano Rizzo と Thai Duong という 2 人のセキュリティ研究者が、TLS リクエストの圧縮率内の情報漏えいをサイドチャネルとして悪用する攻撃である CRIME を発表しました。 これにより、クライアントからサーバーへの要求を解読できました。

次に、これにより、ユーザーのログイン Cookie を取得してセッションをハイジャックし、e コマース サイトや銀行などの価値の高いオンライン サイトでユーザーになりすますことができました。

このデモンストレーションでは、ハッカーがこのタイプの攻撃を実行して、HTTP 要求のヘッダーを回復する方法を示しました。

CRIME は、ブルート フォースを使用して、認証されたユーザーを記憶するために Web サイトによって設定された HTTPS Cookie を解読します。 攻撃コードは、被害者のブラウザに、特別に細工された HTTPS リクエストを標的の Web サイトに送信させ、圧縮後の長さの変化を分析して、被害者のセッション Cookie の値を決定します。 これが可能なのは、SSL/TLS が DEFLATE と呼ばれる圧縮アルゴリズムを使用しているためです。これにより、重複した文字列が排除されます。

ブラウザのセキュリティ メカニズムにより、攻撃コードはリクエストに含まれるセッション Cookie を読み取ることができません。 ただし、すべての新しいリクエストのパスを制御でき、Cookie の値と一致するように別の文字列を挿入できます。

セッション Cookie の値は非常に長くなる可能性があります。 それらは、大文字と小文字と数字で構成されています。

その結果、CRIME 攻撃コードはそれらを解読するために非常に多くのリクエストを開始する必要があり、これには数分かかる場合があります。

セッションハイジャック防止

セッション ID (またはその他の機密性の高い Cookie の値) が安全に送信または保存されていない場合、攻撃者はそれらを盗んで再利用できることに注意してください。 100% の保護は保証されませんが、暗号化を使用することは主要な防御になります。

ユーザーが認証するときは、SSL とセキュア Cookie を必須にする必要があります。 また、認証されたユーザーが複数の安全なページにアクセスする場合、強制的に HTTPS を使用する必要があります。

さらに、WordPress サイトの所有者は、セッション ハイジャック保護のために iThemes Security Pro WordPress セキュリティ プラグインを使用する必要があります。 iThemes Security Pro に組み込まれている Trusted Devices 機能は、1 日 24 時間、週 7 日間、この危険な攻撃からサイトを安全に保つのに役立ちます。 サイトのユーザー向けに設定する方法を学びます。

セッション ハイジャックの理解と防止

このガイドの情報があれば、WordPress サイトをセッション ハイジャックから保護するために必要なことがすべてわかります。

  1. サイトが SSL を使用して完全に暗号化されていることを確認し、ユーザーが HTTPS のままになるようにします。
  2. iThemes Security Pro プラグインをダウンロードしてインストールします。

これらの簡単な手順を実行することで、サイトをセッション ハイジャックから保護できます。