Shikata Ga Nai

Private? There is no such things.

Slackで発見されたHTTPリクエスト・スマグリング

Hello there, ('ω')ノ

1. きっかけは“なんとなく”の調査

研究者は特に大がかりな準備をしていたわけではなく、Slackのサブドメイン(slackb.com)を確認中に「もしかして…」と気軽に試したのが始まりでした。

👉 ハッカー的思考ポイント 「大手サービスでも古い脆弱性は残っているかもしれない」という直感を持ち、深く掘らずともまずは試してみることが重要です。


2. CL.TE型リクエスト・スマグリングの実行

彼が投げたリクエストはシンプルでした:

POST / HTTP/1.1
Host: slackb.com
Content-Length: 13
Transfer-Encoding: chunked

0

GET /some/endpoint HTTP/1.1
X-Test: value
  • Akamai(フロントのリバースプロキシ)Content-Length を信じて処理
  • SlackバックエンドTransfer-Encoding を信じて「次のリクエスト」を待つ

結果:フロントとバックの解釈がずれて、次のユーザーのリクエストが「密輸」されたGETリクエストと一緒に処理される状況に。


3. どうやって影響を確認するのか?

攻撃者が最初に見るのは レスポンスの変化 です。

  • 通常なら200や404を返すはずが、意図せぬ応答が返る
  • レスポンスに「自分が仕込んだヘッダ」が混ざっている
  • 他ユーザーのセッションデータが見える

👉 これらは「境界ズレに成功した証拠」になります。

実際、Slackのケースではセッションクッキーを盗み出せる可能性が確認されました。これは即ち、他人のSlackアカウントを乗っ取れるということです。


4. もし攻撃を拡張したら?

単なるセッション乗っ取りにとどまらず、スマグリングはさらに危険な攻撃の基盤になります。

  • キャッシュポイズニング:レスポンスを汚染し、多数のユーザーに悪意あるコンテンツを配布
  • XSS挿入:レスポンスにJavaScriptを混ぜ、全ユーザーのブラウザを制御
  • CSRF強化:セッション混線を利用して、他人のアカウントで操作を実行

Slackのケースでは即座に修正されましたが、もし攻撃者が悪用していたら「大規模アカウント乗っ取り」に発展する可能性がありました。


5. 報告と修正

Slackのセキュリティチームは脆弱性を確認後、迅速に修正。バグハンターには \$6,500 の報酬が支払われました。

研究者自身も「こんな古いバグがSlackに残っているとは思わなかった」と語り、発見をピザで祝ったそうです。


6. 学べること

  1. 古典的脆弱性でも侮れない HTTPスマグリングは2005年に発見されましたが、2020年代でも依然として大手サービスに残っている。

  2. 試してみる精神が重要 高度な自動化や複雑なファジングよりも、シンプルな「試行」が決定打になることもある。

  3. 入力→解釈→影響の流れを意識 攻撃者は常に「入力(ヘッダ)」「解釈(フロント/バックの食い違い)」「結果(他人のレスポンス)」を追って弱点を探す。


まとめ

Slackのケースは、「古くて単純な脆弱性がいかに強力か」を示す好例です。 攻撃者視点で言えば、わずかなヘッダの矛盾が世界的サービスを突破する突破口になり得る。

防御側は、フロントとバックのリクエスト処理の一貫性を保証し、不正なヘッダは即座に拒否する設計が欠かせません。

Best regards, (^^ゞ