Высокий7.7
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N

PT-2025-132: Подделка запроса со стороны сервера (SSRF) в OpenPDF

Тип ошибки:

  • CWE-918: Server-Side Request Forgery (SSRF)

Вектор уязвимости:

  • Базовый вектор уязвимости (CVSSv4.0): CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N

  • Уровень критичности уязвимости (CVSSv4.0): 7.7 (High)

Описание уязвимости:

В OpenPDF была выявлена проблема, затрагивающая версию 2.0.3.

Обнаруженная уязвимость может быть использована злоумышленником для отправки произвольных HTTP‑запросов от имени сервера как к внешним, так и к внутренним (локальным) ресурсам сети. Это позволяет получить конфиденциальные данные из изолированных сервисов, выполнить сканирование портов внутренней инфраструктуры и потенциально вызвать отказ в обслуживании целевых систем. Кроме того, атакующий может использовать сервер как прокси‑точку, скрывая свой настоящий IP‑адрес.

Статус уязвимости: Подтверждена в ходе исследований

Дата обнаружения уязвимости: 23.04.2025

Рекомендации:

Меры по митигации эксплуатации уязвимости:

1. Санитизация HTML

Удаление скриптов и фреймов: Используйте надежные библиотеки для санитизации (например, Bleach для Python, HTML Purifier для PHP, или DOMPurify для JS).

Белый список тегов: Разрешить только базовые и "безопасные" теги (<b>, <i>, <p>).

Очистка ссылок: Удаляйте атрибуты, которые могут вести к локальным файлам или внутренним ресурсам.

2. "Подготовленный шаблон":

При генерации PDF документа можно использовать заранее подготовленный шаблон. Особое внимание необходимо уделить данным, передаваемым от пользователя. Они должны проходить строжайшую санитизацию.

3. Конфигурация библиотеки.

Проверить документацию на наличие флагов безопасности, даже если они выключены по умолчанию (советы по мисконфигурации): отключение доступа к локальным файлам; отключение JavaScript; отключение внешних ресурсов.

4. Изоляция (Песочница)

Если библиотеку нельзя настроить безопасно, изолируйте сам процесс выполнения: Контейнеризация; Сетевая изоляция; Ограничение прав ФС

5. Архитектурные решения: 

Egress-фильтрация; Клиентская генерация: Если возможно, перенесите генерацию PDF на сторону клиента (браузера пользователя) с помощью библиотек типа jsPDF. Это снимет риски SSRF и RCE с вашего сервера.

Не стоит полностью доверять библиотеке защиту. Считайте входной HTML вредоносным кодом и запускайте процесс генерации в «стерильной» изолированной среде, предварительно удалив из HTML все опасные элементы.

Исследователь: Алексей Соловьев (Positive Technologies)

Идентификаторы:

BDU:2025-16209

Вендор:

LibrePDF

Уязвимый продукт:

OpenPDF

Уязвимые версии:

2.0.3