В двух библиотеках, используемых для отправки email-корреспонденции средствами PHP, устранены критические уязвимости удаленного исполнения кода. Патч для PHPMailer вышел неделю назад, но оказался неполным, посему в среду было выпущено еще одно обновление, 5.2.21. Одновременно аналогичный баг был исправлен в SwiftMailer.

Обе бреши обнаружил исследователь Давид Голунский (Dawid Golunski) из Legal Hackers.

Уязвимость CVE-2016-10033 в PHPMailer можно эксплуатировать, используя такие компоненты сайта, как форма для контакта/обратной связи, регистрационная форма, механизмы для сброса пароля email и т.п. Эта брешь открывает возможность для удаленного исполнения кода и получения доступа к серверу с веб-приложением, использующим уязвимую версию PHP-библиотеки. В целях скорейшего информирования интернет-сообщества в начале текущей недели был запущен отдельный веб-сайт PwnScriptum.

Как оказалось, патч для CVE-2016-10033, выпущенный в составе PHPMailer 5.2.18, можно обойти. В связи с этим появился новый идентификатор — CVE-2016-10045 и «вернул все на круги своя», как выразился Голунский. «На настоящий момент официального патча нет, — заявил исследователь журналистам Threatpost в среду. — Все версии PHPMailer вновь уязвимы. Мы вернулись к тому, с чего начали». Ближе к вечеру в тот же день вышло обновление PHPMailer 5.2.20 (вначале из-за спешки в нумерации была допущена ошибка), которое окончательно решило проблему.

Брешь в SwiftMailer (CVE-2016-10074) можно было эксплуатировать таким же образом, как и CVE-2016-10033 в PHPMailer, — через компоненты веб-сайта, использующие уязвимый класс (в данном случае SwiftMailer). Уязвимости были подвержены все версии этой библиотеки, в том числе самая актуальная на тот момент 5.4.5-DEV.

Не получив отклика от вендора, Голунский решился на публикацию. На сей раз разработчики SwiftMailer отреагировали очень быстро: в тот же день вышло обновление 5.4.5.

Согласно журналу изменений проекта SwiftMailer на GitHub, проблема была решена депрекацией почтового транспорта, используемого библиотекой, — Swift_Transport_MailTransport, так как он допускает внедрение произвольных аргументов шелл-процедур.

Для Голунского конец года оказался весьма плодотворным. Помимо уязвимостей в PHPMailer и SwiftMailer он обнаружил две критические бреши в Nagios Core, системе IT-мониторинга с открытым исходным кодом. Эти уязвимости позволяют повысить привилегии до root и удаленно исполнить код.

Категории: Уязвимости