В офисния пакет Apache OpenOffice е открито уязвимост (CVE-2021-33035), позволяваща изпълнение на код при отваряне на специално форматиран файл в DBF формат. Изследователят, който е установил проблема, е предупредил за създаване на работен експлоит за платформата Windows. Временно решение на уязвимостта е налично само под формата на патч в репозитория на проекта, който е включен в тестовите версии на OpenOffice 4.1.11. Обновления за стабилната версия все още не са произведени.
Проблемът произтича от това, че при алуминиране на паметта OpenOffice се е доверявал на стойностите fieldLength и fieldType в заглавките на DBF файловете, без да проверява съответствието на фактическия тип данни в полето. За извършване на атака може да се укаже тип INTEGER в стойността fieldType, но да се поставят данни с по-голям размер и да се укаже стойност на fieldLength, несъответстваща на размера на данните с тип INTEGER, което ще доведе до записване на част от данните извън определената буферна зона. В резултат на контролирано преливане на буфера изследователят е успял да пренапише указателя за връщане от функция и с помощта на техники на ROP (Return-Oriented Programming) да постигне изпълнението на своя код.
При използване на техниката ROP атакуващият не се опитва да постави своя код в паметта, а оперира с вече съществуващите в заредените библиотеки парчета машинни инструкции, завършващи с инструкции за връщане на управлението (както обикновено е с краищата на библиотеки функции). Работата на експлоита се свежда до изграждане на верига от повиквания на подобни блокове („гаджети“) за получаване на желаната функционалност. В експлоита за 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 не са намерени.
Източник: opennet.ru
