È stata identificata una vulnerabilità critica nel server di posta Exim (CVE-2026-45185), che consente l'esecuzione remota di codice sul server. Il problema si manifesta a partire dal ramo Exim 4.97 quando compilato con la libreria GnuTLS ("USE_GNUTLS=yes") ed è stato risolto nella versione Exim 4.99.3. Le compilazioni con OpenSSL e altre librerie diverse da GnuTLS non sono influenzate dalla vulnerabilità.
Il problema è causato da un accesso a memoria già liberata (use-after-free) nel backend di GnuTLS e può essere sfruttato quando si interagisce con server che supportano l'estensione "ESMTP CHUNKING" e il comando BDAT per inviare corpi di messaggi in porzioni anziché utilizzare il comando DATA per trasmettere un blocco indivisibile. La corruzione del contenuto della memoria del processo si verifica quando il client termina prematuramente la sessione TLS utilizzando il comando close_notify durante la trasmissione del corpo del messaggio tramite BDAT e successivamente invia in quello stesso collegamento TCP un byte non crittografato in chiaro.
Ricevendo il comando close_notify, nel backend GnuTLS viene chiamata una funzione di interruzione della sessione TLS, che libera i buffer associati alla sessione. A causa di un errore nel codice del backend, nonostante il buffer TLS venga liberato, il gestore BDAT continua a leggere dati dallo stream e chiama la funzione ungetc(), il che, nell'invio successivo di dati non crittografati, porta alla scrittura di un byte in un buffer già liberato. Questo byte corrompe i metadati dell'allocatore di memoria nell'heap, il che è stato sfruttato per condurre esperimenti nella creazione di un exploit in grado di eseguire codice arbitrario su server.
Inizialmente, i ricercatori hanno generato un exploit parzialmente funzionante tramite AI, che ha permesso l'esecuzione di codice, ma era operativo solo in condizioni controllate, su sistemi con protezioni ASLR e PIE disabilitate e un determinato versione della libreria libc. Successivamente, è stato tentato di creare un exploit con la partecipazione umana, in cui alcune difficoltà sono state superate e si è riusciti ad ottenere una fuga dell'indirizzo dello stack, ma entro la data programmata per la divulgazione dell'informazione sulla vulnerabilità, l'exploit non era stato completato. Secondo i ricercatori che hanno identificato la vulnerabilità, gli assistenti AI non sono ancora in grado di creare exploit per prodotti complessi, ma sperano che in futuro altri ricercatori possano portare a termine il loro lavoro e scrivere un exploit completamente funzionante.
Nelle principali distribuzioni, le versioni di Exim 4.97+ sono utilizzate in Debian 13, Ubuntu 24.04+, SUSE/openSUSE, Arch Linux, Alpine Linux 3.19+, ALT Linux p11, ROSA, Gentoo, OpenWRT, Fedora, EPEL (exim non è presente nel repository predefinito di RHEL) e FreeBSD. La build di Exim con GnuTLS è utilizzata per impostazione predefinita in Debian e Ubuntu, mentre in altre distribuzioni necessita di conferma. Per eludere il blocco della vulnerabilità, è possibile disattivare l'estensione CHUNKING mediante la configurazione chunking_advertise_hosts nel file di configurazione.
Fonte: opennet.ru
