Luka w pakiecie OpenOffice umożliwiająca wykonanie kodu podczas otwierania pliku

W pakiecie biurowym Apache OpenOffice została zidentyfikowana luka (CVE-2021-33035), która umożliwia wykonanie kodu podczas otwierania specjalnie zaprojektowanego pliku w formacie DBF. Badacz, który odkrył problem, ostrzegał przed stworzeniem działającego exploita dla platformy Windows. Poprawka luki jest obecnie dostępna wyłącznie w formie łatki w repozytorium projektu, która została uwzględniona w testowych kompilacjach OpenOffice 4.1.11. Nie ma jeszcze żadnych aktualizacji dla gałęzi stabilnej.

Problem jest spowodowany tym, że OpenOffice polega na wartościach FieldLength i FieldType w nagłówku plików DBF w celu przydzielenia pamięci, bez sprawdzania, czy rzeczywisty typ danych w polach jest zgodny. Aby przeprowadzić atak, można w polu FieldType podać typ INTEGER, ale umieścić większe dane i podać wartość FieldLength nieodpowiadającą rozmiarowi danych o typie INTEGER, co doprowadzi do końca danych z pola zapisywanego poza przydzielonym buforem. W wyniku kontrolowanego przepełnienia bufora badaczowi udało się na nowo zdefiniować wskaźnik powrotu z funkcji i wykorzystując techniki programowania zorientowanego na powrót (ROP – Return-Oriented Programming) doprowadzić do wykonania swojego kodu.

Korzystając z techniki ROP, atakujący nie próbuje umieścić swojego kodu w pamięci, lecz operuje na fragmentach instrukcji maszynowych dostępnych już w załadowanych bibliotekach, kończąc na instrukcji sterującego powrotu (z reguły są to końce funkcji bibliotecznych) . Działanie exploita sprowadza się do zbudowania łańcucha wywołań do podobnych bloków („gadżetów”) w celu uzyskania pożądanej funkcjonalności. Gadżetami wykorzystanymi w exploitie OpenOffice był kod z biblioteki libxml2 używanej w OpenOffice, która w przeciwieństwie do samego OpenOffice'a została skompilowana bez mechanizmów ochronnych DEP (Data Execution Prevention) i ASLR (Address Space Layout Randomization).

Programiści OpenOffice zostali powiadomieni o problemie 4 maja, po czym publiczne ujawnienie luki zaplanowano na 30 sierpnia. Ponieważ aktualizacja do stabilnej gałęzi nie została ukończona w planowanym terminie, badacz przełożył ujawnienie szczegółów na 18 września, ale twórcom OpenOffice'a nie udało się do tego terminu stworzyć wersji 4.1.11. Warto zauważyć, że podczas tych samych badań wykryto podobną lukę w kodzie obsługi formatu DBF w programie Microsoft Office Access (CVE-2021–38646), której szczegóły zostaną ujawnione później. W LibreOffice nie znaleziono żadnych problemów.

Źródło: opennet.ru

Dodaj komentarz