Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-59941 — Dompdf: 過大な画像ビットマップを使用したリソース枯渇によるサービス拒否 (DoS) | Kitploit
ツール/GitHubGitHub/far00t01/cve-2026-59941
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubfar00t01/cve-2026-59941

CVE-2026-59941

Dompdf: 過大な画像ビットマップを使用したリソース枯渇によるサービス拒否 (DoS)

リポジトリを見る
452ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-59942: Dompdf リソース枯渇によるDoS - 概念実証

  • 脆弱性の種類: リソース枯渇によるサービス拒否(DoS)
  • 影響を受けるソフトウェア: Dompdf <= 3.1.5
  • クレジット: Fabian Rosales (far00t01)。

免責事項

このリポジトリおよびその内容は、教育および研究目的のみで提供されています。作者は、ここで提供される情報を用いて行われた不正利用、損害、または違法行為について一切の責任を負いません。対象環境をテストする前に、必ず許可を取得してください。

概要

Dompdf v3.1.5 は、リソース枯渇によるサービス拒否(DoS)攻撃に対して脆弱です。攻撃者は、巨大な寸法(例: 30,000x30,000 ピクセル)の単一画像を含む、特別に細工された HTML ドキュメントを提供することで、PHP プロセスをクラッシュさせることができます。

Dompdf は画像の寸法を検証する内部チェックを実装していますが、これらは Base64 でエンコードされ、特定の CSS コンテナでラップされた高エントロピー画像(ランダムノイズなど)を使用することでバイパスできます。

技術的詳細:

標準的な単色画像は、圧縮アルゴリズムやレンダリングエンジンによって最適化できることがよくあります。しかし、高エントロピーのノイズ画像は、PHP エンジンに 9 億ピクセルを個別に処理させます。render() が呼び出されると、エンジンは非圧縮ビットマップをメモリ内で処理し、分散の大きい各ピクセルデータポイントのレイアウトを計算しようとします。これにより、以下が発生します:

  • CPU の 100% 飽和: レンダリングスレッドがピクセルストリームの処理を試みて無期限にハングします。
  • プロセスの終了: 巨大なメモリ割り当て(単一画像で約 1.2 GB を確認)が Fatal Error または OS レベルの SIGKILL(OOM)を引き起こし、即座にサービス拒否が発生します。

詳細

この脆弱性は、寸法の検証が早期に行われる一方で、レンダリングフェーズ中にオブジェクトのバウンディングボックスと内部バッファを計算するためのリソース割り当てが、初期チェックを通過した単一オブジェクトの累積 CPU 時間やメモリ使用量を厳密に制限していないために存在します。

概念実証の結果

https://github.com/user-attachments/assets/d1f5a07b-a7c5-4b5e-84b5-1e47e73522d9

  1. Composer 経由で Dompdf v3.1.5 をインストールします。
composer require dompdf/dompdf:3.1.5
  1. 以下の Python スクリプトを使用して悪意のあるペイロードを生成します(exploit.py):
  2. 以下の Python スクリプトを使用して、別のターミナルでシステムリソースを監視します(monitor.py):
  3. render.php という名前のファイルを作成します。このスクリプトは、Dompdf ライブラリの標準的な実装を模倣した、脆弱なエントリポイントとして機能します:
  4. stdin 経由でペイロードを渡して PHP プロセスを実行します。クラッシュが制限の厳しいサーバー設定ではなく、制御されていないメモリ割り当てによって引き起こされることを示すため、2GB のメモリ制限を使用します:
php -d memory_limit=2G render.php < payload.html
  1. エンジンは高エントロピー画像のすべてのピクセルを処理しようとします。monitor.py スクリプトは 99.8% の CPU 飽和を記録し、その後 Dompdf が単一の操作で約 1.2 GB を割り当てようとすることで PHP Fatal Error(Allowed memory size exhausted)が発生します。その後プロセスは終了され、サービス拒否(Denial of Service)が確認されます。

以下のログは、リソース枯渇脆弱性の悪用が成功したことを示しています。PHP プロセスに 2GB という十分なメモリ制限が与えられているにもかかわらず、単一の高エントロピー画像が致命的なクラッシュを引き起こします。

ペイロード生成:

python3 exploit.py 
[*] Generating 30000x30000 High-Entropy Noise Bomb...
[+] High-entropy payload saved to: payload.html

標的の実行とサービス拒否:

php -d memory_limit=2G render.php < payload.html
Output
[*] Starting Dompdf rendering process...
PHP Fatal error:  Allowed memory size of 2147483648 bytes exhausted (tried to allocate 1200355712 bytes) in /home/far00t/dompdf_exploit/vendor/dompdf/dompdf/src/Dompdf.php on line 490

render.php プロセスの実行中に、monitor.py スクリプトはシステムリソースへの影響を示す以下のテレメトリをキャプチャしました:

python3 monitor.py 
[*] Searching for PHP processes... (Press Ctrl+C to stop)
[MONITOR] PID: 210767 | RAM: 953.17 MB | CPU: 99.7%

テレメトリから得られた主な知見:

  • CPU 枯渇: プロセスは 99.7% の CPU 使用率を持続的に記録しました。本番環境では、シングルスレッドの PHP プロセスにおけるこのレベルの飽和状態は、そのコア上の他のあらゆるタスクへのサービスを事実上拒否します。
  • 急速なメモリ膨張: 常駐メモリ (RSS) は 953.17 MB まで上昇し、その直後にエンジンが Fatal エラーを引き起こした 1.2 GB の最終的な割り当てを試みました。
  • バイパスの確認: テレメトリは、Dompdf の内部的な「安全」制限がバイパスされたことを証明しています。エンジンはホスト環境が維持できない大規模なビットマップ展開を試みるに至ったためです。

影響

未認証のリモート攻撃者は、細工された HTML 文字列を送信することで、Web サーバー上で完全なサービス拒否 (DoS) を引き起こすことができます。これは、ユーザーが HTML コンテンツや URL を提供でき、それが後に Dompdf を使用して PDF に変換されるあらゆるアプリケーションに影響します。

参考

  • https://github.com/dompdf/dompdf/security/advisories/GHSA-f5gf-2cj8-52g2
  • https://www.cve.org/CVERecord?id=CVE-2026-59942
ツールをダウンロード