Новая критическая уязвимость в Drupal, уже используемая для совершения атак
Как сообщает opennet.ru спустя менее месяца с момента исправления прошлой критической проблемы в системе управления контентом Drupal выявлена новая уязвимость (CVE-2018-7602), которую можно использовать для удаленного выполнения кода на сервере через отправку специально оформленного запроса. Проблема затрагивает ветки Drupal 6.x, 7.x и 8.x.
Опасность уязвимости усугубляет наличие в открытом доступе рабочего прототипа эксплоита и выявление фактов использования уязвимости для проведения атак по захвату управления сайтами на базе Drupal или внедрения на них вредоносных блоков, бэкдоров или кода для майнинга криптовалюты. Всем администраторам сайтов на базе Drupal рекомендуется незамедлительно установить обновление и провести анализ логов и файлов на предмет возможной компрометации. Для исправления уязвимости оперативно сформированы обновления Drupal 7.59, 8.4.8 и 8.5.3, а также подготовлен патч (+патчи для ветки 6.x). Новые версии пакетов для дистрибутивов сформированы для Debian и Fedora (исправление пока отсутствует в Ubuntu, FreeBSD, EPEL).
Уязвимость выявлена в процессе анализа возможного альтернативного проявления проблемы CVE-2018-7600, которая была обнаружена в конце марта. Метод эксплуатации CVE-2018-7602 в своей сути аналогичен CVE-2018-7600 и также базируется на некорректной обработке параметров, начинающийся с символа "", который рассматривается как спецключ для вызова произвольного PHP-обработчика через Render Arrays и Drupal Form API.
В отличие от прошлых эксплоитов, новый метод основан на обходе функций фильтрации спецсимволов путем кодирования символа "" в форме последовательности "%2523", где "%25" код символа "%", т. е. строка будет декодирована в "%23", а затем "%23" будет обработан как "" ("%23" код ""). Например, для запуска утилиты whoami можно отправить запрос:
POST /?q=node/99/delete&destination=node?q[%2523][]=passthru%26q[%2523type]=markup%26q[%2523markup]=whoami... form_id=node_delete_confirm&_triggering_element_name=form_id&form_token=[CSRF-TOKEN] Затем нужно получить значение form_build_id и инициировать выполнение операции:
POST /drupal/?q=file/ajax/actions/cancel/%23options/path/[FORM_BUILD_ID] HTTP/1.1... form_build_id=[FORM_BUILD_ID]
Вначале разработчики Drupal скептически отнеслись к возможности проведения реальных атак при помощи уязвимости CVE-2018-7602, но после сообщений о проведении таких атак пересмотрели свою позицию и подняли уровень опасности проблемы до "Highly critical" (20&8725;25). Доступный прототип эксплоита требует аутентифицированного доступа с правами удаления узлов, но судя по успешности начатых злоумышленниками атак, метод может быть адаптирован и для других форм.
Тем временем, в сети зафиксирован вариант сетевого червя Muhstik, адаптированный для получения контроля за системами через мартовскую уязвимость в Drupal (кроме Drupal, червь также эксплуатирует неисправленные уязвимости в Webdav, WebLogic, Webuzo и WordPress, а также пытается подбирать пароли по SSH). Несмотря на многочисленные предупреждения о необходимости установки обновления в сети остается большое число не обновленных хостов, чем и пользуется червь. Muhstik используется злоумышленниками для построения ботнета из серверов, который может выполнять такие задачи, как проведение DDoS-атак, сканирование сетей для обнаружения новых уязвимых хостов и майнинг криптовалют XMR и BTC.