Tech Threat Lab
TTL

Drupal исправил критическую RCE-уязвимость в Field UI

Drupal исправил критическую RCE-уязвимость в Field UI

Drupal выпустила обновления для критической уязвимости CVE-2026-108097 в модуле Field UI. При сочетании с конкретным contributed-модулем или пользовательским кодом, создающим достижимый путь для влияния на #region_callback или массив рендеринга, ошибка может привести к выполнению кода на сервере; один из известных сценариев не требует аутентификации.

Исправления вышли 14 октября 2026 года в Drupal 11.4.10, 11.3.19 и 10.6.19. Проект оценил проблему в 19 баллов из 25 и отнёс её к критическим.

Условия эксплуатации

CVE-2026-108097 затрагивает Field UI — базовый модуль с административными страницами для управления полями и их отображением. Одного ядра Drupal и наличия Field UI для эксплуатации недостаточно: уязвимый путь должен создавать конкретный сторонний модуль либо пользовательский код, позволяющий атакующему повлиять на #region_callback или соответствующий массив рендеринга. Само наличие любого contributed-модуля или собственного кода такой путь не подтверждает. Какие именно contributed-модули могут создать уязвимый путь, в уведомлении не раскрывается.

Field UI обычно установлен на сайтах со стандартным профилем Drupal, если администратор не удалял его вручную. Поэтому наличие модуля стоит проверить отдельно, но само по себе оно ещё не подтверждает возможность эксплуатации.

На момент публикации уведомления общедоступного эксплойта не было. По состоянию на 15 октября такой код также не появился, а данные об атаках с CVE-2026-108097 отсутствуют и в уведомлении Drupal, и в публичных отчётах. Это не исключает появления эксплуатации позднее: 12 октября команда безопасности Drupal заранее предупредила администраторов о предстоящем выпуске и рекомендовала выделить время на обновление, отметив, что эксплойты могут появиться в течение нескольких часов или дней.

В мае Drupal сообщал о попытках эксплуатации другой уязвимости ядра через два дня после публикации рекомендации. Та проблема была связана с SQL-инъекцией, затрагивала только сайты на PostgreSQL и позднее была добавлена CISA в каталог известных эксплуатируемых уязвимостей.

Затронутые версии и временная мера

Администраторам поддерживаемых веток следует установить следующие версии:

  • Drupal 11.4.x — 11.4.10;
  • Drupal 11.3.x — 11.3.19;
  • Drupal 10.6.x — 10.6.19;
  • Drupal 12.0.0 beta — 12.0.0-beta2. Эта ветка не предназначена для производственного использования.

Для Drupal 11.2.x и более ранних веток, Drupal 10.5.x и ниже, а также Drupal 8 и 9 исправлений нет: они сняты с поддержки. Поддержка безопасности веток 11.3.x и 10.6.x завершится в декабре 2026 года.

За неделю, начавшуюся 4 октября, 151 442 из 531 499 сайтов, передавших drupal[.]org сведения о версии ядра, работали на уязвимых ветках, для которых исправления не выпущены. Это 28,5% от числа отчитавшихся сайтов.

При планировании таких работ можно отдельно изучить в разделе услуг ИТБ по информационной безопасности доступные направления и сопоставить их с задачами своей организации.

Если обновление невозможно провести сразу, Drupal рекомендует временно деинсталлировать/удалить Field UI (field_ui) штатной процедурой Drupal, а не удалять файлы модуля вручную. Следует проверить, что field_ui больше не активен, и учесть зависимости. По оценке проекта, это защитит сайт до обновления, но административные страницы управления полями и их отображением будут недоступны, пока модуль деинсталлирован. Эта мера временная и не заменяет обновление.

Сервис WAF Drupal Steward уже блокирует часть известных векторов, связанных с этой уязвимостью. Его применяют Acquia, Pantheon, Ironstar и Skpr для своих клиентов. При этом сервис не охватывает все возможные способы эксплуатации, поэтому он не отменяет необходимость обновления.

Почему возможна RCE

Field UI формирует административные таблицы из массивов рендеринга PHP, которые Drupal преобразует в HTML. До исправления этап предварительного рендеринга элемента таблицы через call_user_func_array вызывал любой PHP-вызываемый объект, указанный в строке таблицы в свойстве #region_callback. Проверки типа такого объекта не было.

С Drupal 8.8, выпущенного в 2019 году, механизм рендеринга не запускает недоверенные обратные вызовы. Ограничение добавили после ранних предупреждений о том, что система рендеринга может слишком легко вызывать произвольные обработчики. Однако рендерер доверял собственным методам элемента таблицы и выполнял предварительный этап, из-за чего проверка не доходила до функции, которую запускал этот этап.

В Drupal 11.4.10 вызов обработчика удалили. Вместо него код получает область каждой строки из её собственного значения области; если оно не соответствует известной области, используется скрытая область таблицы либо её первая область. Аналогичный вызов присутствовал в коде как минимум с Drupal 8.9.0, вышедшего в 2020 году.

В ядре #region_callback задавался только собственными формами отображения Field UI. Но пользовательский код, который устанавливает это свойство в строке field_ui_table, после обновления выполняться не будет. Такой код необходимо проверить, а страницы управления полями и отображением — протестировать после установки исправления.

Entity List и другие исправления

Одновременно опубликовано критическое предупреждение для модуля Entity List. CVE-2026-108099 также позволяет удалённо выполнить код при тех же условиях, включая известный путь без аутентификации. В примечаниях к Entity List 3.0.10 указано, что исправление соответствует изменению в Field UI. Обновление ядра Drupal не обновит этот модуль: его нужно обновлять отдельно. За неделю, начавшуюся 4 октября, об использовании Entity List сообщили 90 сайтов.

В тех же релизах ядра устранены две уязвимости средней тяжести, связанные с межсайтовым скриптингом: CVE-2026-108515 в модуле Link и CVE-2026-108514 в Navigation. Для эксплуатации обеих необходим как минимум авторизованный пользователь.

Поддержка Drupal 7 на drupal[.]org завершилась в январе 2025 года. При этом в рамках программы долгосрочной поддержки Drupal 7, которую Pantheon реализует совместно с Tag1 Consulting, выпущен Drupal 7.107 с обратной интеграцией этого исправления.

Российским организациям, использующим Drupal, следует в первую очередь проверить версию ядра, наличие Field UI и Entity List, а также собственный код с #region_callback. Наличие Field UI, стороннего модуля или такого кода следует отделять от подтверждения достижимого пути эксплуатации. Поддерживаемые ветки нужно обновить до исправленных релизов, Entity List — отдельно до 3.0.10. Если обновление отложено, временной мерой остаётся штатная деинсталляция/удаление field_ui с проверкой, что модуль больше не активен, учётом зависимостей и недоступности соответствующих административных страниц; для неподдерживаемых веток потребуется план миграции на актуальную версию.