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

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

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

Для выполнения своего кода использована особенность присутствующего в большинстве дистрибутивов скрипта pydoc.py (также входит в поставку LibreOffice для Windows — python-core-3.5.5libpydoc.py), в котором определена функция tempfilepager(), запускающая любой исполняемый файл с произвольными аргументами через вызов функции os.system(). Например, для выполнения калькулятора при наведении ссылки на определённую область в документе достаточно подключить к обработчику события «dom:mouseover» скрипт вида «vnd.sun.star.script:../../lib/python3.5/pydoc.py$tempfilepager(1, gnome-calculator )?language=Pythonlocation=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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.