Уязвимость в Roundcube Webmail, позволяющая выполнить код на сервере
В 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 не фильтруется на предмет опасных символов (проверка выполняется по маске &92;S+@&92;S+), в качестве отправителя можно указать, например, "[email protected] -OQueueDirectory=/tmp -X/var/www/html/rce.php", что при отправке сообщения приведет к записи содержимого заголовка письма в файл /var/www/html/rce.php.
Проблема устранена в выпусках Roundcube 1.2.3 и 1.1.7. Администраторам Roundcube рекомендует срочно установить обновление и проверить свои серверы на предмет активности атакующих (Roundcube достаточно популярный webmail, который за год был загружен более 260 тысяч раз). В качестве обходного метода защиты вместо PHP-функции mail() следует настроить отправку по SMTP.