Luka w oprogramowaniu AMI MegaRAC spowodowana dostawą starej wersji lighttpd

W oprogramowaniu MegaRAC firmy American Megatrends (AMI), które jest wykorzystywane w kontrolerach BMC (Baseboard Management Controller) wykorzystywanych przez producentów serwerów do organizowania autonomicznego zarządzania sprzętem, umożliwiając nieuwierzytelnionemu atakującemu zdalne odczytanie zawartości pamięci proces zapewniający funkcjonowanie interfejsu WWW. Luka pojawia się w oprogramowaniu sprzętowym wydawanym od 2019 roku i jest spowodowana dostarczeniem starej wersji serwera HTTP Lighttpd zawierającej niezałataną lukę.

W kodzie Lighttpd luka ta została naprawiona w 2018 roku w wersji 1.4.51, jednak poprawka została wprowadzona bez przypisania identyfikatora CVE i bez publikowania raportu opisującego charakter luki. Informacja o wydaniu wspomniała o poprawkach bezpieczeństwa, ale skupiała się na luce w mod_userdir, polegającej na użyciu znaków „..” i „”. w nazwie użytkownika.

Na liście zmian widniał także problem z przetwarzaniem nagłówków HTTP, jednak poprawka ta została pominięta przez twórców oprogramowania i nie została przeniesiona do produktu, gdyż notatka o potencjalnej eliminacji luki klasy use-after-free pojawiła się jedynie w tekst zatwierdzenia, a na liście ogólnej nie wprowadzono żadnych zmian wskazujących, że błąd powoduje dostęp do pamięci po zwolnieniu.

Luka umożliwia odczyt zawartości pamięci poza przydzielonym buforem. Problem jest spowodowany błędem w kodzie scalania nagłówka HTTP używanym podczas określania wielu wystąpień nagłówka HTTP „If-Modified-Since”. Podczas przetwarzania drugiej instancji nagłówka lighttpd przydzielił nowy bufor do przechowywania scalonych wartości i zwolnił pamięć dla bufora zawierającego wartość z pierwszego nagłówka. W tym przypadku wskaźnik con->request.http_if_modified_since nie zmienił się i nadal wskazywał na już zwolniony obszar pamięci.

Ponieważ wskaźnik ten został wykorzystany w operacjach porównujących zawartość nagłówka If-Modified-Since, w wyniku czego wygenerowano różne kody powrotne, atakujący mógł brutalną siłą odgadnąć nową zawartość pamięci, która była wcześniej zajęty przez pierwszy bufor. Problem można wykorzystać w połączeniu z innymi lukami, na przykład do określenia układu pamięci w celu ominięcia mechanizmów bezpieczeństwa, takich jak ASLR (randomizacja przestrzeni adresowej).

Obecność luki została potwierdzona na platformach serwerowych Lenovo i Intel, jednak firmy te nie planują udostępniania aktualizacji oprogramowania sprzętowego ze względu na wygaśnięcie wsparcia technicznego dla produktów korzystających z tego oprogramowania oraz niski poziom istotności luki. Problem objawia się w oprogramowaniu dla platform Intel M70KLP oraz Lenovo HX3710, HX3710-F i HX2710-E (luka występuje m.in. w najnowszych wersjach oprogramowania Lenovo 2.88.58 i Intel 01.04.0030). Dodatkowo zgłoszono, że luka w lighttpd pojawia się także w oprogramowaniu sprzętowym Supermicro oraz w serwerach korzystających z kontrolerów BMC firm Duluth i AETN.

Źródło: opennet.ru

Dodaj komentarz