Credit: Sonvh (ペンテスター)
2024年10月。冷たい風が木々を揺らし、乾いた葉が窓辺に舞い落ちてきました。温かな部屋の中に潜り込みたくて必死の様子でしたが、その試みは無情なガラスによって阻まれてしまいました。私はその光景を見ながら、ふと考えました。 「私もあの葉っぱと同じだろうか?ファイアウォールを突破して侵入できるのだろうか?」
結果は…できました。
これは単なる脆弱性ではありませんでした。創造力と研究が交差する瞬間であり、WAFの回避やRCE(リモートコード実行)を成功させることが目的ではなく、それがメッセージとなる瞬間でした。クライアントに最新の攻撃対象範囲を理解してもらうためのチャンスでもありました。
このクライアントはセキュリティについて妥協がない方でした。Cloudflare WAFが完全に有効化され、ステージング環境と本番環境の両方にボット検出があり、DNSリダイレクションも施され、基本認証も重ねられていました。スコープを正確に掘り下げる前に、かなりの準備作業をこなす必要がありました。
ついに、私は黄金のチケットを見つけました。PDFをアップロードする機能です。ユーザーロールのみですが、調査する価値があるほどオープンなものでした。もちろん、慎重で責任感のあるセキュリティ専門家として、まずは標準的なベストプラクティスレビューから始めました。すぐに、唯一残された道は何か悪意のあるものを潜り込ませることだと悟りました。

最初のステップとして、PDFの旅路をたどりました。これらのファイルの最終的な行き先はGoogle Docs gviewでの表示でした。そして知っている限りでは、サイトが十分にサニタイズしていない場合、PDFを通してJavaScriptの実行を滑り込ませることができることがあります。
ちなみに、懸念すべきなのは gview だけではありません。 Mozillaの有名なPDFレンダリングライブラリであるPDF.jsも同年4月に重大な脆弱性に見舞われました。
実際、どのレンダリングエンジンを使用していても、入力を適切に検証していない場合は、保護具なしで火遊びをしているようなものです。

それで、クラシックなPDF XSSトリックを思い出しました。普通に見えるファイルを作成し、テキストエディタで開いてペイロードを挿入し、PoC(概念実証)が検出されるか試してみました。

アップロードし、追跡し、表示。
テスト環境では、大成功。フルRCEでした。

この時点でクライアントはすでに冷や汗をかいていましたが、それでも私は幸運を試し、本番環境で突破できるか試してみました。
本番環境では、ファイルはただ消えてしまいました。Cloudflareがガードしているのであまり驚きませんでした。
ただの運試しでしたが、報告書を締めくくり、次のバグに進む予定でした。しかし、その時、祖先からの声が聞こえました。 「いいえ、あなたはこのWAFに敗北しない。あなたはそれを回避する。」
私が知る限り、ほとんどのWAFは悪意のある入力を2つの方法で処理します:
- ペイロードを書き換えるかエンコードして無力化する。
- 「私に変わらないなら別れるわ」、ドロップしてブロックする。
このケースは2番目のオプションのように感じました。サニタイズせずに単純に拒絶する。そのため、エンコードロジックを逆エンジニアリングする時間を無駄にするよりも、WAFの開発者やそのMLシステムがまだ考慮していないペイロードを見つけ出すクリエイティブな方法を選びました。
私のアプローチは、さまざまなペイロードバリエーションを体系的にテストし、少しずつ変更を加えながら毎回サーバーの反応を観察することでした。目標は以下を予測し特定することでした:
- WAFがブロックまたは許可するパターンを特定し、使用されているルールセットについての洞察を得る。
- ペイロードの長さと応答時間の相関性を探ることで、WAFによる正規表現ベース検査やディープパケット解析などの特徴を明らかにする。
試行錯誤の末、 ついに成功しました。クリーンなバイパス、満足のいく alert(1)で締めくくられました。.

こうして、ファイアウォールをすり抜けることに成功しました。
PDFマンが再びやりました。
そこからは何でも可能でした:クッキーの盗難、ユーザー行動の乗っ取り、内部APIへのアクセス — すべてファイアウォールの背後でアプリケーションがどれだけよく保護されているかによります。

その後、クライアントと協力してCloudflareにサポートチケットを提出しました。問題を認識しましたが、ポリシーの制約から技術的な側面には深く対処することができませんでした。
これが特に画期的なものではなくても、良い思い出となります: WAFやその他の境界防御策は万能薬ではありません。最初は攻撃者の進行を遅らせるかもしれませんが、執念深いプロには時間の問題です。コアアプリが堅牢なセキュリティで構築されていない場合、WAFはただの高価な飾りにすぎません。
そして、PDFマンの物語は続いていきます。
次はどんな展開が待っているのでしょうか?続報をお楽しみに…。