Ujawniono szczegóły krytycznej luki w Eximie

opublikowany wydanie korygujące Egzamin 4.92.2 z eliminacją krytycznych luki w zabezpieczeniach (CVE-2019-15846), co w domyślnej konfiguracji może doprowadzić do zdalnego wykonania kodu przez osobę atakującą z uprawnieniami roota. Problem pojawia się tylko wtedy, gdy włączona jest obsługa TLS i jest wykorzystywana poprzez przekazanie specjalnie zaprojektowanego certyfikatu klienta lub zmodyfikowanej wartości do SNI. Słaby punkt zidentyfikowane przez Qualys.

problem obecny w procedurze obsługi ucieczki znaków specjalnych w ciągu (string_interpret_escape() z string.c) i jest spowodowane interpretacją znaku „\” na końcu ciągu przed znakiem pustym („\0”) i jego zmianą. Podczas ucieczki sekwencja „\” i następujący po niej kod null końca linii są traktowane jako pojedynczy znak, a wskaźnik jest przesuwany do danych poza linią, co jest traktowane jako kontynuacja linii.

Kod wywołujący funkcję string_interpret_escape() przydziela bufor do opróżnienia na podstawie rzeczywistego rozmiaru, a odsłonięty wskaźnik kończy się w obszarze poza granicami bufora. W związku z tym przy próbie przetworzenia ciągu wejściowego pojawia się sytuacja podczas odczytu danych z obszaru znajdującego się poza granicami przydzielonego bufora, a próba zapisania ciągu znaków bez zmiany znaczenia może prowadzić do zapisu poza granicami bufora.

W domyślnej konfiguracji lukę można wykorzystać poprzez przesłanie specjalnie zaprojektowanych danych do SNI podczas nawiązywania bezpiecznego połączenia z serwerem. Problem można również wykorzystać, modyfikując wartości peerdn w konfiguracjach skonfigurowanych do uwierzytelniania certyfikatów klienta lub podczas importowania certyfikatów. Atak poprzez SNI i peerdn jest możliwy od momentu wydania Egzamin 4.80, w którym użyto funkcji string_unprinting() do wydrukowania zawartości peerdn i SNI.

Przygotowano prototyp exploita do ataku poprzez SNI, działającego na architekturach i386 i amd64 w systemach Linux z Glibc. Exploit wykorzystuje nakładanie danych na obszar sterty, co powoduje nadpisanie pamięci, w której przechowywana jest nazwa pliku dziennika. Nazwa pliku zostaje zastąpiona przez „/../../../../../../../../etc/passwd”. Następnie następuje nadpisanie zmiennej zawierającej adres nadawcy, co w pierwszej kolejności zostaje zapisane w logu, co pozwala na dodanie nowego użytkownika do systemu.

Aktualizacje pakietów z poprawkami luk wydanymi przez dystrybucje Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. Problem z RHEL i CentOS nie podatny, ponieważ Exim nie jest zawarty w ich zwykłym repozytorium pakietów (w formacie CIEPŁY обновление już uformowany, ale teraz nie umieszczone do publicznego repozytorium). W kodzie Exim problem został rozwiązany za pomocą jednej linijki skrawek, co wyłącza efekt ucieczki ukośnika odwrotnego, jeśli znajduje się on na końcu linii.

Aby obejść tę lukę, możesz wyłączyć lub dodać obsługę protokołu TLS
Sekcja ACL „acl_smtp_mail”:

warunek odmowy = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
warunek odmowy = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Źródło: opennet.ru

Dodaj komentarz