Удалённо эксплуатируемая уязвимость в почтовом сервере qmail

20 мая 2020 года

Исследователи безопасности из компании Qualys показали возможность эксплуатации уязвимости в почтовом сервере qmail, известной ещё с 2005 года (CVE-2005-1513), но остававшейся неисправленной, так как автор qmail утверждал о нереалистичности создания работающего эксплоита, который мог бы применяться для атаки на системы в конфигурации по умолчанию. В Qualys удалось подготовить эксплоит опровергающий данное предположение и позволяющий инициировать удалённое выполнение кода на сервере через отправку специально оформленного сообщения.

Проблема вызвана целочисленным переполнением в функции stralloc_readyplus(), которое может возникнуть при обработке очень большого сообщения. Для эксплуатации требовалась 64-разрядная система с объёмом виртуальной памяти более 4ГБ. При изначальном разборе уязвимости в 2005 году Дэниел Бернштейн (Daniel J. Bernstein), утверждал, что присутствующее в коде предположение о том, что размер выделяемого массива всегда укладывается в 32-битное значение основано на том, что никто не предоставляет гигабайты памяти каждому процессу. За последние 15 лет 64-разрядные системы на серверах вытеснили 32-разрядные, кардинально выросли объёмы поставляемой памяти и пропускная способность сетей.

Сопровождающие пакеты с qmail учли замечание Бернштейна и при запуске процесса qmail-smtpd ограничивали доступную память (например, в Debian 10 выставляется лимит в 7MB). Но инженеры из Qualys выяснили, что этого недостаточно и кроме qmail-smtpd удалённая атака может быть проведена на процесс qmail-local, который во всех проверенных пакетах оставался не ограничен. В качестве доказательства был подготовлен прототип эксплоита, пригодный для атаки на поставляемый в Debian пакет с qmail в конфигурации по умолчанию. Для организации удалённого выполнения кода в ходе атаки требуется наличие на сервере 4ГБ свободного места на диске и 8ГБ ОЗУ. Эксплоит позволяет запустить любые shell-команды с правами любого пользователя в системе, кроме root и системных пользователей, не имеющих своего подкаталога в каталоге "/home" (процесс qmail-local запускается с правами локального пользователя, которому осуществляется доставка).

Атака осуществляется через отправку очень большого почтового сообщения, включающего несколько строк в заголовке, размером около 4GB и 576MB. Обработка такой строки в qmail-local приводит к целочисленному переполнению при попытке доставки сообщения локальному пользователю. Целочисленное переполнение следом приводит к переполнению буфера при копировании данных и возможности перезаписи страниц памяти с кодом libc. Через манипуляции с компоновкой передаваемых данных удаётся в том числе переписать адрес функции "open()", заменив его на адрес функции "system()".

Далее, в процессе вызова qmesearch() в qmail-local осуществляется открытие файла ".qmail-extension" через функцию open(), что приводит к фактическому запуску функции system(".qmail-extension"). Но так как часть файла "extension" образуется на основе адреса получателя (например, "localuser-extension@localdomain") атакующие могут организовать передачу команды для запуска, указав пользователя "localuser-;command;@localdomain" в качестве получателя сообщения.

В ходе анализа кода также были выявлены две уязвимости в дополнительном патче qmail-verify, который входит в состав пакета для Debian. Первая уязвимость (

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Удалённо эксплуатируемая уязвимость в почтовом сервере qmail», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.