Parser::getObj()における無限再帰CVE-2019-13288は、Xpdfバージョン4.01.01で発見された脆弱性で、具体的にはParser.cc内のParser::getObj()関数に存在します。この欠陥は、特別に細工されたPDFファイルを処理する際に無限再帰を引き起こし、サービス拒否(DoS)状態をもたらす可能性があります。この脆弱性はCVE-2018-16646に類似しており、再帰関数における堅牢な入力検証の重要性を浮き彫りにしています。
CVE ID: CVE-2019-13288
影響を受けるソフトウェア: Xpdf 4.01.01
脆弱性の種類: 制御不能な再帰(CWE-674)
影響: サービス拒否(DoS)
CVSS v3.0ベーススコア: 5.5(中)
Parser::getObj()Parser::getObj()関数は、PDFファイル内のオブジェクトを解析する役割を担います。Xpdf 4.01.01では、この関数に無限再帰を防ぐための十分なチェックがありません。攻撃者は、getObj()が終了せずに再帰的に自分自身を呼び出す原因となる悪意のあるオブジェクト構造を持つPDFファイルを作成し、スタックの枯渇とアプリケーションのクラッシュを引き起こす可能性があります。
攻撃者は、Parser::getObj()関数に無限再帰を引き起こすように設計された特定のオブジェクト構造を持つ悪意のあるPDFファイルを作成します。このファイルがXpdfまたはそのライブラリを利用するアプリケーションによって処理されると、アプリケーションは無限の再帰ループに入り、システムリソースを消費し、最終的にはクラッシュします。
この脆弱性を示す概念実証(PoC)PDFファイルは、このリポジトリ内で以下から入手できます。
再現方法を段階的に確認するには、以下を参照してください。
注記: このPoCは教育および研究目的のみを意図しています。明示的な許可なくシステムに対して不正に使用することは非倫理的であり、違法となる可能性があります。悪さをしてはいけません!
この分析は、Antonio MoralesのFuzzing101ガイドで提示された方法論に触発されたものです。この脆弱性は、ファジング技術を通じて最初に特定され、そのようなアプローチが隠れたソフトウェアの欠陥を明らかにする上での有効性を浮き彫りにしました。
この情報は、教育および研究目的のみで提供されます。著者は、本書に含まれる情報の誤用について一切の責任を負いません。システム上で脆弱性をテストまたは悪用する前に、必ず適切な許可を得てください。