Уязвимость в Libreoffice и Openoffice, позволяющая выполнить код при открытии документа

Уязвимость в Libreoffice и Openoffice, позволяющая выполнить код при открытии документа

Раскрыты сведения об уязвимости (CVE-2018-16858) в офисных пакетах LibreOffice и Apache OpenOffice, позволяющей выполнить код в системе при открытии специально оформленного документа в формате ОDT.

Проблема вызвана отсутствием необходимых проверок в коде обработки встроенных в документ макросов, которые могут вызываться при наступлении различных событий, таких как наведение мыши на элемент. Используя символы "../" в пути к обработчику злоумышленник может выйти за пределы базовых каталогов со скриптами (share/Scripts/python и user/Scripts/python) и запустить при наступлении события произвольную функцию из любого существующего Python-скрипта.

Для выполнения своего кода использована особенность присутствующего в большинстве дистрибутивов скрипта pydoc.py (также входит в поставку LibreOffice для Windows - python-core-3.5.5\lib\pydoc.py), в котором определена функция tempfilepager(), запускающая любой исполняемый файл с произвольными аргументами через вызов функции os.system(). Например, для выполнения калькулятора при наведении ссылки на определённую область в документе достаточно подключить к обработчику события "dom:mouseover" скрипт вида "vnd.sun.star.script:../../lib/python3.5/pydoc.py$tempfilepager(1, gnome-calculator )?language=Python&location=share".

Уязвимость без лишней огласки в прошлом году была устранена в выпусках LibreOffice 6.0.7 и 6.1.3. В актуальном выпуске Apache OpenOffice 4.1.6 проблема остаётсянеисправленной. В качестве обходного пути блокирования уязвимости в OpenOffice рекомендуется удалить файл pythonscript.py из каталога приложения (например, /opt/openoffice4/program/pythonscript.py). Проблема также ещё не устранена в Debian Jessie, Ubuntu 16.04 и SUSE/openSUSE. RHEL/CentOS, а также Ubuntu 18.04+ проблеме не подвержены. Обновление пакетов выпущено для Fedora 28.

В OpenOffice и в LibreOffice до версии 6.0 включительно эксплуатация уязвимости ограничена запуском существующих локальных Python-скриптов из-за отсутствия поддержки передачи аргументов в функции, вызываемые из макросов. Для атаки на OpenOffice и на старые версии LibreOffice злоумышленник должен добиться размещения своего Python скрипта, например, распространяя его в ZIP-архиве вместе с ODT-документом. При атаке на LibreOffice 6.1.x можно использовать системный скрипт pydoc.py для выполнения произвольных файлов с любыми параметрами.

Дополнительно упоминается возможный вектор атаки через пакет ImageMagick, который использует LibreOffice для преобразования некоторых типов файлов. Атакачерез обработчики изображений на базе ImageMagick опасна тем, что документ с эксплоитом можно передать под видом JPEG или PNG-файла, в котором вместо картинки находится файл ODT (такой файл будет обработан так как MIME-тип распознаётся по содержимому, а не полагаясь на расширение). Теоретически проблема может затронуть и автоматические построители миниатюр для рабочего стола и индексаторы файлов, если они используют LibreOffice для разбора документов. В этом случае для атаки может быть достаточно просто загрузить документ с эксплоитом или просмотреть каталог с ним в Nautilus.
OpenNews: Уязвимость в Libreoffice и Openoffice, позволяющая выполнить код при открытии документа
 
Последнее редактирование:
Назад
Сверху Снизу