r   e   k   l   a   m   a
r   e   k   l   a   m   a

17-letni błąd w Office naprawiony na binarce: Microsoft zgubił kod źródłowy?

Strona główna AktualnościBEZPIECZEŃSTWO

Podczas ostatniego drugiego wtorku miesiąca Microsoft wydał łatkę do odkrytej przez badaczy z firmy Embedi luki oznaczonej jako CVE-2017-11882, dotyczącej pliku EQNEDT32.EXE – edytora równań w pakiecie Microsoft Office. Luka jak luka, co prawda z długą brodą (najwyraźniej dotyczy wszystkich wersji Office wydanych w ciągu ostatnich 17 lat), ale w swoim typie nie jest jakoś niezwykła. Po prostu pozwala na zepsucie pamięci podczas operacji wstawiania obiektów OLE w dokumentach i w konsekwencji zdalne uruchomienie kodu. Bardziej interesująca jest sama łatka. Przyjrzeli jej się badacze z firmy 0patch i zasugerowali, że Microsoft najwyraźniej zgubił swój kod źródłowy.

Plik EQNEDT32.EXE pojawił się po raz pierwszy w Microsoft Office 2000 i pozostał we wszystkich kolejnych wersjach systemu, by zapewnić kompatybilność z poprzednimi wersjami dokumentów. Nie było zresztą specjalnych powodów by coś w nim zmieniać – akurat edytor równań w pakiecie Office jest bardzo dobry. Gdy jednak badacze z Embedi pokazali, jak w połączeniu z innym exploitem, pozwalającym na podniesienie uprawnień procesu, przejmują za pomocą uzłośliwionego pliku Office kontrolę nad różnymi wersjami Windowsów i Office, jasne było, że czas na zmiany.

r   e   k   l   a   m   a

Jak to zwykle bywa, po opublikowaniu poprawek, szczegóły tej luki Embedi przedstawiło w opublikowanym w zeszłym tygodniu 20-stronicowym raporcie. Twórcy malware pewnie zajmą się teraz jego przestudiowaniem, gdyż jak do tej pory nie ma jeszcze związanych z tą luką gotowych exploitów, które byłyby wykorzystywane w cyberatakach na podatne systemy. Niezwykłe było jednak to, co stało się później.

0patch to projekt mający na celu dostarczanie „mikrołatek na oprogramowanie działające na platformie Microsoftu, które blokują podatności nawet wówczas, gdy producent nie wydał jeszcze oficjalnych łatek. Te niewielkie fragmenty kodu, mające często nie więcej niż 30 bajtów, działają nawet na niewspieranych systemach i nie wymagają żadnych restartów. Twórcy 0patcha przyjrzeli się łatce do CVE-2017-11882, zauważając, że coś jest z nią nie tak. Załatany plik EQNEDT32.EXE praktycznie niczym się nie różnił od starego, zawierającego lukę.

Badacze pytają retorycznie – czy kiedykolwiek widzieliście kompilator C/C++, który po przebudowaniu kodu źródłowego umieściłby w pliku wykonywalnym o rozmiarze ponad 500 KB wszystkie funkcje pod dokładnie tymi samymi adresami, szczególnie gdy modyfikacje zmieniały ilość kodu w wielu funkcjach? Coś takiego jest oczywiście skrajnie nieprawdopodobne, jedynym sensownym wytłumaczeniem takiego stanu rzeczy jest to, że programiści Microsoftu musieli ręcznie edytować binarny plik, ponieważ nie mieli kodu źródłowego.

Być może Microsoft zgubił kod do komponentu Office stworzonego w roku 2000, być może nigdy go nie miał. Edytor równań do Office został bowiem stworzony przez niezależną firmę, niejaką Design Science Inc., która później odsprzedała swój produkt Microsoftowi. Czy mogło dojść do odsprzedania programu bez oddania jego kodu źródłowego? Dziś tego nikt nie jest już w stanie powiedzieć. Niezależnie jednak od powodu niedostępności kodu, trzeba przyznać, że deweloperzy z Redmond zrobili kawał dobrej roboty, pokazując, że nie tylko wysokopoziomowe abstrakcje im w głowie.

Luka CVE-2017-11882 wynikała z niewłaściwego alokowania pamięci dla fontu – jeśli nazwa fontu była za długa, dochodziło do przepełnienia buforu. Ręcznie do binarki wprowadzono więc mechanizmy sprawdzania i ewentualnego skracania nazwy fontu. To jednak nie wszystko, 0patch wskazuje, że przy okazji wprowadzono kilka innych poprawek, ostrożnie pilnując, by zachować oryginalny rozmiar i ułożenie funkcji w kodzie maszynowym. Mamy do czynienia z sześcioma takimi testami długości w dwóch zmodyfikowanych funkcjach, które najwyraźniej nie są związane z CVE-2017-11882. Uważamy, że Microsoft zauważył kilka dodatkowych wektorów ataku, które mogłyby powodować przepełnienie bufora, i postanowił je proaktywnie załatać – stwierdzili eksperci z 0patch, chwaląc zarazem Microsoft za świetną robotę przy tym bardzo trudnym przecież wyzwaniu.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.