В начале 2020 года вышло предупреждение от команды Prestashop.https://build.prestashop.com/news/critical-security-vulnerability-in-prestashop-modules/После обнаружения проблемы был выпущен патч. Как только патч для выпущен, мы думаем, что проблема решена, и баг теперь не работает. В большинстве случаев это не так. Для решения этой проблемы от всех разработчиков требуется использование последней версии патча. Поскольку обновление не является особенно тривиальным действием, разработчикам необходимо планировать заранее и вставлять изменения через процесс разработки, планируя подходящее время для применения. В рамках исследования, проведенного в Imperva, наблюдается около 9 млн попыток атак с использованием уязвимости PHPUnit. Оно является одним из наиболее эксплуатируемых в 2019 г.
Попытки атак по годам:
- 2019 - около 7 млн за последние шесть месяцев.
- 2020 год - около 2 млн до января
Как мы видим, около 70% атак было совершено в период между последними двумя месяцами 2019 года по январь включительно.
Начало проблемы.27 июня 2017 года, была выявлена уязвимость для удаленного выполнения кода (CVE-2017-9841) в PHPUnit, широко используемом фреймворке тестирования для PHP, который используется для выполнения юнит-тестов в цикле разработки приложений. К сожалению, многие процессы разработки не являются оптимальными, и этот фреймворк остается включенным в продакшене, что делает жизнь злоумышленников слаще.
С тех пор, как этот фреймворк начали использовать в популярных CMS (Content Management Systems), такими как WordPress, Drupal и Prestashop, а также многими модулями, созданными сторонними разработчиками, масштабы данной бреши в безопасности могут быть достаточно широкими.
Вот, например, несколько известных модулей, которые внедряются в продакшен - в том числе и в фреймворк PHPUnit:
-
Prestashop: (autoupgrade ,pscartabandonmentpro ,ps_facetedsearch, Gamification, ps_checkout);
-
WordPress: ( плагин Jekyll Exporter, Dzs-videogallery, cloudflare, MediaWiki, Moodle);
-
Drupal: (Mailchimp/Mailchimp commerce);
Следует учитывать, что даже если вы запатчите "PHPUnit" как таковой, вы все равно будете уязвимы при использовании фреймворка, который основан на старых версиях.
Выводы:Старые уязвимости не исчезнут с момента публикации патча. Что бы уязвимость исчезла, от разработчика, использующего уязвимый фреймворк, требуется выполнять обновление каждый раз при выходе изменений, в реальности он может игнорировать рекомендации по исправлению ошибкок из-за больших объемов работ, сложности изменений. Так как новые патчи регулярно публикуются, многие фреймворки и сторонние модули не успевают использовать последний обновленный код и оставляют проблемы безопасности в своих разработках. Хакеры это знают, и именно поэтому они до сих пор успешно проводят атки со старыми уязвимостями.
В дополнение к используемой старой уязвимости PHPUnit, есть предположения, что новая уязвимость в PHPUnit еще не опубликована. Если это так, то, возможно, затронуты все версии PHPUnit, содержащие eval-stdin.php.
Имейте в виду, что вы можете неосознанно использовать уязвимый модуль, разработанный третьими лицами с помощью фреймворка PHPUnit, не удаляя его перед публикацией в продакшен.
Ваши сайты уязвимы?- Проверьте, существует ли PHPUnit на вашем веб-сервере.
- Если да, и ваша версия PHPUnit до 7.5.19 и 8.5.1, то возможно, что вы уязвимы при определенных конфигурациях сервера.
- Рекомендуется удалить его (хотя в некоторых случаях это может привести к отказу в работе сайта), можно также заблокировать удаленный доступ к каталогу vendor, который является корневым путем фреймворка PHPUtil.
Ваши сайты заражены?- Проверьте новые файлы по пути PHPUnit
- Проверьте основные файлы, которые были изменены в последнее время.