В пощенския сървър Exim е установена критична уязвимост (CVE-2026-45185), която позволява отдалечено изпълнение на код на сървъра. Проблемът се проявява, започвайки от версия Exim 4.97 при компилация с библиотеката GnuTLS („USE_GNUTLS=yes“) и е отстранен в версия Exim 4.99.3. Компилации с OpenSSL и други библиотеки, различни от GnuTLS, не са засегнати от уязвимостта.
Проблемът е причинен от достъп до вече освободена памет (use-after-free) в бекенда на GnuTLS и може да бъде експлоатиран при свързване с сървъри, които поддържат разширението „ESMTP CHUNKING“ и командата BDAT за предаване на части от съдържанието на имейла вместо предаване в неделим блок чрез командата DATA. Повреждането на съдържанието на паметта на процеса се случва при иницииране на преждевременно приключване на TLS сеанса от клиента чрез командата close_notify по време на предаване на съдържанието на съобщението през BDAT и изпращане на следващ байт без криптиране в открит вид в същата TCP връзка.
Получавайки команда close_notify в бекенда на GnuTLS, се извиква функцията за прекратяване на TLS сеанса, която освобождава свързаните с сеанса буфери. Поради грешка в кода на бекенда, въпреки освобождаването на TLS буфера, обработчикът BDAT продължава да чете данни от потока и извиква функцията ungetc(), което при изпращането на незашифровани данни води до запис на един байт в вече освободен буфер. Този байт поврежда метаданните на аллокатора на паметта в купчина (heap), което е било използвано за провеждане на експерименти по създаване на експлоит, изпълняващ произволен код на. сървър.
Първоначално изследователите генерират частично работещ експлоит чрез AI, който позволява изпълнение на код, но работи само в контролирани условия, на системи с изключена защита ASLR и PIE, и с определена версия на библиотеката libc. След това е направен опит за създаване на експлоит с участието на човек, при който част от трудностите са преодолени и е постигнато изтичане на адреса на стека, но до планираната дата за разкриване на информация за уязвимостта експлоитът не е завършен. Според изследователите, открили уязвимостта, AI асистентите все още не са способни да създават експлоити за сложни продукти, но се надяват, че в бъдеще други изследователи ще могат да завършат тяхната работа и да напишат напълно работещ експлоит.
От големите дистрибуции версии Exim 4.97+ се използват в Debian 13, Ubuntu 24.04+, SUSE/openSUSE, Arch Linux, Alpine Linux 3.19+, ALT Linux p11, ROSA, Gentoo, OpenWRT, Fedora, EPEL (exim не е част от основния репозиторий RHEL) и FreeBSD. Сборката на Exim с GnuTLS се прилага по подразбиране в Debian и Ubuntu, а в другите дистрибуции изисква уточнение. Като обходен начин за блокиране на уязвимостта може да се деактивира разширението CHUNKING чрез настройката chunking_advertise_hosts в конфигурационния файл.
Източник: opennet.ru
