新たなCRLFデスンクロ攻撃、HTTPOnly Cookieの窃取とアカウント乗っ取りを可能に

PortSwiggerのTom Stacey氏とTurtleSecのTobia Righi氏という2人のセキュリティ研究者が、「CRLF-Powered Desync Attacks」と呼ばれる新たなカテゴリのHTTPリクエストスマグリング攻撃を発表しました。

Cloudsecurity services

この手法は、これまで見過ごされがちだったHTTPヘッダーインジェクションの脆弱性を悪用するもので、アカウントの完全乗っ取り、HTTPOnly Cookieの窃取、さらには自己増殖型のデスンクロワームの作成にまでつながる可能性があります。

新たなCRLFデスンクロ攻撃

この手法はNginxによくある設定ミスを悪用します。これは、`proxy_pass`ディレクティブに`$uri`変数を直接含めてしまうケースです。

このような設定になっていると、Nginxはリクエストパスをアップストリームへ転送する前にURLデコードしてしまい、その際にCRLFシーケンス(%0d%0a)も含めてデコードされてしまいます。

これにより攻撃者は、バックエンドサーバーに送信されるリクエストに任意の改行やヘッダーを注入できるようになります。一見軽微に見えるヘッダーインジェクションの問題が、アップストリームのHTTPリクエスト構造を完全に制御する手段へと変貌してしまうのです。

Image

研究者らは、連続したCRLFシーケンスを使って1つの悪意あるリクエストを2つの完全なリクエストに分割することで、Response Queue Poisoning(RQP、レスポンスキュー汚染)を引き起こせることを実証しました。

この手法はもともとJames Kettle氏が提唱したもので、サーバーがどのレスポンスがどのクライアントに属するかを見失ってしまい、結果としてユーザー同士が互いのレスポンスを受け取ってしまう事態を引き起こします。

ある事例では、この脆弱性がCDNの共有インフラの奥深くに存在していることが判明し、研究者らは同一プラットフォーム上でホストされている無関係な何千ものアプリケーションからセッションCookieや認証トークンを傍受することができました。

研究チームはまた、単一のTransfer-Encodingヘッダーを注入するだけで実現できる、より高度なCL.TE(Content-Length/Transfer-Encoding)デスンクロ攻撃も披露しました。

これにより、従来の二重CRLFによるリクエスト分割をブロックする防御策を回避することができました。ある大手通信事業者に対しては、500件の同時接続を20分以上にわたって実行してこのエクスプロイトを行い、内部アクセストークンを取得したことで20,000ドルの報奨金を獲得しています。

ある決済プロバイダーのセッションCookie処理にも同様の欠陥が見つかり、同じKubernetesホスト型インフラを利用する複数の企業にまたがって、クレジットカード番号や個人を特定できる情報(PII)が露出しました。

Stacey氏とRighi氏は、以前の「Browser-Powered Desync Attacks」に関する研究を土台に、ほとんどのCRLFデスンクロがfetch仕様と互換性があることを発見しました。

これはつまり、バックエンドへの直接的なネットワークアクセスを必要とせず、被害者のブラウザからJavaScriptの`fetch()`呼び出しや単純なページ遷移だけで攻撃を引き起こせるということです。

このブラウザ経由の手法により、攻撃者は通常クロスネットワーク攻撃を防ぐIPロックや接続ロックといった保護機構を回避できます。事実上「何もないところから」クロスサイトスクリプティングを生成し、クライアント側スクリプトからは本来アクセスできないHTTPOnly Cookieを窃取できてしまうのです。

おそらく最も懸念すべき点は、これまで理論上の概念にすぎなかった「デスンクロワーム」が、今回実際に実証されたという事実でしょう。このシナリオでは、注入されたXSSによって一度侵害された被害者のブラウザが攻撃基盤として転用され、同じfetchベースのデスンクロ攻撃を他のユーザーに対して仕掛けることが可能になります。攻撃者がそれ以上関与しなくても、エクスプロイトが指数関数的に拡散していく恐れがあります。

Portswiggerによるケーススタディでは、さまざまな脆弱性が紹介されています。大手携帯電話メーカーのアカウントサブドメイン(世界中のデバイスからブラインドXSSのpingbackを引き起こすもの)、HEADリクエストガジェットを介してホームページのキャッシュポイズニングが可能なあるソーシャルメディアCDN、そしてテスト中のミスが誤って実際のショッピングセッションを乗っ取ってしまい、その後メールアドレス置換によるアカウント完全乗っ取りへと兵器化された衣料品小売業者の事例(この事例では2,200ドルの報奨金が支払われました)などです。

TryingCybersecurity And Penetration Testing Tools

`proxy_pass`ディレクティブに`$uri`を使用したNginxを運用している組織は、直ちに設定の監査を行うべきです。今回報告された事例の大半は、この特定の設定ミスに起因しています。

Black Hat USAおよびDEF CONで共同発表されたこの研究は、これまで深刻度が低いと軽視されがちだったヘッダーインジェクションが、リクエストスマグリングやブラウザの実行コンテキストと組み合わさることで、ワーム化しうる重大な脆弱性に発展しうることを浮き彫りにしています。

調査の遅れによるインシデントを未然に防ぎましょう。15,000のSOCから得られる脅威インテリジェンスでTier 1を強化: TI LookupをSOCに統合する

翻訳元: https://gbhackers.com/new-crlf-desync-attack/

本記事は gbhackers.com の記事を翻訳・要約したものです。