CVE-2026-25940 jsPDF PoC
Proof-of-concept для CVE-2026-25940, демонстрирующий, как специально созданные представления переключателей AcroForm могут запускать встроенный JavaScript в уязвимых PDF-просмотрщиках (например, Foxit). Репозиторий включает генератор на Node и браузерную обвязку для просмотра, позволяющую протестировать различные пути парсинга.
⚠️ Используйте только в изолированных, непроизводственных средах. Примеры полезных нагрузок намеренно выполняют JavaScript и могут вызывать сетевые запросы или внешние программы. Не открывайте сгенерированный PDF в непроверенных просмотрщиках на важной для вас системе.
Содержимое репозитория
- poc.js: Генерирует вредоносный PDF с несколькими вариантами переключателей и отдельными потоками представлений для демонстрации различного поведения.
- viewer.html: Минимальная обвязка для просмотра, позволяющая сгенерировать PoC в браузере или загрузить существующий образец, а также отобразить его как нативно (через iframe), так и через PDF.js.
- package.json: Объявляет зависимость jsPDF для PoC на Node.
Предварительные требования
Установка
- Установите зависимости:
npm install
- (Необязательно) Запустите локальный сервер для просмотра, чтобы HTML/JS загружались корректнее:
npx http-server .
# затем откройте http://localhost:8080/viewer.html
Генерация PoC PDF через Node
- Запустите генератор:
node poc.js
- Скрипт записывает
test.pdf в корень проекта. Откройте его в целевом PDF-просмотрщике, чтобы наблюдать за поведением. Если хотите избежать исходящих запросов, заблокируйте сеть.
Рабочий процесс в браузерном просмотрщике
- Откройте viewer.html напрямую в браузере или через локальный сервер.
- Нажмите Generate PoC PDF, чтобы собрать вредоносный документ в браузере и загрузить его как в iframe (нативный/браузерный обработчик), так и в canvas PDF.js.
- Либо выберите Load file и укажите PDF, сгенерированный с помощью Node-скрипта.
- Следите за активностью в консоли/сети для подтверждения выполнения JavaScript; некоторые просмотрщики могут подавлять предупреждения, но при этом продолжать выполнять встроенные действия.
Примечания
- Полезные нагрузки настроены под поведение Foxit; другие просмотрщики могут частично смягчать или блокировать их.
- Если адаптируете полезную нагрузку, сохраняйте схожие размеры, чтобы не менять смещения объектов, на которые полагаются некоторые цепочки эксплойтов.
- Всегда тестируйте в виртуальной машине или песочнице с ограниченным исходящим сетевым трафиком.