Уязвимость в OpenOffice, позволяющая выполнить код при открытии файла
21 сентября 2021 года
В офисном пакете Apache OpenOffice выявлена уязвимость (CVE-2021-33035), позволяющая добиться выполнения кода при открытии специально оформленного файла в формате DBF. Выявивший проблему исследователь предупредил о создании рабочего эксплоита для платформы Windows. Исправление уязвимости пока доступно только в форме патча в репозитории проекта, который вошёл в состав тестовых сборок OpenOffice 4.1.11. Обновления для стабильной ветки пока не сформировано.
Проблема вызвана тем, что при выделении памяти OpenOffice полагался на значения fieldLength и fieldType в заголовке файлов DBF, не проверяя при этом соответствие фактического типа данных в полях. Для совершения атаки можно указать в значении fieldType тип INTEGER, но разместить данные большего размера и указать значение fieldLength не соответствующее размеру данных c типом INTEGER, что приведёт к тому, что хвост данных из поля будет записан за пределы выделенного буфера. В результате контролируемого переполнения буфера исследователю удалось переопределить указатель возврата из функции и при помощи приёмов возвратно-ориентированного программирования (ROP - Return-Oriented Programming) добиться выполнения своего кода.
При использовании техники ROP атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа эксплоита сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности. В качестве гаджетов в эксплоите для OpenOffice использовался код из используемой в OpenOffice библиотеки libxml2, которая в отличие от самого OpenOffice оказалась собрана без механизмов защиты DEP (Data Execution Prevention) и ASLR (Address Space Layout Randomization).
Разработчики OpenOffice были уведомлены о проблеме 4 мая, после чего на 30 августа было назначено публичное раскрытие сведений об уязвимости. Так как к намеченному сроку обновление стабильной ветки так и не было сформировано, исследователь перенёс раскрытие деталей на 18 сентября, но разработчики OpenOffice не успели сформировать релиз 4.1.11 и к этому сроку. Примечательно, что в ходе того же исследования была выявлена похожая уязвимость в коде поддержки формата DBF в Microsoft Office Access (CVE-2021–38646), детали о которой будут раскрыты позднее. В LibreOffice проблем не найдено.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.