Средний6.9
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

PT-2025-133: Чтение локальных файлов в OpenPDF

Тип ошибки:

  • CWE-20:Improper Input Validation

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

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

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

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

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

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

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

Дата выявления уязвимости: 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-16210

Вендор:

LibrePDF

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

OpenPDF

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

2.0.4