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