新しい差分ファジング・ツールの誕生:HTTP request smuggling を漏らさず見つけ出す

New differential fuzzing tool reveals novel HTTP request smuggling techniques

2021/11/25 DailySwig — 研究者たちが、HTTP request smuggling を発見するための、新しいファジング・ツールを発表した。この、T-Reqs と名づけられたツールは、ボストンの Northeastern University と Akamai のチームにより開発された。ホワイト・ペーパーの中で研究者たちは、このファジング・ツールを使って、新しい脆弱性を大量に発見した方式について述べており、バグ・ハンターたちにも利用できると述べている。

HTTP の歴史

2005年に登場した HTTP request smuggling は、ユーザーから受け取った一連の HTTP リクエストを、Web サイトが処理する方法を妨害するものだ。ロード・バランサー (リバース・プロキシ) は、通常、複数の HTTP リクエストを同一のネットワーク接続を介して、バックエンド・サーバーへと連続して転送する。このときに、フロントエンドとバックエンドのサーバー間に不一致があると、隠れたリクエストがプロキシを介して、攻撃者に盗み出されることがある。その結果、アカウントの乗っ取りや、キャッシュ・ポイズニングなどの問題が発生する。

これまでの研究では、Content-Length ヘッダーと Transfer-Encoding ヘッダーがターゲットにされていた。今回の研究では、HTTP request smuggling (HRS) を、トラフィック・パス上の2つ以上の HTTP プロセッサが関与する、システム相互作用の問題として取り上げている。

論文によると 「これらのプロセッサは、必ずしも個々にバグを持っているわけではないが、一緒に使用されると、与えられた HTTP リクエストの解析やセマンティクスについて意見の相違が生じ、それが脆弱性につながる。この、HRS における重要な側面は、これまでの研究では検討されていなかった。これまでの攻撃は、前述の2つの HTTP ヘッダーを、悪意を持って操作することに焦点を当てていた。HTTP ヘッダの別の部分や、HTTP リクエストの残りの部分を改ざんして、前述のような処理の不一致を引き起こすことができるかどうかは、まだ未知の領域である」と述べている。

成功のためのツール

T-Reqs は、Two Requests の略語であり、HTTP リクエストを生成し、そのリクエストに変異を加えて、サーバーの処理に潜在的なクセを誘発する、文法ベースの HTTP fuzzer である。

Akamai の Kaan Onarlioglu は、The Daily Swig の取材に対して、「T-Reqs は、実験的な設定でサーバーペアを演習するファザーであり、新規のスマグリングの脆弱性を発見するためのツールである。これは、サーバ開発者にとって特に有用であり、実際のところ、この論文で言及されている何社かのベンダーが、社内テストに使用しているところだ。T-Reqs は、実際の Web アプリケーションをテストするために設計されたものではなく、以前から知られているスマグリングのペイロードを繰り返す、ペネトレーション・テスト・ツールでもない。それならば、Burp Suite の HTTP Request Smuggler エクステンションの方がはるかに適している。私たちは、新しい脆弱性を見つけるために、コミュニティが T-Reqs を使用して強化し、これらのペイロードをテストツールやプロセスに統合することを想定している」と述べている。

Onarlioglu によると、このテーマに取り組むことにした理由は、HTTP の仕様が非常に複雑であるため、世の中には癖のあるサーバー技術が山ほどあり、また、リクエストをスマグリングする底知れぬ機会があるに違いないと考えたからだそうだ。研究者たちは、「私たちの研究で、この仮説が検証された。HTTP リクエストの全てのパートと、10種類の一般的なプロキシ/サーバー技術の組み合わせを、体系的に調査した。その結果、全く新しい脆弱性のリストが見つかった」と述べている。彼らのホワイト・ペーパーである、T-Reqs: HTTP Request Smuggling with Differential Fuzzing には、脆弱性の詳細や技術的な情報が記載されている。

システム・セントリックに

Onarlioglu は The Daily Swig に対して、「リクエスト・スマグリングの魅力は、それがシステムの問題であるということだ。たとえば、魔法のような開発プロセスを思いつき、完璧なサーバーを作り始めたとしても、リクエスト・スマグリングの前では見事に失敗してしまうだろう。安全なコンポーネントが安全なシステムを作るとは限らず、セキュリティはシステム全体の創発的な特性である。これまで、研究者たち、このような視点でセキュリティを捉えてこなかったが、スマグリング/キャッシュ・ポイズニング/キャッシュ・ディセプションなどの、最近になって目立ってきた攻撃により、考え方が変化している。私のチームでは、次世代の Web 攻撃を阻止するためには、システム中心の視点が重要であると強く信じており、そのために、この分野を積極的に研究している」と述べている。

先日の Black Hat Europe で、AWS API Gateway を回避する脆弱性が公開されましたが、ここで用いられた手法が HTTP header-smuggling だったようです。それと前後して「Web Server のスキャン・ツールが登場:HTTP Header-Smuggling 攻撃を止めろ」という記事もポストしました。HTTP request smuggling との間に違いがあるのか、それとも、同じものを指すのか、よく分かりませんが、Palo Alto の GlobalProtect VPN ゼロデイ脆弱性に関する記事では、HTTP smuggling と表記されています。最近の、ちょっと気になる動向です。

%d bloggers like this: