BabelDOC — инструмент для перевода документов. До версии 0.6.3 встроенный анализатор PDF BabelDOC в Babeldoc/pdfminer/cmapdb.py десериализует ненадежные данные Pickle, когда CMapDB._load_data() загружает файлы CMap. Значения Encoding или CMapName, управляемые PDF, а также встроенные операторы usecmap PostScript могут достичь этого приемника после декодирования разделителей пути, тогда как _normalize_cmap_name() удаляет только начальную косую черту.
Абсолютные пути или последовательности обхода могут выйти из доверенных каталогов CMap с помощью os.path.join(), выбрать файл .pickle.gz, доступный для записи злоумышленнику, и заставить Pickle.loads() выполнить произвольный код Python с привилегиями процесса BabelDOC. Эта проблема исправлена в версии 0.6.3.
Показать оригинальное описание (EN)
BabelDOC is a document translation tool. Prior to 0.6.3, BabelDOC's vendored PDF parser in babeldoc/pdfminer/cmapdb.py deserializes untrusted pickle data when CMapDB._load_data() loads CMap files. PDF-controlled Encoding or CMapName values and embedded PostScript usecmap operators can reach this sink after path separators are decoded, while _normalize_cmap_name() removes only a leading slash. Absolute paths or traversal sequences can escape the trusted CMap directories through os.path.join(), select an attacker-writable .pickle.gz file, and cause pickle.loads() to execute arbitrary Python code with the privileges of the BabelDOC process. This issue is fixed in version 0.6.3.
Характеристики атаки
Последствия
Строка CVSS v3.1