Уязвимость BDU:2025-16211

Уязвимость BDU:2025-16211

Идентификатор: BDU:2025-16211.

Наименование уязвимости: Уязвимость библиотеки для создания и редактирования PDF-документов OpenPDF, связанная с недостаточной проверкой вводимых данных, позволяющая нарушителю читать произвольные файлы.

Описание уязвимости: Уязвимость библиотеки для создания и редактирования PDF-документов OpenPDF связана с недостаточной проверкой вводимых данных. Эксплуатация уязвимости может позволить нарушителю читать произвольные файлы
Уязвимое ПО: Прикладное ПО информационных систем LibrePDF OpenPDF 2.0.4 |

Наименование ОС и тип аппаратной платформы:
Дата выявления: 23.04.2025.
CVSS 2.0: AV:L/AC:L/Au:N/C:C/I:N/A:N
Уровень опасности уязвимости: Средний уровень опасности (базовая оценка CVSS 2.0 составляет 4,9)
Средний уровень опасности (базовая оценка CVSS 3.1 составляет 6,2)
Средний уровень опасности (оценка CVSS 4.0 составляет 6,9)

Возможные меры по устранению:
Компенсирующие меры:
1. Санитизация HTML-кода перед передачей его в библиотеку:
1.1. Удаление скриптов и фреймов: Используйте надежные библиотеки для санитизации (например, Bleach для Python, HTML Purifier для PHP, или DOMPurify для JS).
1.2. Белый список тегов: Разрешить только базовые и "безопасные" теги (<b>, <i>, <p>). Полностью блокировать <iframe>, <script>, <link>, <embed>, <object>.
1.3. Очистка ссылок: Удаляйте атрибуты, которые могут вести к локальным файлам или внутренним ресурсам (например, src="file:///etc/passwd").
2. Использование подготовленного шаблона для размещения данных от пользователя и дальнейшей генерации PDF документа. Особое внимание необходимо уделить данным, передаваемым от пользователя. Они должны проходить строжайшую санитизацию. Если пользователь передает адрес картинки или тег img с атрибутом src, то необходимо проверить, что в URL начинается с http/https схемы (пункт 1.3), URL адрес не указывает на внутренний адрес при серверной генерации (к примеру 127.0.0.1), или путь до изображения не выходит за пределы DOCUMENT_ROOT или не запрашивается файл, к которому доступа не должно быть у текущего пользователя.
3.1. Отключение доступа к локальным файлам: Например, флаг —disable-local-file-access в wkhtmltopdf.
3.2. Отключение JavaScript: Если PDF не требует динамического рендеринга, используйте —disable-javascript.
3.3. Отключение внешних ресурсов: По возможности запретить загрузку внешних изображений и CSS (—no-images или isRemoteEnabled = false).
4. Минимизация пользовательских привилегий. Запуск процессов от имени пользователя с доступом «только на чтение» к пустой директории. Это предотвратит чтение системных файлов через Path Traversal. (При запросе изображения, должна быть проверка на разрешение текущего пользователя запрашивать такое изображение)
5. Запуск генератора в отдельном контейнере и последующее органичение доступа контейнера к внутренней сети компании и сети Интернет;
6. Использование средств межсетевого экранирования для ограничения возможности удалённого доступа к устройствам;
7. Перенос генерации PDF на сторону клиента (браузера пользователя) с помощью библиотек типа jsPDF.
.
Статус уязвимости: Подтверждена в ходе исследований
Наличие эксплойта: Данные уточняются
Информация об устранении: Информация об устранении отсутствует
Идентификаторы других систем описаний уязвимости:
Прочая информация: Уязвимость выявлена исследователем: Никита Свешников (Positive Technologies).
Тип ошибки CWE:
Ссылки на источники:
cайт ФАУ «ГНИИИ ПТЗИ ФСТЭК России».
https://github.com/LibrePDF/OpenPDF/blob/master/Security.md

ФСТЭК России
Автор: ФСТЭК России
Аккаунт для добавления уязвимостей с банка данных угроз безопасности информации ФСТЭК России. Не является оф. аккаунтом ФСТЭК России.
Комментарии: