The OpenNET Project / Index page

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

Опубликован метод эксплуатации уязвимости в коде разбора блоков BASE64 в Exim

07.03.2018 22:26

Раскрыты детали техники эксплуатации уязявимости CVE-2018-6789, приводящей к однобайтовому переполнению в реализации декодировщика данных в формате BASE64, которая была устранена в начале февраля в выпуске Exim 4.90.1. Проблема проявляется при обработке данные в формате BASE64, размер которых не кратен 4 (4n+3). Рабочий эксплоит подготовлен для пакетов с Exim из состава Debian 9 и Ubuntu 17.04.

Изначально разработчики Exim скептически отнеслись к возможности практической эксплуатации проблемы, но выявивший уязвимость исследователь показал, что на основе данной уязвимости можно подготовить рабочий эксплоит, позволяющий выполнить код на сервере на стадии до прохождения аутентификации, отправив в качестве аргумента в команде "AUTH" специально оформленные данные в формате BASE64 и при помощи манипуляции с именем хоста отправителя в команде EHLO подготовив нужное смещение в куче для переопределения указателя на следующий блок памяти.

В итоге передачи определённой последовательности данных в командах "AUTH" и "EHLO" указатель на следующий блок хранения можно поменять и перенаправить на блок со строкой ACL. Таким образом, поступающие после команды AUTH данные будут записаны не в блок хранения, а в строку с ACL. Так как в ACL допускается использование конструкции "${run{cmd}}" для выполнения произвольных команд, можно переписать строку c ACL и организовать выполнение любой команды в момент проверки ACL.

По оценке исследователя около 400 тысяч почтовых серверов на базе Exim подвержены риску быть атакованными. Всем администраторам рекомендуется убедиться, что на их системах используется Exim 4.90.1 или установлено обновление пакета с Exim от разработчиков дистрибутивов (Debian, FreeBSD, Ubuntu, Fedora, Arch Linux, openSUSE, SUSE, RHEL/EPEL).

  1. Главная ссылка к новости (https://devco.re/blog/2018/03/...)
  2. OpenNews: Выпуск Exim 4.90.1 с устранением уязвимости, не исключающей выполнение кода на сервере
  3. OpenNews: Уязвимость в Exim, позволяющая выполнить код на сервере
  4. OpenNews: Новая версия почтового сервера Exim 4.88 с устранением уязвимостей
  5. OpenNews: Критическая локальная уязвимость в Exim
  6. OpenNews: Доступен почтовый сервер Exim 4.83 с устранением уязвимости
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: exim, exploit
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, xm (ok), 23:21, 07/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Красиво
     
  • 1.3, Аноним (-), 00:08, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Погладил свой Postfix за ушком.
     
     
  • 2.6, cat666 (ok), 00:44, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Гладь дальше. То, что Postfix такой весь "идеальный", повод насторожится и если про уязвимости и исправления в нём не пишут это не значит, что их нет.
     
     
  • 3.13, нах (?), 05:39, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    да не, в поцфиксе число возможных уязвимостей действительно сильно меньше.
    потому, что если ты ничего не умеешь, то и уязвимостям быть не в чем.

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

     
     
  • 4.37, amonymous (?), 10:55, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > через промежуточные прокладки (и огребай последствия рассинхронизаций)

    Рассинхронизаций? В постфиксе? Это каг??? 0_о Что вы такое аццкое там лепите/курите?

     
  • 4.43, Аноним (-), 12:41, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > ну а если тебе надо что нестандартное - посиди-подожди, пока то же самое приспичит и автору

    … ведь написать патч самому/нанять человека не вариант…

     
     
  • 5.55, angra (ok), 17:04, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А потом поддерживать этот патч для каждой версии postfix, пока его не примут в upstream, если конечно его вообще когда-либо примут. По сравнению с несколькими строками конфига на exim, которые не надо будет править для каждой новой версии это действительно не вариант.
     
  • 3.56, Michael Shigorin jolla (?), 17:38, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Гладь дальше. То, что Postfix такой весь "идеальный", повод насторожится и если
    > про уязвимости и исправления в нём не пишут это не значит,
    > что их нет.

    предъявите.

     
  • 2.8, Аноним (-), 03:17, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Погладил opensmtpd, раз уж так.
     
  • 2.62, D (?), 00:39, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На это он и годен.

    Когда exim на порядок конфигурировованее. Но не все умеют, это да!

     

  • 1.4, Аноним (-), 00:22, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Поставил iRedMail и не парюсь.
     
     
  • 2.5, Crazy Alex (ok), 00:25, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Кхм, при всей моей любви к iRedMail обновлять его - то ещё удовольствие. Работаешь скриптом...
     
     
  • 3.44, Аноним (-), 12:42, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А скрипт не может работать скриптом?
     
     
  • 4.51, Crazy Alex (ok), 13:58, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Может, но готовых нет, а писать скрипт для однократного применения на одном хосте особого смысла нет
     
  • 2.41, Миклуха (?), 12:27, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Юзаю nixos-mailserver - включил и забыл.
     
     
  • 3.63, D (?), 00:41, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Юзаю nixos-mailserver - включил и забыл.

    Так это сборка на основе чужих продуктов.

    А он юзеров в бд умеет хранить?

     
  • 3.67, Crazy Alex (ok), 03:36, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    nixos - штука сильно на любителя...
     

  • 1.7, Аноним (-), 00:54, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > однобайтовому переполнению в реализации декодировщика данных в формате BASE64

    сишники за работой с буфером - то же, что и женщины за рулем. Всех женщин и сишников с 8 марта!

     
     
  • 2.9, Аноним7 (?), 03:21, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Postfix тоже на C.
     
     
  • 3.34, fi (ok), 10:22, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а у него есть секретный не С-ный MTA и он ого-ого  )))))))))))
     
  • 2.52, Нет ты (?), 14:54, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Надо было его под Rust-ом писать, не было бы проблем с буфером. Под Rust-ом также нет проблем с лицезрением женщин за рулём.
     

  • 1.10, Аноним7 (?), 03:22, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А Exim, похоже, метит на лавры sendmail по дырявости.
    Ну как в XXI  веке можно написать дырявый base64? Кому не лень, проверьте, может у них и криптография самописная?
     
     
  • 2.46, Ordu (ok), 12:53, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Ну как в XXI веке можно написать дырявый base64?

    Их дырявый base64 был написан в XX веке. Узнали о дыре в XXI -- это да.

     

  • 1.11, KonstantinB (ok), 05:13, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ай, ну классика жанра же, off-by-one error. Со всеми случается.

    Странно только, что так долго никто не заметил.

     
  • 1.12, qsdg (ok), 05:29, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Такие штуки нужно на Rust писать, по крайней мере разбор входных данных.
     
     
  • 2.14, KonstantinB (ok), 06:40, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Действительно, почему автор Exim в 1995-м году не написал его на Rust?
     
     
  • 3.27, Аноним (-), 07:15, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но сейчас то уже можно
     
     
  • 4.42, Аноним (-), 12:39, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да, приступай.
     
  • 4.45, Аноним (-), 12:43, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    s/можно/модно/
     
  • 2.36, amonymous (?), 10:52, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Напишете свой MTA со сходной функциональностью - приходите.

    Но я вам секрет открою: у 99% хипста на это яиц/терпения не хватит.

     
     
  • 3.39, Имя (?), 12:08, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ты так говоришь, буд-то это что-то очень сложное.. но там основная сложность - это чтение документации.. в остальном, SMTP мало чем отличается от HTTP
     
     
  • 4.47, XoRe (ok), 12:57, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > ты так говоришь, буд-то это что-то очень сложное.. но там основная сложность
    > - это чтение документации.. в остальном, SMTP мало чем отличается от
    > HTTP

    exim - это не только парсер smtp.

     
     
  • 5.50, Аноним (-), 13:31, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > exim - это, к сожалению, не только парсер smtp.

    вот так-то лучше

     
     
  • 6.84, XoRe (ok), 15:21, 13/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> exim - это, к сожалению, не только парсер smtp.
    > вот так-то лучше

    Для кого как.
    Я на exim интересные и сложные вещи реализовывал.
    А кому нужен просто парсер, может поставить что-то попроще.

     
  • 4.54, KonstantinB (ok), 15:30, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Exim хорош тем, что в его конфигурации можно сделать что угодно: по сути это даже не язык конфигурации, а этакий язык декларативного (и местами императивного) программирования для SMTP. Плох, в общем-то, тем же :-)

    Для 98% ситуаций достаточно чего попроще. Но когда стоит нестандартная задача с какой-нибудь хитрой интеграцией, оказывается, что все можно решить на уровне конфигурации Exim.

     
     
  • 5.58, лютый жабист__ (?), 18:09, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Что конкретно нельзя сделать постфиксом? Я уже с 2003 года не слежу за новыми фичами постфикса, ибо почту он исправно принимает. Чё ещё от мта надо-то?
     
     
  • 6.59, Аноним (-), 20:15, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    А теперь попробуй ее форвадить.
     
     
  • 7.60, _ (??), 20:46, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И? В чём прикол?
     
     
  • 8.66, SubGun (ok), 01:03, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В том, что он это не умеет Банальное принять почту, если пользователь есть в E... текст свёрнут, показать
     
     
  • 9.70, Alex_hha (?), 15:29, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну такое то он умеет кстати, банальный relay_domains relay_recipient_maps А ... текст свёрнут, показать
     
  • 6.61, ALex_hha (ok), 23:34, 08/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Сколько раз фанбои постфикс сливали в подобных спорах. Из коробки без внешних фильтров он мало что умеет, от слова совсем
     
     
  • 7.68, Crazy Alex (ok), 03:37, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Э... А должен? linux way, single responcibility там всякие...
     
     
  • 8.71, Alex_hha (?), 15:31, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    это все равно, что в iptables выкинуть все модули и сказать single way все дела ... текст свёрнут, показать
     
  • 8.74, KonstantinB (ok), 19:09, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну вот qmail написан прямо по этому вашему linux way, на каждый пук по процессу ... текст свёрнут, показать
     
     
  • 9.76, _ (??), 19:19, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Правда вашей почты там так и осталось - пятая часть ... текст свёрнут, показать
     
     
  • 10.80, KonstantinB (ok), 22:46, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это было еще в те времена, когда gmail-а не было даже в планах Сейчас там, скор... текст свёрнут, показать
     
  • 6.73, KonstantinB (ok), 19:05, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Например, per user rate limit в соответствии со значением, прописанным в sqlite/mysql/pgsql.

    Не, я понимаю, что можно написать внешний policy service, но зачем так сложно, если можно просто :-)

     
     
  • 7.77, _ (??), 19:21, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Красота по китайски вс красота по японски.
     
  • 7.81, anomymous (?), 17:43, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если policy service - это сложно, то я даже не знаю.
     

  • 1.32, EuPhobos (ok), 08:47, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Изначально разработчики Exim скептически отнеслись к возможности практической эксплуатации проблемы

    Зачем так много букв, это всё можно было заменить четырьмя буквами - "лень" =)

     
  • 1.35, amonymous (?), 10:51, 08/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лишний раз убедился в правильности выбора связки postfix+dovecot для клиентского сервиса :)
     
     
  • 2.64, D (?), 00:44, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Лишний раз убедился в правильности выбора связки postfix+dovecot для клиентского сервиса
    > :)

    Что скажешь, когда в постфиксе найдут дыру?

     
     
  • 3.65, SubGun (ok), 01:01, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не найдут, он нафиг никому не нужен, судя по всему. Иначе бы давно нашли.
     
     
  • 4.69, VimCoder (?), 12:01, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Не найдут, он нужен, судя по всему. Иначе бы давно не нашли.
     
  • 3.82, anomymous (?), 17:44, 10/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Дыры находят везде и всегда. Вопрос в отношение. "А, да разве это дыра" - прямой повод посмотреть альтернативы.
     

  • 1.72, Некто (??), 17:49, 09/03/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Если сходить по ссылке и разобраться в эксплоите, то выясняется, что для успешной эксплуатации требуется:

    First of all, we send a EHLO message with huge hostname ...... 0x6060 length (это, между прочим, EHLO длинной 24672 байта)

    Нормальные админы начинают acl_smtp_helo, mail и rcpt с обязательной проверки:

    drop condition = ${if >={${strlen:$smtp_command_argument}}{256}}

    Так что мировая катастрофа откладывается.

     
     
  • 2.79, Аноним (-), 19:58, 09/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если сходить по ссылке и разобраться в эксплоите, то выясняется, что для
    > успешной эксплуатации требуется:
    > First of all, we send a EHLO message with huge hostname ......
    > 0x6060 length (это, между прочим, EHLO длинной 24672 байта)
    > Нормальные админы начинают acl_smtp_helo, mail и rcpt с обязательной проверки:
    > drop condition = ${if >={${strlen:$smtp_command_argument}}{256}}
    > Так что мировая катастрофа откладывается.

    Спасибо, немного успокоил! Так то оно так, но "Изначально разработчики Exim скептически отнеслись к возможности практической эксплуатации проблемы, но" немного подмачивает (даже не смотря на то, что разработчики они (как правило) такие разработчики :(
    И конечно же, это не Exchange плюс Sendmail с их 5-ю процентами на весь Интернет ;)

     
  • 2.83, xm (ok), 22:46, 11/03/2018 [^] [^^] [^^^] [ответить]  
  • +/
    "Нормальным админам" надо бы RFC почитывать на досуге
    https://tools.ietf.org/html/rfc1869

    "4.1.2.  Maximum command line length

       This specification extends the SMTP MAIL FROM and RCPT TO to allow
       additional parameters and parameter values.  It is possible that the
       MAIL FROM and RCPT TO lines that result will exceed the 512 character
       limit on command line length imposed by RFC 821.  This limit is
       hereby amended to only apply to command lines without any parameters.
       Each specification that defines new MAIL FROM or RCPT TO parameters
       must also specify maximum parameter value lengths for each parameter
       so that implementors of some set of extensions know how much buffer
       space must be allocated. The maximum command length that must be
       supported by an SMTP implementation with extensions is 512 plus the
       sum of all the maximum parameter lengths for all the extensions
       supported."

     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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