W serwerze pocztowym Exim wykryto krytyczną lukę (CVE-2026-45185), która umożliwia zdalne wykonanie kodu na serwerze. Problem pojawia się od gałęzi Exim 4.97 przy budowie z biblioteką GnuTLS ("USE_GNUTLS=yes") i został naprawiony w wydaniu Exim 4.99.3. Zestawienia z OpenSSL i innymi bibliotekami różnymi od GnuTLS nie są narażone na lukę.
Problem jest spowodowany odwołaniem do już zwolnionej pamięci (use-after-free) w backendzie GnuTLS i może być eksploatowany podczas łączenia z serwerami obsługującymi rozszerzenie "ESMTP CHUNKING" oraz komendę BDAT do przesyłania części ciała wiadomości zamiast przesyłania jej jako niepodzielnego bloku za pomocą komendy DATA. Uszkodzenie zawartości pamięci procesu występuje podczas inicjowania przez klienta przedwczesnego zakończenia sesji TLS za pomocą komendy close_notify w trakcie przesyłania ciała wiadomości przez BDAT, a potem wysłania w tym samym połączeniu TCP jednego bajtu w postaci niezaszyfrowanej.
Otrzymując komendę close_notify, w backendzie GnuTLS wywoływana jest funkcja przerywająca sesję TLS, która zwalnia bufory związane z sesją. Z powodu błędu w kodzie backendu, mimo zwolnienia bufra TLS, obsługa BDAT nadal odczytuje dane ze strumienia i wywołuje funkcję ungetc(), co przy wysłaniu następnie niezaszyfrowanych danych prowadzi do zapisania jednego bajtu w już zwolnionym buforze. Ten bajt uszkadza metadane alokatora pamięci w stercie (heap), co zostało wykorzystane do przeprowadzenia eksperymentów nad stworzeniem exploita wykonującego dowolny kod na. serwerze.
Na początku badacze wygenerowali częściowo działający exploita za pomocą AI, który umożliwił osiągnięcie wykonania kodu, ale działał tylko w sterylnych warunkach, na systemach z wyłączoną ochroną ASLR i PIE oraz określoną wersją biblioteki libc. Następnie podjęto próbę stworzenia exploita przy udziale człowieka, w której część trudności udało się pokonać i osiągnięto wyciek adresu stosu, jednak do planowanej daty ujawnienia informacji o luce exploita nie doprowadzono do końca. Zdań badaczy, którzy odkryli lukę, asystenci AI jeszcze nie są w stanie tworzyć exploitów do złożonych produktów, ale mają nadzieję, że w przyszłości inni badacze będą mogli doprowadzić ich pracę do końca i napisać w pełni działający exploit.
W większych dystrybucjach wersje Exim 4.97+ są wykorzystywane w Debian 13, Ubuntu 24.04+, SUSE/openSUSE, Arch Linux, Alpine Linux 3.19+, ALT Linux p11, ROSA, Gentoo, OpenWRT, Fedora, EPEL (exim nie jest częścią domowego repozytorium RHEL) oraz FreeBSD. Kompilacja Exim z GnuTLS jest używana domyślnie w Debianie i Ubuntu, w innych dystrybucjach wymaga potwierdzenia. Jako obejście blokady luki bezpieczeństwa można wyłączyć rozszerzenie CHUNKING za pomocą ustawienia chunking_advertise_hosts w pliku konfiguracyjnym.
Źródło: opennet.ru
