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

2 месяца ago admin 0

В почтовом 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».


Source: pirates.in.ua