Уязвимост в Exim, която води до отдалечено изпълнение на код на сървера

В пощенския сервер 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster