Тип ошибки:
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)
Описание уязвимости:
В mPDF была выявлена проблема, затрагивающая версию 8.2.5.
Уязвимость библиотеки mPDF связана с недостаточной проверкой вводимых данных. Эксплуатация уязвимости может позволить нарушителю читать произвольные файлы.
Статус уязвимости: Подтверждена в ходе исследований
Дата выявления уязвимости: 11.04.2025
Рекомендации:
Меры по митигации эксплуатации уязвимости:
1. Санитизация HTML
Удаление скриптов и фреймов: Используйте надежные библиотеки для санитизации (например, Bleach для Python, HTML Purifier для PHP, или DOMPurify для JS);
Белый список тегов: Разрешить только базовые и \"безопасные\" теги (<b>, <i>, <p>);
Очистка ссылок: Удаляйте атрибуты, которые могут вести к локальным файлам или внутренним ресурсам.
2. "Подготовленный шаблон":
При генерации PDF документа можно использовать заранее подготовленный шаблон. Особое внимание необходимо уделить данным, передаваемым от пользователя. Они должны проходить строжайшую санитизацию.
3. Конфигурация библиотеки
- Отключение доступа к локальным файлам;
- Отключение JavaScript;
- Отключение внешних ресурсов: По возможности запретить загрузку внешних изображений и CSS.
4. Минимизация пользовательских привилегий. Запуск процессов от имени пользователя с доступом «только на чтение» к пустой директории. Это предотвратит чтение системных файлов через Path Traversal.
5. Запуск генератора в отдельном контейнере и последующее ограничение доступа контейнера к внутренней сети компании и сети Интернет.
6. Использование средств межсетевого экранирования для ограничения возможности удалённого доступа к устройствам.
7. Перенос генерации PDF на сторону клиента (браузера пользователя) с помощью библиотек типа jsPDF.
Исследователь: Никита Свешников (Positive Technologies)
Идентификаторы:
BDU:2025-16213
Вендор:
Ian N Back
Уязвимый продукт:
mPDF