В библиотеке jsPDF обнаружена устраненная критическая уязвимость, которая могла позволить злоумышленникам извлекать конфиденциальные файлы с корпоративных серверов и внедрять их непосредственно в сгенерированные PDF-документы.
Уязвимость, отслеживаемая как CVE-2025-68428, затрагивает необновленные развертывания jsPDF на платформе Node.js, где недоверенный ввод передается в API для работы с файлами без должной валидации.
По данным анализа Endor Labs, эта проблема открывает возможности для обхода каталогов (path traversal) и инъекции локальных файлов (local file inclusion), позволяя атакующему читать произвольные файлы из файловой системы. В подверженных уязвимости средах это могло привести к раскрытию учетных данных, конфигурационных файлов, закрытых ключей или переменных окружения.
Уязвимость касается версий jsPDF 3.0.4 и более ранних, в частности, сборок для Node.js, используемых в серверных процессах генерации PDF. Использование библиотеки исключительно в браузере не подвержено риску.
Хотя исправление уже доступно, исследователи Endor предупреждают, что устранение проблемы требует большего, чем простое обновление версии, особенно в производственных средах, зависящих от динамической обработки файлов. «Патч не обеспечивает защиты, если среда выполнения разрешает неограниченный доступ к файловой системе», — говорится в сообщении исследователей Endor.
Библиотека PDF превратилась в вектор эксфильтрации файлов
Проблема CVE-2025-68428 кроется в том, как jsPDF обрабатывает пути к файлам при загрузке внешних ресурсов в Node.js. Несколько часто используемых API, включая «addImage», «html» и «addFont», внутренне полагаются на функцию «loadFile()» для чтения файлов с диска. До версии 4.0.0 эти методы не обеспечивали адекватной проверки или ограничения путей к файлам, передаваемых во время выполнения.
Если приложение принимает управляемый пользователем ввод, такой как имя файла, путь к изображению или ссылка на шрифт, и напрямую передает его в эти API, злоумышленник может указать специально сформированный путь для доступа к конфиденциальным файлам приложения. Затем jsPDF прочитает файл и внедрит его содержимое в итоговый PDF без возникновения ошибки.
Поскольку на этом этапе библиотека не накладывает ограничений на типы файлов, проблема не ограничивается изображениями или шрифтами. Потенциально может быть включен любой файл, доступный для чтения процессу Node.js.
Базовая оценка CVSS уязвимости составляет 9.2 из 10, что присваивает ей критический уровень серьезности. Исследователи настоятельно рекомендуют немедленно обновиться до исправленной версии для защиты от эксплуатации.
Патча может быть недостаточно
Разработчики jsPDF устранили проблему в версии 4.0.0, ограничив доступ к файловой системе по умолчанию. Исправление опирается на режим разрешений Node.js, который требует от приложений явно предоставлять права доступа на чтение к определенным каталогам во время выполнения. При правильной настройке это не позволяет jsPDF получать доступ к файлам за пределами разрешенных путей.
Однако такой подход усложняет эксплуатацию. Режим разрешений Node.js развивается, и многие производственные среды либо используют более старые версии Node, либо не внедрили выполнение на основе разрешений. «Многие среды используют более старые версии Node.js, в которых отсутствует стабильная поддержка режима разрешений, и включение параметра –permission может нарушить существующую функциональность, если шаблоны доступа к файловой системе не были тщательно отображены», — отметили исследователи.
Исследователи изложили набор шагов для оценки возможности эксплуатации в их развертываниях. Он включает проверку того, используется ли jsPDF на стороне сервера (поскольку на стороне клиента эксплойт невозможен), проверка того, реализован ли режим разрешений в текущей версии и правильно ли настроены разрешения файловой системы, выявление затронутых путей кода с помощью инструментов SCA, а также ручной поиск уязвимого кода.
Endor Labs выразила благодарность исследователю безопасности Кванвуну Киму (KilkAt) за обнаружение и сообщение об уязвимости на GitHub.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Qual-score: 8/9
Bayan-score: 0.653674781
Автор – Shweta Sharma




