Na serwerze pocztowym Exim
W domyślnej konfiguracji atak może zostać przeprowadzony bez zbędnych komplikacji przez użytkownika lokalnego, ponieważ stosowana jest lista ACL „weryfikuj = odbiorca”, która dodatkowo sprawdza adresy zewnętrzne. Zdalny atak może nastąpić w przypadku zmiany ustawień, na przykład pełnienia roli dodatkowego rekordu MX dla innej domeny, usunięcia listy ACL „verify=recipient” lub pewnych zmian w sufiksie_części_lokalnej). Zdalny atak jest również możliwy, jeśli atakujący będzie w stanie utrzymać otwarte połączenie z serwerem przez 7 dni (na przykład wysyłając jeden bajt na minutę w celu ominięcia limitu czasu). Jednocześnie możliwe jest, że istnieją prostsze wektory ataku umożliwiające zdalne wykorzystanie problemu.
Podatność spowodowana jest błędną weryfikacją adresu odbiorcy w funkcji Deliver_message() zdefiniowanej w pliku /src/deliver.c. Manipulując formatowaniem adresu, osoba atakująca może zastąpić swoje dane argumentami polecenia wywoływanego za pośrednictwem funkcji execv() z uprawnieniami roota. Działanie nie wymaga stosowania skomplikowanych technik stosowanych w przypadku przepełnienia bufora lub uszkodzenia pamięci, wystarczy proste podstawienie znaków.
Problem związany jest z użyciem konstrukcji do konwersji adresu:
dostarczanie_localpart = rozwiń_string(
string_sprintf("${local_part:%s}", nowy->adres));
dostawa_domena = rozwiń_ciąg(
string_sprintf("${domena:%s}", nowy->adres));
Funkcjaexpand_string() jest zbyt skomplikowanym sumatorem, obejmującym rozpoznawanie polecenia „${run{argumenty polecenia}”, co prowadzi do uruchomienia zewnętrznego modułu obsługi. Zatem, aby zaatakować w ramach sesji SMTP, użytkownik lokalny musi jedynie wysłać polecenie typu „RCPT TO „nazwa użytkownika+${run{...}}@localhost””, gdzie localhost jest jednym z hostów z listy domen_lokalnych, a nazwa użytkownika to nazwa istniejącego użytkownika lokalnego.
Jeśli serwer działa jako przekaźnik poczty wystarczy zdalnie wysłać komendę 'RCPT TO "${run{...}}@relaydomain.com"', gdzie przekaźnikdomain.com jest jednym z hostów wymienionych w grupie przekaźnik_do_domen sekcję ustawień. Ponieważ Exim nie domyślnie porzuca tryb uprawnień (deliver_drop_privilege = false), polecenia przekazywane przez „${run{...}}” będą wykonywane jako root.
Warto zauważyć, że luka była
Poprawka dla poprzednich wersji, które są nadal używane w dystrybucjach, jest obecnie dostępna tylko jako
Źródło: opennet.ru