Wygląda na to, że Microsoft zgubił fragment kodu źródłowego Office’a

News/Sprzęt 20.11.2017
Wygląda na to, że Microsoft zgubił fragment kodu źródłowego Office’a

Wygląda na to, że Microsoft zgubił fragment kodu źródłowego Office’a

Office 365 można traktować jako sztandarową usługę Microsoftu. Okazuje się jednak, że nawet w tak istotnym dla wielomiliardowej korporacji produkcie panuje bałagan. Sugeruje to jedna z niedawno opublikowanych łatek do pakietu.

Firma Embedi specjalizująca się w cyberbezpieczeństwie odkryła poważną usterkę w aplikacjach klienckich pakietu Office na Windows. Usterka oznaczona jako CVE-2017-11882 pozwalała cyberprzestępcom na włamanie się na atakowane komputery bez wiedzy użytkownika. Winnym okazał się być edytor równań EQNEDT32.EXE.

Z premedytacją wymieniłem nazwę pliku binarnego zamiast nazwy aplikacji, bowiem edytor ten został zastąpiony zupełnie nowym modułem już w pakiecie Office 2007. Nadal jest on jednak dołączany do pakietu, by móc być uruchomiony w momencie, gdy otrzymamy jakiś prehistoryczny plik z równaniem stworzonym starą metodą.

Usterka została już załatana. Sposób w jaki zostało to zrobione sugeruje jednak, że Microsoft nie posiada już kodu źródłowego starego edytora. I choć firma nigdy tego nie potwierdzi, to poszlakowe dowody wydają się jasno na to wskazywać.

Kod źródłowy starych wersji Office w śmietniku?

Specjaliści z 0patch zwrócili uwagę, że nowa wersja pliku EQNEDT32.EXE jest w zasadzie prawie identyczna do poprzedniej. To wydaje się bardzo dziwne, bowiem w momencie, w którym kod źródłowy pliku wykonywalnego – zwłaszcza tej objętości – jest ponownie kompilowany, zmieniają się odwołania do pamięci w której są przechowywane dane funkcje. Każda nowa kompilacja różni się więc od tej poprzedniej. Jakim cudem więc oba pliki są w zasadzie identyczne? 0patch ma na to teorię.

Inżynierowie Microsoftu nie pracowali na kodzie źródłowym aplikacji. Zamiast tego pracowali bezpośrednio na pliku binarnym. Przy tak dużej złożoności oprogramowania oferowanego przez Microsoft (co wymaga wdrożenia całego systemu zarządzania kodem) i przy tak dużym nacisku na bezpieczeństwo tak się po prostu nie robi. Microsoft o tym wie. Zresztą, widać wyraźnie, że się do tych zasad stosuje. Dlaczego więc tu zastosowano inne podejście?

Jedyną wiarygodną teorią wydaje się być przypuszczenie, że Microsoft nie posiada już kodu źródłowego starego edytora równań. Ostatnia kompilacja tego pliku została wykonana 9 listopada 2000 roku. Microsoft nawet nie stworzył tego edytora równań, odpowiedzialna jest za niego firma Design Science, która sprzedała prawa do tego narzędzia. To mogłoby tłumaczyć, dlaczego w archiwum Microsoftu nikt rzekomo nie znalazł kodu źródłowego narzędzia.

Sytuacja jest komiczna, ale słowa uznania należą się do tych, którzy opracowali łatkę.

Jak już przestaniemy się śmiać z podejrzenia, że Microsoft nie dysponuje pełnią kodu źródłowego do aplikacji klienckich jego sztandarowej usługi warto zwrócić uwagę na fakt, że łatanie skompilowanego pliku binarnego jest bardzo trudne. Analiza łatki dokonana przez 0patch wykazała, że Microsoft nie tylko skutecznie załatał problem wykryte przez firmę Embedi, ale też zmodyfikował plik w kilku innych miejscach, prawdopodobnie po wykryciu dodatkowych luk w zabezpieczeniach.

Dodatkowo plik został zoptymalizowany przy zachowaniu prawidłowych odwołań do pamięci i funkcji.

Rozwijanie oprogramowania w formie binarnej zamiast kompilowania go na nowo jest trudne. Możemy spekulować, czemu Microsoft zastosował takie podejście, ale sami będąc specjalistami w binarnym łataniu plików uważamy, że wykonali niesamowitą robotę – komentuje 0patch.

Microsoft zajmuje się tworzeniem oprogramowania od ponad czterech dekad. Ciekawe do ilu jeszcze muzealnych, a będących cały czas w obiegu rozwiązań firma nie posiada już dokumentacji czy kodu źródłowego. Zgaduję, że to nie był pierwszy i ostatni raz.

Dołącz do dyskusji

Advertisement