
Эксплойт на Python для CVE-2025-20260, который генерирует вредоносный PDF-файл и включает возможности анализа дампа ядра для проверки уязвимости.
Первый публичный proof-of-concept для CVE-2025-20260 (базовый балл CVSS 3.1 — 9.8, критический), уязвимости переполнения буфера в пути сканирования PDF в ClamAV. Этот репозиторий содержит генератор вредоносного PDF, который вызывает уязвимость, а также анализ core-дампа, документирующий падение.
Этот PoC был разработан и опубликован после того, как уязвимость была исправлена и раскрыта в рамках скоординированного раскрытия компанией Cisco/ClamAV. Он предоставлен для оборонительных исследований, разработки средств обнаружения и обучения. Не запускайте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Согласно записи NVD и рекомендациям Cisco:
Уязвимость в процессах сканирования PDF в ClamAV может позволить неаутентифицированному удалённому атакующему вызвать переполнение буфера, вызвать отказ в обслуживании (DoS) или выполнить произвольный код на уязвимом устройстве. Эта уязвимость существует из-за некорректного выделения буферов памяти при обработке PDF-файлов.
PDF-парсер ClamAV читает поле /Length объекта потока, чтобы определить размер буфера, выделяемого для декодированных данных. clamshank.py создаёт PDF, единственный объект которого объявляет завышенную, некорректную длину и содержит поток ASCII85Decode, длина которого чуть превышает uint32_MAX / 4 байт:
1 0 obj
<< /Length 1073741824 444444444444 /Filter /ASCII85Decode >>
stream
... (~1,073,741,825 bytes of ASCII85 data) ...
Когда ClamAV сканирует файл, некорректная арифметика длины приводит к выделению буфера неверного размера, и последующее декодирование переполняет его, вызывая падение процесса сканирования (DoS) с потенциальной возможностью выполнения кода в контексте процесса ClamAV.
| Файл | Описание |
|---|---|
clamshank.py | Генерирует clam-cve.pdf — вредоносный PDF, вызывающий переполнение. |
HOS Core dump analysis for CVE-2025-20260.pdf | Анализ core-дампа падения, документирующий переполнение на момент сбоя. |
python3 clamshank.py # writes clam-cve.pdf
clamscan clam-cve.pdf # against a vulnerable ClamAV build, in an isolated VM
Запускайте только против экземпляра ClamAV, который вы контролируете, в одноразовой/изолированной среде. Сгенерированный файл по замыслу имеет размер ~1 ГБ.
Обновитесь до исправленной версии ClamAV (исправленные версии см. в рекомендациях Cisco). Не допускайте сканирования PDF из недоверенных источников на неисправленных сборках.
Только для авторизованных исследований в области безопасности и обучения. Автор не несёт ответственности за неправомерное использование.