
Отсутствие санитизации аргументов, приводящее к утечке пароля в Ghostscript PDF версий до 10.05.0.
Уязвимость в Artifex Ghostscript версии до 10.05.1 приводит к тому, что пароль в открытом виде, используемый для защиты PDF-файла, встраивается в выходные данные. Проблема вызвана отсутствием санитизации аргументов в gs_lib_ctx_stash_sanitized_arg (base/gslibctx.c), особенно при обработке символов #.
При генерации PDF-файла, защищённого паролем, с использованием аргументов командной строки, таких как -sUserPassword или -sOwnerPassword, весь вызов, включая пароли, сохраняется в открытом виде в начале созданного PDF. Любой, имеющий доступ к файлу, может извлечь пароль с помощью простых инструментов, таких как type (в Windows) или cat (в Linux/macOS).
Установите Ghostscript версии 10.05.0 или ниже
https://github.com/ArtifexSoftware/ghostpdl-downloads
Сгенерируйте PDF-файл, защищённый паролем, используя команду вроде:
gswin64.exe -dDisplayFormat=198788 -dDisplayResolution=96 -dCompatibilityLevel#1.4 -sUserPassword#123456789 -sOwnerPassword#123456789 -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutputFile#C:\Users\Admin\Downloads\test.pdf
Проверьте созданный PDF:
type C:\Users\Admin\Downloads\test.pdf
Вы увидите полную строку командной строки, включая пароли в открытом виде, встроенную в начало файла.