Новый год не за горами, а список уязвимостей пополнился ещё одной неприятной новостью: в популярной библиотеке PHPMailer была выявлена (спасибо Dawid Golunski) критическая уязвимость RCE, оно же Remote Code Execution или удаленное выполнение произвольного кода говоря русским языком. Дыра ставит многие сайты под удар на самых разных CMS или популярных фреймворках (yii). С учетом празднования рождественских или новогодних праздников, на оперативность выпуска обновлений надеяться не стоит. Уязвимы версии PHPMailer до 5.2.17 включительно.

Уязвимость CVE-2016-10033 в PHPMailer
Уязвимость CVE-2016-10033 в PHPMailer

С другой стороны, большинство используют собственные классы отправки почты, поэтому к примеру пользователям Joomla или Wordpress не стоит переживать по этому поводу. Риск больше таится в сторонних расширениях и самописных контактных форм с использованием вспомогательного файла PHPMailer. В любом случае настоятельно рекомендую проверить сайт на наличие эксплоита и устранить возможность атак пока ещё злоумышленники не опомнились.

Что же стало причиной возможности эксплуатации данной уязвимости? Как обычно виновником оказалась плохая фильтрация. На этот раз недостаточно защищенным оказалось поле отправителя. Поэтому если при отправке не заполняется from: (отправитель), то сайт окажется неподверженным атаке. Однако это не повод не следить за обновлениями.

Более детально исправление выглядит так:

if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {

  $params = sprintf('-f%s', escapeshellarg($this->Sender));

}

if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {

  $old_from = ini_get('sendmail_from');

  ini_set('sendmail_from', $this->Sender);

 

}

Как видим добавлена проверка на адрес и более жёсткая фильтрация.

Обновляемся и всех с наступающими праздниками.

Добавить комментарий