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 до защищенной версии.
-
Определите текущую версию Drupal:
bash cd /path/to/drupal drush status | grep "Drupal version"Или проверьте файлcore/lib/Drupal.php. -
Обновите 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 ```
Временное решение
Если немедленное обновление невозможно, выполните следующие действия:
- Отключите REST API для аутентифицированных пользователей, если он не используется критически. Это можно сделать через интерфейс администратора (
/admin/config/services/rest) или путем изменения конфигурации вyml-файлах. - Настройте WAF (Web Application Firewall):
- Создайте правило для блокировки запросов, содержащих в теле или параметрах подозрительные PHP-конструкции (например,
<?php,system(,eval(), направленные к REST-эндпоинтам Drupal (пути, содержащие/jsonapi/,/node/,/entity/и т.д.).
- Создайте правило для блокировки запросов, содержащих в теле или параметрах подозрительные PHP-конструкции (например,
- Ужесточите права доступа: Проверьте и убедитесь, что права на создание/редактирование контента через REST (разрешения
restful post,restful patchи т.д.) назначены только абсолютно необходимым, доверенным ролям пользователей. Временно отзовите эти права у всех, кому они не нужны.