Cookie Tossingについて学ぶ

Cookie Tossing は、攻撃者が異なるドメインサブドメインから意図的に悪意のあるクッキーをセットし、ブラウザのクッキー処理の仕様を悪用する攻撃手法で。
これにより、ターゲットドメインのアプリケーションに影響を与え、認証情報の窃取やセッションハイジャック、脆弱なSelf-XSSエスカレーションなどにつながる可能性があって。

攻撃の基本概念

ブラウザはクッキーをサーバーに送信するとき、クッキーのドメインとパスの優先順位 に従って並べ替えて。
この仕様を悪用し、攻撃者はより優先度の高いクッキーを仕込むことで、正規のクッキーを上書きまたは操作しようとします。

 

攻撃シナリオ①: サブドメインを利用したセッションハイジャック

攻撃の流れ

1. 攻撃者がevil.example.comの制御権を持っていて (例: example.comサブドメインを取得)

2. 攻撃者が、以下のような Set-Cookie ヘッダーを送信し

   Set-Cookie: session=attacker-session; Domain=example.com; Path=/

 

3. クライアント(ブラウザ)が example.com にリクエストを送る際、悪意のあるクッキー (session=attacker-session) が送信される

4. サーバーがクッキーの値を検証せずにセッションを識別すると、攻撃者のセッションに置き換えられ、アカウント乗っ取りが可能に

 

この攻撃が成立する条件

  • example.comevil.example.com のクッキーを受け付ける
  • サーバーがクッキーの HttponlySecure フラグを適切に設定していない
  • クッキーの 署名・検証 を適切に行っていない

 

攻撃シナリオ②: Self-XSS からのエスカレーション

Self-XSS とは?

Self-XSS は、ユーザー自身がブラウザのコンソールに悪意のあるスクリプトを入力することで実行されるXSS で。
通常、これ単体では脆弱性とは見なされませんが、Cookie Tossing を組み合わせることで高リスクな攻撃 になって。

攻撃の流れ

1. 攻撃者がユーザーに Self-XSS を実行させて
ユーザーが以下のようなコードを開発者コンソールに手動で入力する(例: ソーシャルエンジニアリングで誘導)。

 

   document.cookie = "session=evil-session; Domain=example.com; Path=/";

 

2. クッキーがユーザーのブラウザにセットされる

3. ユーザーが example.com にアクセスすると、悪意のあるクッキーが送信される

4. サーバーがクッキーの値を正しく検証していない場合、攻撃者のセッションが有効化される

5. 結果: ユーザーが攻撃者のアカウントに紐付けられる (アカウントなりすまし)

 

この攻撃は、通常の Self-XSS ではセキュリティ上のリスクにならないケースでも、サーバーのクッキー処理の甘さを突くことで影響範囲を拡大 できます。

 

まとめ

  • Cookie Tossing は、悪意のあるクッキーをセットして、正規のクッキーの優先順位を乗っ取る攻撃
  • 攻撃者がサブドメインを悪用してターゲットのクッキーを汚染するケースが多い
  • Self-XSSCookie Tossing に組み合わせると、影響範囲が拡大
  • 対策として、適切なクッキーのスコープ設定、署名検証、HttpOnly・Secure・SameSiteフラグの活用が重要

この攻撃は 脆弱なクッキー管理のアプリケーションでは、重大なセキュリティリスク となるので、しっかり対策を施すべきで。

 

ほなほな。