The OpenNET Project / Index page

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

Уязвимость в Roundcube Webmail, позволяющая выполнить код на сервере

08.12.2016 21:00

В web-ориентированном почтовом клиенте Roundcube обнаружена опасная уязвимость, позволяющая выполнить свой код на сервере через отправку из web-интерфейса специально оформленного сообщения. Уязвимость проявляется при использовании настроек по умолчанию (для отправки используется PHP-функция mail() и утилита sendmail, отключен safe_mode).

Суть проблемы в небезопасном использовании PHP-функции mail(), в числе аргументов которой передаются полученные от пользователя непроверенные данные. В частности, для отправки сообщения в Roundcube используется код:


  $sent = mail($to, $subject, $msg_body, $header_str, "-f$from");

который приведёт к вызову утилиты sendmail с передачей в командной строке аргумента "-f$from". Так как содержимое заполняемого пользователем поля From некорректно проверяется на предмет опасных символов, в качестве отправителя можно указать, например, "[email protected] -OQueueDirectory=/tmp -X/var/www/html/rce.php", что при отправке сообщения приведёт к записи содержимого заголовка письма в файл /var/www/html/rce.php. После чего атакующий может через браузер запросить скрипт rce.php и он будет выполнен на сервере.

Проблема устранена в выпусках Roundcube 1.2.3 и 1.1.7. Администраторам Roundcube рекомендует срочно установить обновление и проверить свои серверы на предмет активности атакующих (Roundcube достаточно популярный webmail-клиент, c sourceforge за год было загружено более 260 тысяч копий). В качестве обходного метода защиты вместо PHP-функции mail() можно настроить отправку по SMTP.

  1. Главная ссылка к новости (https://blog.ripstech.com/2016...)
  2. OpenNews: Доступен Roundcube Webmail 1.2.0 с поддержкой PGP
  3. OpenNews: В пакете для организации групповой работы Horde обнаружен бэкдор
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45643-roundcube
Ключевые слова: roundcube, mail
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 21:19, 08/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В Horde что-то похожее было.
     
  • 1.2, Аноним (-), 21:31, 08/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Похоже это только вершина айсберга и всё очень плохо.
    Навскидку, первое что попалось в поиске на GitHub с такой же неисправленной уязвимостью:

    https://github.com/paumiau/pauspeculator/blob/c177dcda06921e51632aa8bbd6296356
    https://github.com/hyperlinkage/elaborate/blob/1dfa8467ad0b0cded5c89fdb12cb716
    https://github.com/SilexLab/Board/blob/6529d7a340abaaffd3dfd8ceea8744690bbe540
    https://github.com/mbaechler/OBM/blob/355c8233cd75c02b1e7252c5b43599aa2c11a6e9
    https://github.com/jungepiraten/vpanel/blob/fc29709c68fe57089ff2d476cc7f458faa

     
     
  • 2.8, Mail (?), 08:10, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Тока не говорит что все это на PHP!

    И да это не язык, это программисты... ))

     
     
  • 3.20, Fantomas (??), 12:38, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    все проблемы в архитектуре пхп.
    почему программисты должны постоянно держать в голове ляпы безопастности и соответственно вставлять костыли, например экранировать кавычки при SQL или экранировать HTML?
    им что, нечем больше заняться?
    безопастность должна быть по умолчанию, а не задним числом.
    по поводу пхп нужно знать, что он дырявый и расчитывать риски.
     
     
  • 4.21, Клыкастый (ok), 12:44, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > безопастности
    > безопастность

    безопасность.

    > по поводу пхп нужно знать, что он дырявый и расчитывать риски.

    строго говоря любую прогу нужно писать исходя из того, что ввод пользователя это крайне опасная тема.

     
     
  • 5.22, Fantomas (??), 13:08, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    язык должен быть безопасный, а не программист должен все время сидеть как на иголках.
    нужно пинать разрабов пхп
     
     
  • 6.23, Andrey Mitrofanov (?), 13:19, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > язык должен быть безопасный, а не программист должен все время сидеть как
    > на иголках.
    > нужно пинать разрабов пхп

    Пишите на brainfnck-е -- на нём не было ни одной уязвимости.  Ну, ещё алгол68 и кобол в последнее время радуют  <WWW><

     
     
  • 7.24, Fantomas (??), 13:54, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    лучше CGI на фортране )))))
    нет, пинать пхп разрабов, тогда всем будет счастье.

     
  • 6.29, angra (ok), 16:52, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Конкретно в этом случае косяк не самого php, а программистов roundcube. Так что пни лучше самого себя для чтения доки и понимания ситуации. А программист должен хоть чуточку головой думать, а не только спинным мозгом копипастить.
     
  • 6.31, Куяврег (?), 20:07, 10/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > язык должен быть безопасный, а не программист должен все время сидеть как на иголках.

    язык должен быть безопасный. а программист должен сидеть, как на иголках

    > нужно пинать разрабов пхп

    нужно. что не исключает необходимости думать башкой.

     
  • 6.32, bOOster (ok), 06:15, 11/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Парадоксальное заявление, один программист должен сидеть "как на иголках" когда пишет код другому программисту? Второй программист видимо РЕМЕСЛЕННИК, ему мозги не нужны совсем?
     
  • 5.26, GNU Spinu (?), 14:02, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> безопастности
    >> безопастность
    > безопасность.

    Он экранировал буквой т середину опастного слова ;-)

     
  • 3.30, anomymous (?), 17:02, 10/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И много вы вебмейл-интерфейсов с такой функциональностью и без монструозного набора библиотек не на PHP видали?

    Или до сих пор фанатик сексченджа?

     

  • 1.3, Запрещенка (?), 22:17, 08/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    санитйзеры exec() не использую явно
     
  • 1.4, олхнтп (?), 23:49, 08/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    SMTP ошибка: [554] 5.5.1 Error: no valid recipients
    хотя завтра всё равно ж придётся патчить :/
     
  • 1.5, SubGun (ok), 00:31, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Никогда не видел roundcube на локалхосте. Обычно отправка как раз через smtp идет. Что-то сильно преувеличено значение уязвимости.
     
     
  • 2.9, Аноним (-), 08:54, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Никогда не видел roundcube на локалхосте. Обычно отправка как раз через smtp
    > идет. Что-то сильно преувеличено значение уязвимости.

    Обычно (и по дефолту) как раз таки в очередь пихают через PHP-шный mail(), очень редко кто заморачивается с настройкой отправки по SMTP на провайдерский или отдельный почтовый сервер и к локалхосту это не имеет никакого отношения.

     

  • 1.6, gogo (?), 01:45, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Для эксплуатации уязвимости нужно иметь, как минимум, доступ к вебмейлу с возможностью отправить письмо.
    Хотя дырка, безусловно, просто позорная.
     
  • 1.7, Аноним (-), 02:02, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А что на серверах кто-то ещё использует sendmail?
    В postfix'вом sendmail -X игнорируется.
     
  • 1.12, Аноним (-), 10:24, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я же говорил Javascript не нужен и его быть не должно , вспомнити npm leftpad и null underfined . А еще вспомнити NaN != NaN . Тут грюки сами-собой напросяться.
     
     
  • 2.15, Andrey Mitrofanov (?), 10:55, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я же говорил Javascript не нужен и его быть не должно ,
    > вспомнити npm leftpad и null underfined . А еще вспомнити NaN
    > != NaN . Тут грюки сами-собой напросяться.

    Даёшь R/O web-почту с бейзик-авторизацией и _статическими_ HTML-страницами. Ура, т-щи!

    [html]
    [head]
      [title]Cubick Sfehre -- web account.[/title]
    [/head]
    [body]
    [h1]Web server last chkd yur mail - 1970-01-01 UTC./h1]
    [pre]
    No news is good news
    [hr][/pre]
    [/body][/html]

     
     
  • 3.18, Аноним (-), 12:12, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лучше так чем с javascript . Javascript тормозит , уже забыли про атом ? А голые Html-страницы было бы гораздл лучше
     
  • 2.19, angra (ok), 12:18, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Болезный, тут javascript вообще не при делах.

    Интересно, навязчивое желание везде и всюду рассказывать про то, какой плохой javascript, это новое психическое расстройство или вариация уже известного?

     

  • 1.14, Аноним (-), 10:50, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пожалуйста, введите хотябы одного получателя
     
     
  • 2.38, fx (ok), 09:46, 29/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    что, так и говорит "хотябы"?
     

  • 1.16, Аноним (-), 11:13, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Давно пора на http://www.rainloop.net/ переходить, как в свое время с "белочки" на roundcube переходили.
     
     
  • 2.27, йцукен (??), 15:58, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я лично первый раз слышу про него.
     

  • 1.25, Дмитрий (??), 13:58, 09/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Кому: example@example.com -OQueueDirectory=/tmp -X/tmp/rce.php
    SMTP ошибка: [503] valid RCPT command must precede DATA
    ЧЯДНТ?
     
     
  • 2.28, angra (ok), 16:44, 09/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не включаешь мозг. В результате не можешь понять ни условия срабатывания уязвимости, ни сообщение об ошибке.
     

  • 1.33, www2 (??), 08:01, 11/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хорошо, что я в chroot все веб-приложения на php запускаю. Хоть как-то от подобных вещей защищает.
     
  • 1.34, Некто (??), 10:36, 12/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >приведёт к записи содержимого заголовка письма в файл /var/www/html/rce.php

    Читаю это и недоумеваю. Неужели в 2017 году еще кто-то дает пользователю веб сервера права на запись в каталоги, которые доступны из адресной строки? Или еще хлеще, sendmail вызывается с suid битом из веб приложения? Это - клиника! Программисты Roundcube (хоть они и козлы!) такому админу не помогут. Только лоботомия.

     
     
  • 2.35, Некто (??), 10:38, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели в 2017 году

    Сорри, поторопился. Конечно 2016

     
     
  • 3.36, Прист (?), 10:52, 12/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ПРЕДЪЯВИТЬ машину времени НЕМЕДЛЕННО!!!
     
     
  • 4.37, adminlocalhost (ok), 17:21, 13/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ПРЕДЪЯВИТЬ машину времени НЕМЕДЛЕННО!!!

    ты из ФСКН что ле?

     

  • 1.39, Nat (ok), 13:48, 27/01/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    здравсвуйте! помогите, пожалуйста!

    как можно зайти в Roundcube если пароль забыт? почта так же привязана к Gmail, что делать? на Gmail пароль установлен точно другой, не такой как на Roundcube...

     

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



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

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