Na poštovním serveru Exim byla objevena kritická zranitelnost (CVE-2026-45185), která umožňuje vzdálené spuštění kódu na serveru. Problém se projevuje od větve Exim 4.97 při sestavení s knihovnou GnuTLS („USE_GNUTLS=yes“) a byl odstraněn ve verzi Exim 4.99.3. Sestavení s OpenSSL a dalšími knihovnami, odlišnými od GnuTLS, zranitelnost neovlivňuje.
Problém je způsoben přístupem k již uvolněné paměti (use-after-free) v backendu k GnuTLS a může být zneužit při přístupu k serverům, které podporují rozšíření „ESMTP CHUNKING“ a příkaz BDAT pro přenos těla zprávy po částech namísto jednoho nedělitelně přenášeného bloku pomocí příkazu DATA. Poškození obsahu paměti procesu nastává, když klient iniciuje předčasné ukončení sezení TLS pomocí příkazu close_notify během přenosu těla zprávy přes BDAT a následně pošle v tom samém TCP spojení jeden bajt nešifrovaně v otevřené podobě.
Po obdržení příkazu close_notify v backendu GnuTLS je vyvolána funkce přerušení TLS sezení, která uvolňuje s tímto sezením spojené buffery. Kvůli chybě v kódu backendu, navzdory uvolnění TLS bufferu, zpracovatel BDAT nadále čte data ze streamu a vyvolává funkci ungetc(), což při odesílání následných nezašifrovaných dat vede k zapsání jednoho bajtu do již uvolněného bufferu. Tento bajt poškozuje metadata alokátoru paměti na haldě, což bylo použito k experimentům na vytvoření exploitu, který spouští libovolný kód na serveru.
Na začátku výzkumníci vygenerovali částečně funkční exploit pomocí AI, který umožnil provést kód, ale byl použitelný pouze za laboratorních podmínek, na systémech s vypnutou ochranou ASLR a PIE a určitou verzí knihovny libc. Následně byla podniknuta snaha vytvořit exploit za účasti člověka, při které se podařilo překonat některé obtíže a dosáhnout úniku adresy zásobníku, ale do plánovaného data zveřejnění informací o zranitelnosti nebyl exploit dokončen. Podle názorů výzkumníků, kteří zranitelnost odhalili, asistenti AI ještě nejsou schopni vytvářet exploidy pro složité produkty, ale doufají, že v budoucnu se podaří jiným výzkumníkům dovést jejich práci do konce a napsat plně funkční exploit.
Ve většině velkých distribucí se verze Exim 4.97+ používá v Debianu 13, Ubuntu 24.04+, SUSE/openSUSE, Arch Linux, Alpine Linux 3.19+, ALT Linux p11, ROSA, Gentoo, OpenWRT, Fedora, EPEL (exim není součástí standardního repozitáře RHEL) a FreeBSD. Sestavení Exim s GnuTLS se ve výchozím nastavení používá v Debiane a Ubuntu, v jiných distribucích je třeba to ověřit. Jako obchvat blokování zranitelnosti lze deaktivovat rozšíření CHUNKING pomocí nastavení chunking_advertise_hosts v konfiguračním souboru.
Zdroj: opennet.ru
