problem
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
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
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