CVE-2024-30350 は、Foxit PDF Reader における境界外読み取り(out-of-bounds read)の情報漏えい脆弱性です。この問題は Trend Micro Zero Day Initiative により ZDI-24-333 として公開され、開示前は ZDI-CAN-22708 として追跡されていました。
公開アドバイザリでは、脆弱な領域を Foxit PDF Reader の Annotation オブジェクトの処理として説明しています。細工された PDF により、アプリケーションが割り当てられたバッファの終端を超えて読み取る可能性があります。悪用には、悪意のある PDF ファイルを開く、またはそれを配信するページを訪問するなど、ユーザーの操作が必要です。直接的な影響は機密情報の漏えいであり、アドバイザリはこの状態が他の脆弱性と連鎖させた場合に有用となり得ると述べています。
このリポジトリは、脆弱性、リサーチワークフロー、トリアージプロセス、および開示ノートを文書化したものです。武器化された概念実証(PoC)は意図的に含まれていません。
| 項目 | 値 |
|---|
| CVE | CVE-2024-30350 |
| ZDI アドバイザリ | ZDI-24-333 |
| ZDI ケース | ZDI-CAN-22708 |
| 製品 | Foxit PDF Reader |
| ベンダー | Foxit |
| コンポーネント | Annotation オブジェクトの処理 |
| 脆弱性の種類 | 境界外読み取り |
| CWE | CWE-125 |
| 影響 | 情報漏えい |
| CVSS | 3.3 |
| ベクター | CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N |
| ベンダー報告日 | 2023-12-20 |
| 公開アドバイザリ日 | 2024-03-28 |
| アドバイザリ更新日 | 2024-07-01 |
| 修正 | Foxit PDF Reader 2024.1 および Foxit PDF Editor 2024.1 のセキュリティアップデート |
Foxit の 2024年3月5日付セキュリティ速報によると、影響を受ける Windows 版には Foxit PDF Reader 2023.3.0.23028 以前、および速報に記載されたバージョンまでの複数の Foxit PDF Editor リリースラインが含まれていました。
PDF アノテーションは、ページの /Annots 配列を通じてページに付加される辞書として表現されます。リーダーは、アノテーション辞書を解析し、直接値と間接値を解決し、ジオメトリと外観データを正規化し、その結果をレンダリング、選択、編集、JavaScript、およびアクセシビリティの各パスへ橋渡しする必要があります。
CVE-2024-30350 のバグクラスは、このアノテーション解析パイプラインにおける境界検証の失敗です。不正な形式のアノテーションオブジェクトにより、Foxit PDF Reader が、基盤となるバッファと一致しなくなった派生長またはオブジェクト形状を信頼してしまう可能性がありました。脆弱なパスでは、プログラムが割り当てられたオブジェクト境界を超えて読み取る可能性がありました。観測された障害モードはアノテーション処理中のアクセス違反でしたが、メモリ配置が異なれば、同じプリミティブが隣接するプロセスメモリを露出させる可能性があります。
この問題はワンクリックのネットワーク脆弱性ではありませんでした。攻撃者は、標的ユーザーに細工された文書を開かせるか、その文書を開かせる配信ページに到達させる必要がありました。これは CVSS のユーザー操作要件に反映されています。
当初の調査は、一般的なファイルフォーマットのファジング実行ではなく、複雑な PDF オブジェクトファミリに焦点を当てた監査として始まりました。アノテーション処理が選ばれたのは、アノテーションがパーサロジック、UI 動作、JavaScript 露出、および増分文書更新の密集した交差点に位置するためです。
初期のコーパスは、通常の文書と、ばらつきの大きいアノテーション辞書を含む合成ページを混在させたものでした。ジェネレータは、配列長、オブジェクト間接参照、null 値、予期しないプリミティブ型、再帰参照、および外観ストリームの組み合わせを変化させました。最も有用なサンプルは完全にランダムではありませんでした。アノテーション正規化コードに到達するのに十分な文法認識を持ちながらも、ネイティブパーサの前提をテストするのに十分な不正形式を保っていました。
最初のシグナルは、ページに特定の不正な形式のアノテーション構造が含まれ、そのアノテーションが対話的な処理パスを通された場合にのみ再現するクラッシュでした。文書を開くだけでもページの解析には十分でしたが、ビューを更新したり、ページをズームしたり、選択またはレンダリングコードによってアノテーションツリーに触れたりすると、再現性が向上しました。
デバッグにより、問題はアノテーションオブジェクト処理中のヒープ割り当ての終端を超えた読み取りに絞り込まれました。クラッシュは null 参照解除とは似ていませんでした。失敗した命令はアノテーション関連バッファに隣接するメモリを消費しており、最小化されたサンプルにおけるサイズ関係は、解析された論理カウントとそのオブジェクトに実際に利用可能なストレージとの間の不一致を示唆していました。
サンプルは、ページツリー、対象ページ、およびアノテーション構造のみが残るまで、無関係な PDF オブジェクト、ページリソース、フォント、メタデータ、およびストリームを繰り返し削除することで最小化されました。縮小されたファイルは同じクラッシュシグネチャを保持していたため、協調的開示に適していました。
トリアージ後、この発見は Zero Day Initiative を通じて提出されました。公開アドバイザリのベンダー報告日は 2023-12-20 です。協調アドバイザリは 2024-03-28 に公開され、Foxit は 2024.1 アップデートラインでこの問題に対処しました。
直接的な影響は、Foxit PDF Reader プロセスからのメモリの漏えいです。単独では、通常、限定的な機密性への影響を意味します。しかし、より完全なエクスプロイトチェーンでは、境界外読み取りは、ヒープの内容、オブジェクトポインタ、割り当てレイアウト、または別のメモリ破壊脆弱性を確実にするために必要なその他のプロセス状態を漏えいするのに有用となり得ます。
これは、単独での CVSS スコアが低い一方で、エクスプロイトチェーンの堅牢化にとってこの問題が依然として重要である理由を説明しています。
ユーザーは Foxit PDF Reader および Foxit PDF Editor を修正バージョンに更新する必要があります。信頼できない PDF を扱う組織は、Protected View、Safe Reading Mode、ファイルレピュテーション制御、添付ファイルフィルタリング、およびエンドポイントのエクスプロイト緩和策を有効にしておくべきです。
パーサ開発者にとっての主な教訓は、周囲の PDF が構文的に有効であっても、アノテーション辞書は信頼できない構造化入力として扱うべきであるということです。派生長、正規化された配列、解決された間接オブジェクト、およびキャッシュされたオブジェクト表現は、パーサ、レンダラ、スクリプティング、および UI コードの間のすべての境界で検証されるべきです。
| パス | 目的 |
|---|---|
README.md | 脆弱性の主な概要 |
docs/discovery-process.md | エンドツーエンドのリサーチ記録 |
docs/advisory-notes.md | 公開アドバイザリの事実と参照 |
docs/triage-checklist.md | PDF リーダーのクラッシュトリアージに使用される一般的なチェックリスト |