
CVE-2025-20260에 대한 Python 기반 익스플로잇으로, 악성 PDF 파일을 생성하고 취약점 확인을 위한 코어 덤프 분석 기능을 포함합니다.
CVE-2025-20260(CVSS 3.1 기본 점수 9.8, 심각)에 대한 최초 공개 개념 증명(proof-of-concept)입니다. 이 취약점은 ClamAV의 PDF 스캐닝 경로에서 발생하는 버퍼 오버플로 취약점입니다. 이 저장소에는 결함을 트리거하는 악성 PDF 생성기와 크래시를 문서화한 코어 덤프 분석이 포함되어 있습니다.
이 PoC는 취약점이 패치되고 Cisco/ClamAV에 의해 조정된 공개(coordinated disclosure)가 이루어진 이후에 개발 및 공개되었습니다. 방어적 연구, 탐지 엔지니어링, 교육 목적으로 제공됩니다. 소유하지 않았거나 테스트에 대한 명시적 허가를 받지 않은 시스템에 대해 실행하지 마십시오.
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 스캐닝을 노출하지 마십시오.
승인된 보안 연구 및 교육 목적으로만 사용하십시오. 작성자는 오용에 대해 책임지지 않습니다.