
ClamAV のPDFスキャン処理経路に存在するバッファオーバーフローの脆弱性 CVE-2025-20260(CVSS 3.1基本スコア 9.8、Critical)に対する初の公開プルーフオブコンセプトです。このリポジトリには、この欠陥を引き起こす悪意のあるPDFの生成スクリプトと、クラッシュを記録したコアダンプ解析が含まれています。
このPoCは、Cisco/ClamAVによって脆弱性が修正され、協調的開示が行われた後に開発・公開されました。防御的研究、検知エンジニアリング、および教育を目的として提供されています。所有していないシステム、または明示的なテスト許可を得ていないシステムに対して実行しないでください。
NVDの記録 およびCiscoのアドバイザリによると:
ClamAVのPDFスキャン処理における脆弱性により、認証されていないリモート攻撃者がバッファオーバーフロー状態を引き起こしたり、サービス拒否(DoS)状態を発生させたり、影響を受けるデバイス上で任意のコードを実行したりする可能性があります。この脆弱性は、PDFファイルの処理時にメモリバッファが不正確に割り当てられるために存在します。
ClamAVのPDFパーサーは、ストリームオブジェクトの /Length フィールドを読み取り、デコードされたデータ用に割り当てるバッファのサイズを決定します。clamshank.py は、単一のオブジェクトが過大で不正な長さを宣言し、uint32_MAX / 4 バイトよりわずかに長い ASCII85Decode ストリームを持つPDFを作成します:
1 0 obj
<< /Length 1073741824 444444444444 /Filter /ASCII85Decode >>
stream
... (~1,073,741,825 bytes of ASCII85 data) ...
ClamAVがこのファイルをスキャンすると、不正確な長さの計算により誤ったサイズのバッファが割り当てられ、その後のデコード処理でバッファがオーバーフローし、スキャンプロセスがクラッシュ(DoS)します。さらに、ClamAVプロセスのコンテキスト内でコードが実行される可能性があります。
| ファイル | 説明 |
|---|---|
clamshank.py | オーバーフローを引き起こす悪意のあるPDF clam-cve.pdf を生成します。 |
HOS Core dump analysis for CVE-2025-20260.pdf | クラッシュのコアダンプ解析であり、障害発生時のオーバーフローを記録しています。 |
python3 clamshank.py # writes clam-cve.pdf
clamscan clam-cve.pdf # against a vulnerable ClamAV build, in an isolated VM
管理下にあるClamAVインスタンスに対してのみ、使い捨ての隔離された環境で実行してください。生成されるファイルは設計上約1 GBになります。
修正済みのClamAVリリースにアップグレードしてください(修正バージョンについてはCiscoのアドバイザリを参照)。未修正のビルドで、信頼できない入力のPDFスキャンを公開しないでください。
許可されたセキュリティ研究および教育のみを目的としています。作者は悪用について責任を負いません。