В почтовом web-клиенте Squirrelmail выявлена критическая уязвимость (CVE-2017-7692), позволяющая выполнить код на сервере через отправку через web-интерфейс специально оформленного письма. Проблема проявляется в последнем выпуске Squirrelmail 1.4.22. Так как проект Squirrelmail уже много лет не обновлялся и разработчики не ответили на уведомление о проблеме, исследователи безопасности самостоятельно подготовили патч. Уязвимость пока остаётся неисправленной в пакете squirrelmail, поставляемом в репозиториях Debian и Ubuntu.
Уязвимость связана с отсутствием должных проверок аргументов, передаваемых при вызове утилиты sendmail через PHP-функцию popen(). В частности, для чистки опасных символов перед вызовом popen использовалась функция escapeshellcmd(), которая не экранирует пробелы и символы табуляции. Так как sendmail вызывается с опцией "-f$envelopefrom", манипулируя с адресом отправителя атакующий может передать произвольный набор аргументов, в том числе использовать опцию "-C" для инициирования обработки подставного файла конфигурации sendmail.cf.
Через переопределение в файле конфигурации sendmail.cf агента доставки можно выполнить в системе любой код с правами web-приложения (обычно, www-data). Так как Squirrelmail сохраняет вложения к письмам по известному пути (/var/local/squirrelmail/attach/{mgid}, то атакующий может сослаться на файл во вложении, например, отправив сообщение с полем "Return-Path: aaa@....com -OQueueDirectory=/tmp -C /var/local/squirrelmail/attach/lF51mGPJwdqzV3LEDlCdSVNpohzgF7sD".
|