Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2018-14442 — Foxit Reader CVE-2018-14442 用 PoC | Kitploit
ツール/GitHubGitHub/payatu/cve-2018-14442
エクスプロイトフレームワーク脆弱性分析エクスプロイトリバースエンジニアリングファジングバイナリエクスプロイト
GitHubpayatu/cve-2018-14442

CVE-2018-14442

Foxit Reader CVE-2018-14442 用 PoC

リポジトリを見る
58177年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Foxit Reader CPDF_Parser::m_pCryptoHandler の Use After Free

  1. PDF形式の背景
  2. 暗号化辞書
  3. 脆弱性の詳細
  4. ASLR と DEP の回避
  5. 環境の詳細
  6. トリガー
  7. 作者

PDF形式の背景

PDFは文書を表現するためのファイル形式です。PDFは複数のデータオブジェクトで構成されています。

  • 単純なプリミティブオブジェクト 整数、数値、ブール値、Null

  • 複合オブジェクト

    形式名前
    [.*]配列
    (.*)文字列
    <<.*>>辞書
    <.*>16進文字列
    /.*名前
    stream.*endstreamストリーム

これらのオブジェクトは、PDFの外観と内容を定義します。PDF内の構造は、直接オブジェクトと間接オブジェクトの2種類で表現されます。間接オブジェクトは、オブジェクト番号と世代番号で始まり、その後に実際のオブジェクトが続きます。間接オブジェクトは、他のオブジェクトから n m R として直接参照できます。ここで n と m はそれぞれオブジェクト番号と世代番号です。 辞書オブジェクトは、ドキュメントの基本的な構成要素です。ページやドキュメント自体を構成するために必要な一般的な辞書オブジェクトがいくつかあります。最も重要なのは Root 辞書で、その他のすべての Pages、Metadata、Names などへのリンクを定義します。これらの各要素は、他のオブジェクトにすることができます。 ストリームオブジェクトには、フォント、画像、圧縮/暗号化されたデータなど、ほとんどのバイナリデータが含まれます。

暗号化辞書

PDF文書は、その内容を不正アクセスから保護するために暗号化できます。暗号化は、PDFファイル内のすべての文字列とストリームに適用されますが、Encrypt 辞書自体などの一部の例外があります。暗号化は主にストリームオブジェクトに適用されます。暗号化は、整数やブール値などの他のオブジェクトタイプには適用されません。これらのタイプは主に、ドキュメントの内容ではなく構造に関する情報を伝えるために使用されます。 暗号化に関連する情報は、ドキュメントの暗号化辞書に保存されます。この辞書は、ドキュメントのトレーラー辞書内の "Encrypt" エントリの値です。

脆弱性の詳細

CPDF_Parser::StartParse は、暗号化されたPDFの間接オブジェクトに対して m_pCryptoHandler を設定します。m_pCryptoHandler は、CPDF_Parser::ReleaseEncryptHandler が完了したときにnullにする必要があります。しかし、CPDF_Parser::ReleaseEncryptHandler は CPDF_Parser 内のCryptoHandlerへの参照を削除せず、ダングリングポインタになります。 その後、パーサーが Root 辞書で参照されているオブジェクトの解析を開始すると、m_pCryptoHandler+8 が呼び出されてデータを復号します。 同様のバグは、pdfium のコミット 741c362fb75fd8acd2ed2059c6e3e716a63a7ac8 で修正されました。参照: https://bugs.chromium.org/p/chromium/issues/detail?id=726503

ASLR と DEP の回避

PDFでは、ドキュメント内にJSを埋め込むことができ、Catalog タイプの辞書の OpenAction に入力されている場合、自動的に実行されます。JSが実行できるようになると、プロセス空間にオブジェクトをスプレーして、ROPチェーンを書き込む予測可能なアドレスを取得できます。 Foxit ReaderでPDF文書に署名する場合、インストールディレクトリの plugins\jrsys\x86\jrsysMSCryptoDll.dll を使用して署名情報を読み取ります。これにより、jrsysCryptoDll.dll が静的アドレス 0x10000000 にロードされます。このDLLは VirtualAlloc をインポートするため、ペイロードの実行が容易になります。添付のエクスプロイトは、ヒープスプレーを使用して予測可能なメモリレイアウトを取得し、ROPチェーンを使用してRWXページを割り当て、ペイロードをコピーして実行します。

環境の詳細

このエクスプロイトは、MS Windows 7 Enterprise Build 7601 SP1 x86 上で動作する Foxit Reader 9.0.1.1049 x86 を使用してテストされました。このエクスプロイトは、ヒープが特定の状態にあることを必要とします。エクスプロイトが失敗した場合は、もう一度お試しください。ビデオデモ を参照してください。この脆弱性は、Android版の Foxit PDF Reader および Converter にも存在します。

トリガー

bitcoins.pdf は、解放されたメモリの再割り当てを行い、根本的なバグを引き起こすように作成されたPDFです。デバッガーでクラッシュを再現したい場合は、FoxitReader.exe に対して Page Heaps を有効にし、bitcoins.pdf を開いてください。

デモ

デモ動画

作者

このクラッシュは、Payatu で開発されたファジングプラットフォームである Cloudfuzz によって発見されました。さらなる分析とエクスプロイト開発は Sudhakar によって行われました。

ツールをダウンロード