Несколько дней тому назад была обнаружена уязвимость что было идентифицировано в офисном пакете Apache OpenOffice, эта ошибка указана в CVE-2021-33035 разрешает выполнение кода при открытии специально созданного файла в формате DBF.
Проблема это потому, что OpenOffice полагается на значения fieldLength и fieldType. в заголовке файлов DBF для выделения памяти без проверки фактического типа данных в полях.
Об уязвимости
Чтобы совершить атаку, вы можете указать тип INTEGER в значении fieldType, но поместите данные большего размера и укажите значение fieldLength, не соответствующее размеру данных INTEGER, что приведет к тому, что данные очереди поля будут записаны из выделенного буфера.
В результате контролируемого переполнения буфера, исследователь смог переопределить указатель возврата функции и, используя методы возвратно-ориентированного программирования (ROP), добиться выполнения своего кода.
Один совет, который я получил в начале поездки по исследованию уязвимостей, заключался в том, чтобы сосредоточиться на формате файла, а не на конкретном программном обеспечении. У такого подхода есть два основных преимущества. Во-первых, как новичку, вам не хватало опыта для быстрого определения уникальных векторов атак в отдельных приложениях, в то время как анализ формата файлов, как правило, является общей точкой входа для многих приложений.
Кроме того, распространенные форматы файлов хорошо документированы с помощью запроса комментариев (RFC) или открытого исходного кода, что снижает количество усилий, необходимых для обратного проектирования формата..
При использовании техники ROP злоумышленник не пытается поместить свой код в память, а вместо этого что действует на части машинные инструкции, которые уже доступны в загруженных библиотеках, оканчивается оператором возврата управления (как правило, это конец библиотеки функций).
Работа эксплойта сводится к построению цепочки вызовов на похожие блоки («гаджеты») получить необходимый функционал.
В качестве гаджетов в эксплойте для OpenOffice упоминается, что использовался код из библиотеки libxml2, используемой в OpenOffice, который, в отличие от 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 проблем не обнаружено.
Документацию по формату файлов для dBase найти относительно легко; В Википедии есть простое описание версии 5 формата, а dBase LLC также предоставляет обновленную спецификацию. Библиотека Конгресса предлагает невероятный каталог форматов файлов, включая DBF. Различные версии и расширения формата DBF предоставляют программистам широкие возможности для внедрения уязвимостей сканирования.
Формат DBF состоит из двух основных разделов: заголовка и тела. Заголовок включает префикс, который описывает версию базы данных dBase, отметку времени последнего обновления и другие метаданные. Что еще более важно, он определяет длину каждой записи в базе данных, длину структуры заголовка, количество записей и поля данных в записи.
Исследователь, выявивший проблему предупрежден о создании функционального эксплойта для платформы Windows. Исправление уязвимости доступно только в виде патча в репозитории проекта, который был включен в тестовые сборки OpenOffice 4.1.11.
Наконец, если вы хотите узнать об этом больше, вы можете ознакомиться с исходной записью по адресу по следующей ссылке.
Будет ли OpenOffice по-прежнему использоваться в 2021 году?
Разве вы не слышали, что существует поддерживаемый LibreOffice.org?
Есть ли сегодня люди, которые используют зомби под названием openoffice?