CVE-2019-6340

Drupal Core

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2022-03-25

Официальное описание

In Drupal Core, some field types do not properly sanitize data from non-form sources. This can lead to arbitrary PHP code execution in some cases.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость (RCE) в ядре Drupal 8, связанная с недостаточной санитизацией данных в некоторых типах полей (например, "Текст (форматированный)", "Ссылка", "Ссылка на сущность"), которые могут получать данные не из форм (например, через REST API). Это позволяет атакующему внедрить и выполнить произвольный PHP-код на сервере.

Сценарий атаки: Злоумышленник, имеющий доступ к публикации контента через REST API (или другой не-формный источник) с соответствующими правами, может отправить специально сформированные данные в уязвимое поле, что приведет к выполнению вредоносного кода на сервере.

Как исправить

Необходимо обновить ядро Drupal до защищенной версии.

  1. Определите текущую версию Drupal: bash cd /path/to/drupal drush status | grep "Drupal version" Или проверьте файл core/lib/Drupal.php.

  2. Обновите Drupal Core:

    • Если у вас Drupal 8.6.x: Обновитесь до версии 8.6.10 или выше.
    • Если у вас Drupal 8.5.x или более ранние 8.x: Обновитесь до версии 8.5.11 или выше.

    Способ обновления (пример для командной строки): ```bash

    Перейдите в директорию Drupal

    cd /var/www/html/drupal_site

    Сделайте полную резервную копию сайта и базы данных перед обновлением!

    Используйте Composer для обновления (рекомендуемый способ)

    composer update drupal/core --with-dependencies

    Или обновите через drush

    drush up drupal

    Очистите кеш

    drush cr ```

Временное решение

Если немедленное обновление невозможно, выполните следующие действия:

  1. Отключите REST API для аутентифицированных пользователей, если он не используется критически. Это можно сделать через интерфейс администратора (/admin/config/services/rest) или путем изменения конфигурации в yml-файлах.
  2. Настройте WAF (Web Application Firewall):
    • Создайте правило для блокировки запросов, содержащих в теле или параметрах подозрительные PHP-конструкции (например, <?php, system(, eval(), направленные к REST-эндпоинтам Drupal (пути, содержащие /jsonapi/, /node/, /entity/ и т.д.).
  3. Ужесточите права доступа: Проверьте и убедитесь, что права на создание/редактирование контента через REST (разрешения restful post, restful patch и т.д.) назначены только абсолютно необходимым, доверенным ролям пользователей. Временно отзовите эти права у всех, кому они не нужны.