В почтовом агенте Exim, ориентированном на Unix-подобные системы, обнаружена критическая уязвимость, позволяющая удаленно выполнить произвольный код. По данным компании E-Soft, Exim в качестве MTA-агента ныне используют больше половины почтовых серверов в Интернете.

Данную брешь (CVE-2017-16943), как пишет Security Week, обнаружил исследователь из тайваньской ИБ-компании DEVCORE, известный в Сети под ником Meh. Согласно описанию в баг-трекере Exim.org, эта уязвимость заключается в возможности использования освобожденной памяти при разборе заголовков почтовых сообщений.

Эксплойт в данном случае требует наличия поддержки ESMTP-команды CHUNKING, инициирующей фрагментированную передачу содержимого сообщений (в отличие от команды DATA, которая диктует передачу сообщения единым блоком). Чтобы избавить сервер-получатель от поиска конца данных при CHUNKING-передаче, подается специальная  команда BDAT с аргументом, определяющим совокупное число байтов в сообщении. Принимающая сторона пересчитывает байты и при совпадении размера со значением, заданным через BDAT, приходит к выводу, что получены все данные сообщения.

Опубликованный вместе с уязвимостью PoC-эксплойт предполагает подачу особой BDAT-команды — без указания размера сообщения. Следует заметить, что опция CHUNKING появилась в Exim 4.88 и присутствует в 4.89, так что уязвимыми являются только эти версии продукта.

Согласно записи на сайте Exim.org от 25 ноября, RCE-уязвимость была раскрыта до выхода патча (Meh не нашел email-адрес для приема таких отчетов и сообщил о ней через запись в Exim Bugzilla). Пользователям рекомендуется незамедлительно отключить ESMTP CHUNKING, открыв основной раздел настроек Exim и задав пустое значение в параметре chunking_advertise_hosts. В исходный код уже внесены исправления, которые Meh проверил и одобрил.

Исследователь также обнаружил еще одну брешь в Exim — согласно бюллетеню, высокой степени опасности. Эта уязвимость (CVE-2017-16944) тоже связана с реализацией ESMTP CHUNKING: при парсинге заголовка с BDAT-данными Exim ищет символ «.», который явился бы сигналом конца сообщения. В результате у злоумышленников появилась возможность вызвать на сервере состояние отказа в обслуживании подачей вредоносных команд BDAT.

Разработчики подтвердили наличие уязвимости, отметив, что ее использование может вызвать зацикливание Exim, даже если закрыть соединение, и в итоге повлечь истощение памяти на сервере.

Категории: Уязвимости