The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

20.05.2020 12:32

Исследователи безопасности из компании 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. Первая уязвимость (CVE-2020-3811) позволяет обойти проверку email-адреса, а вторая (CVE-2020-3812) приводит к утечке локальной информации. В частности, первая уязвимость позволяет обойти проверку корректности адреса, применяемого в эксплоите для передачи команды (проверка не срабатывает для адресов без домена, таких как "localuser-;command;"). Вторая уязвимость может использоваться для проверки наличия файлов и каталогов в системе, в том числе доступных только для root (qmail-verify запускается с правами root), через прямое обращение к локальному обработчику.

Для обхода проблемы Бернштейн рекомендовал запускать процессы qmail с выставлением общего лимита на доступную память ("softlimit -m12345678"), и в этом случае проблема блокируется. В качестве альтернативного способа защиты также упоминается ограничение максимального размера обрабатываемого сообщения через файл "control/databytes" (по умолчанию не создаётся при настройках по умолчанию qmail остаётся уязвим). Кроме того, "control/databytes" не защищает от локальных атак со стороны пользователей системы, так как ограничение учитывается только в qmail-smtpd.

Проблема затрагивает пакет netqmail, входящий в репозитории Debian. Для данного пакета подготовлен набор патчей, устраняющий как старые уязвимости 2005 года (через добавление в код функции alloc() жёстких лимитов на память), так и новые проблемы в qmail-verify. Отдельно подготовлен обновлённый вариант патча qmail-verify. Разработчики ответвления notqmail подготовили свои патчи для блокирования старых проблем, а также запустили работу по устранению всех возможных целочисленных переполнений в коде.

Дополнение: Опубликован код эксплоита.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Представлен notqmail, форк почтового сервера qmail
  3. OpenNews: Автор qmail, D. J. Bernstein, изменил лицензию на все свои программы
  4. OpenNews: Найдено 3 уязвимости в qmail
  5. OpenNews: Уязвимости в OpenSMTPD, позволяющие удалённо и локально получить права root
  6. OpenNews: Опубликован Exim 4.92.3 с устранением четвёртой за год критической уязвимости
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52991-qmail
Ключевые слова: qmail
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (71) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 13:09, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Таки Бернштейн выплатит $1000?
     
     
  • 2.5, пох. (?), 13:28, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Таки Бернштейн выплатит $1000?

    он жадный, опять отмажется, что мол qmail-local не qmail, корова не моя, рут не рут, и вообще в 2005м надо было приходить.

     
     
  • 3.58, trolleybus (?), 23:05, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > он жадный

    Что, уже из-за фамилии?

     
     
  • 4.72, myhand (ok), 09:55, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот причем таки тут уже фамилия, я вас спрашиваю?
     
     
  • 5.81, Michael Shigorin (ok), 04:13, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    АПВтС?
     

  • 1.6, Аноним (6), 13:44, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А есть какие-нибудь современные, относительно надежные почтовые серверы, без длинного шлейфа костылей и отпечатков различных эпох в коде?
     
     
  • 2.7, Аноним (2), 14:00, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    postfix
     
     
  • 3.8, Аноним (6), 14:10, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не соответствует двум последним требованиям.
     
     
  • 4.62, Аноним (62), 23:47, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Соответствует
     
     
  • 5.65, Аноним (6), 00:25, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет.
     
     
  • 6.69, анонаноним (?), 03:51, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    да
     
     
  • 7.83, Ефросий (?), 07:16, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Незнаю
     
  • 2.13, Сейд (ok), 14:26, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Exim
     
     
  • 3.21, Аноним (21), 14:48, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Каждый месяц находят критические дыры:

    https://repology.org/project/exim/information

    Из последнего:

    CVE-2019-10149 critical
    CVE-2018-6789 critical
    CVE-2020-12783 high
    CVE-2019-16928 critical
    CVE-2019-15846 critical
    CVE-2019-13917 critical

     
     
  • 4.27, Сейд (ok), 15:23, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Находят и исправляют.
     
     
  • 5.30, КО (?), 15:47, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И добавляют новые!
     
  • 5.84, Аноним (-), 13:38, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Находят и исправляют.

    В qmail весь список небось короче чем у этого CVE-2019-* ;)

     
  • 4.57, Pahanivo пробегал (?), 23:02, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он сендмыл по этому показателю в каком году переплюнул?
     
  • 2.37, nemo (??), 16:56, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    chasquid. относительная надежность сторонним аудитом, правда, не проверялась.
     
     
  • 3.64, Аноним (6), 00:24, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, потыкаю. Спасибо.
     
  • 2.39, CGP (?), 17:44, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Communigate Pro
     
     
  • 3.50, Sw00p aka Jerom (?), 19:56, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Тот же постфикс
     
  • 2.41, Z (??), 18:14, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из бесплатных postfix безусловно хорош
    Из платных Echange, но он не к OpenNET :)
     
  • 2.43, InuYasha (?), 18:35, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мне тоже очень интересно, обновляю страницу ради каментов )
     
  • 2.46, Аноним (46), 19:30, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А есть какие-нить современный SMTP-сервер, рожденный не более месяца назад? Ну что за бред то? ВСе надежные и проверенные решения имеют солидный возраст. Единственное что приходит на ум - OpenSMTP, но я не знаю насколько он функционален.
     
     
  • 3.47, Онаним (?), 19:43, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вообще MTA это не то место, где место стильно-модно-молодёжным хипстерским решениям. Это основа коммуникации, тaщемта
     
  • 3.48, Онаним (?), 19:44, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    OpenSMTPd же это скорее вариант от нонконформистов.
     
  • 2.70, Аноним (70), 03:58, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Exchange
     
     
  • 3.74, Аноним (74), 11:47, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Он не современный, у него длинный шлейф из костылей и отпечатки разных эпох в коде
     
     
  • 4.85, Аноним (-), 13:40, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И vuln'ов в нем более чем. Впрочем, чтобы об этом узнать надо его сначала суметь хотя-бы установить, чтоли.
     
  • 2.71, пох. (?), 09:55, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Почта, она знаешь, вообще не современная такая штука.

    Так что нет, модного, современного и со стразиками - нету, и на хрусте тоже никто не переписал, ты первым будешь.

    А кому нужна почта - тоже таким несовременным и немодным - для тех незамысловатых задачек, с которыми может справиться qmail, хватает postfix. В остальных случаях - пользуются exim.

     
  • 2.77, Аноним (21), 14:28, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Сам по себе email - костыль и пережиток, так что увы.
     
     
  • 3.86, Аноним (-), 13:41, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вы на автомобилях ездите?! Костыль и пережиток из 19 века же!
     
  • 2.79, Аноним (79), 17:17, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержу вопрос. Посоветуйте MTA чисто для отправки локальной почты вовне. Уведомления рассылать и всё такое.
    А релея чтобы там не было вообще т.к. он мне и нафиг не нужон, релей ваш. И не хочется мне 100500 опций в конфиге править чтобы этот релей выключить полностью и бесповоротно.
     
     
  • 3.90, scorry (ok), 17:40, 24/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не хотите править — заплатите тем, кто может и умеет.
     

  • 1.9, Аноним (9), 14:11, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > показали возможность эксплуатации уязвимости в почтовом сервере qmail, известной ещё с 2005 года

    Сижу, читаю новость, пью чай, никого не трогаю. И вот, на этой строчке чуть чаем и не подавился. 15 лет эксплойту!

     
     
  • 2.15, КО (?), 14:33, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Эксплойту то как раз гораздо меньше. На его реализацию понадобилось 15 лет.
    Так что теперь, если у тебя есть доступ к серваку с почтой по ssh, квота на запись большого фала, то отправив письмо руту, а он использует qmail можно выполнить код в его окружении. Правда не совсем понятно, незаметно ли для него?
     
     
  • 3.17, Аноним (17), 14:43, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > большого фала

    Что там у вас в соседней вкладке открыто?

     
     
  • 4.67, ffirefox (?), 03:21, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дверь на палубу яхты
     
     
  • 5.87, Аноним (-), 13:43, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Главное чтобы не кингстон.
     

  • 1.10, Аноним (9), 14:14, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > При изначальном разборе уязвимости в 2005 году Дэниел Бернштейн (Daniel J. Bernstein), утверждал, что присутствующее в коде предположение о том, что размер выделяемого массива всегда укладывается в 32-битное значение основано на том, что никто не предоставляет гигабайты памяти каждому процессу.

    640kb хватит всем. Они, случаем, не родственники?

     
  • 1.11, Аноним (9), 14:16, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > Для обхода проблемы Бернштейн рекомендовал запускать процессы qmail с выставлением общего лимита на доступную память

    Т.е. переполнение он чинить не будет? Хм. И так сойдет! (с) Вовка

     
     
  • 2.12, Аноним84701 (ok), 14:23, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Т.е. переполнение он чинить не будет? Хм. И так сойдет! (с) Вовка

    Сейчас модно говорить
    "Notabug!" © Рыжий


     
  • 2.16, КО (?), 14:35, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну если честно то не ограничивать письма в любом случае дурной тон - так можно и на 32T нарваться
     
     
  • 3.35, Аноним (9), 16:39, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > так можно и на 32T нарваться

    Ой, да еще на 15 лет хватит.

     

  • 1.14, Аноним (14), 14:33, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А что такое "КУМАЙЛ"?
     
     
  • 2.19, mos87 (ok), 14:46, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    РасКуМаил
     
  • 2.28, анончик (?), 15:34, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +10 +/
    небольшой исторический экскурс.

    до того, как появились postfix и exim, было четыре варианта:
    * sendmail v4. старый, глючный, unsupported. шёл в большинстве коммерческих юниксов
    * sendmail v8. новый, молодёжный, глючный, перманентно дырявый. шёл из коробки в бесплатных юниксах.
    * smail. первая попытка переписать этот бардак. прожил не очень долго и из коробки нигде не был.
    * qmail. вторая попытка переписать этот бардак (на архитектуре, которую потом унаследовал postfix)

    так вот -- пока не появился postfix в 98'ом, целых три года qmail был популярен на фоне постоянно дырявого и неудобного в конфигурации sendmail той поры. конечно, не для всех применений, например uucp приходилось пользовать на sendmail. но там, где функциональность sendmail была избыточна -- это был глоток свежей воды.

    также qmail известен тем, что ввёл формат почтового ящика Maildir, в который научились в итоге все: postfix, exim, courier-imap, dovecot, procmail, maildrop.

     
     
  • 3.34, анончик (?), 16:17, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    да, забыл ещё одну деталь. qmail также знаменит очень активным NIH создателя.

    так, чтобы собрать и запустить qmail надо было смириться с:
    1. NIH syslog + init.d (daemontools)
    2. NIH FHS (да-да, прощай noexec на /var)

     

  • 1.18, mos87 (ok), 14:45, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    всего 15 лет понадобилось для создания эксплоита?
    хотя, может это через 15 решили *опубликовать* эксплоит.. с этими дырами никогда не знаешь)
     
     
  • 2.29, Аноним (29), 15:35, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще-то это называется «анализ проблемы».
     
     
  • 3.38, SubGun (??), 17:30, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это называется "вбрэйнфак"
     

  • 1.26, InuYasha (?), 15:15, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >>открытие файла ".qmail-extension" через функцию open(), что приводит к фактическому запуску функции system(".qmail-extension").

    WHAT!? или это всё-таки не fopen()???

     
     
  • 2.32, Аноним (21), 16:08, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что тебя так смутило? Рассказывай, не стесняйся.
     

  • 1.42, Z (??), 18:15, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Первая мысль - неужели этим кто-то еще пользуется?
    А потом понимаешь, что почему дырка была не замеченна с 2005 года, примерно с того времени никто им не пользуется
     
     
  • 2.44, Аноним (44), 18:47, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть этот qmail как наследие компании. Хочется прикопать, но как мигрировать эти legacy-сервера с их доменами, ящиками, автоответчиками, перенаправлениями и рассылками - еще предстоит придумать.
     
     
  • 3.49, Онаним (?), 19:45, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    postfix не осилит? По идее все эти вещи в него нормально вписываются.
     
  • 3.76, пох. (?), 14:12, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    учитывая что ничего из перечисленного невозможно в самом qmail - так и мигрировать, за пару минут настроив те же самые домены и форвардинг в те же самые костыли и прокладки, которые у тебя были до того.

     

  • 1.45, Маня (?), 18:59, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Не к чему хорошему покупка памяти не привела
     
     
  • 2.78, brt (ok), 15:27, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Так загрузи в неё словарик русского языка.
     

  • 1.52, Аноним (52), 20:08, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Dirty Cow в пoпeнcopce провисел 10 лет не тронутым, эта дырка 15. Какой следующий рекорд?
     
     
  • 2.54, DerRoteBaron (ok), 20:45, 20/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Повышение привилегии локального вантуза через службу печати с 3.x до 10?
     
     
  • 3.80, Трололо (?), 19:35, 21/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Бага в scp -r - 30 лет.
     

  • 1.53, Wladmis (ok), 20:43, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > При изначальном разборе уязвимости в 2005 году Дэниел Бернштейн (Daniel J. Bernstein), утверждал, что присутствующее в коде предположение о том, что размер выделяемого массива всегда укладывается в 32-битное значение основано на том, что никто не предоставляет гигабайты памяти каждому процессу.

    Не могу не отметить, что djb@ привёл... железный аргумент :)

     
  • 1.56, Аноним (-), 21:51, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Если дистрибутивы использующие exim в установке по умолчанию перейдут на qmail (почему не на postfix? непонятно), то я не обижусь. Но exim зарывать не стоит, пусть лучше перепишут чуть более чем полностью. Правда возможностей для тестирования будет немного меньше.
     
  • 1.59, Pahanivo пробегал (?), 23:09, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    echo "52428800" > /var/qmail/control/databytes
    Насколько я помню, по длине рубится еще на стадии smtp.
     
     
  • 2.82, Аноним (82), 04:55, 22/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    и остальной текст статьи тоже можно сюда в комментарий перепечатать, но лучше всё же сразу читать новость до конца ;-)
     
  • 2.88, Аноним (88), 22:53, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Локальную уязвимость можно быстро закрыть например так: переименовать оригинальный qmail-local например в qmail-local.orig и создать вместо него qmail-local такого содержания:

    #!/bin/bash

    /bin/cat - | /usr/bin/softlimit -m 16000000 /var/qmail/bin/qmail-local.orig "$@"

    и идти снова в спячку лет на 20

     
     
  • 3.89, Аноним (88), 22:56, 23/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    16000000 заменить на своё значение, например 52428800
     

  • 1.61, A (?), 23:15, 20/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    640к хватит всем.

    Школьные какие-то косяки. Ну  совсем.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру