Проактивная защита (security) 24.100.0 от 02.09.2025

  • Исправлены интерфейсные ошибки в мониторе активной защиты.
02.09.2025 23:00
Поделиться:

Вышло обновление модуля безопасности до версии 24.100.0. В этом разборе — детальный анализ изменений, которые затрагивают как новые функции, так и архитектуру сканера.


1. Архитектурная пересборка сканера CBitrixXscan

Основное изменение этого обновления — рефакторинг класса CBitrixXscan. Логика, которая раньше была разбросана, теперь структурирована.

Новый метод start() — единая точка входа

Ранее логика запуска сканирования (очистка, проверка событий, агентов) была частично вынесена в AJAX-контроллер. Теперь всё это инкапсулировано в новом публичном методе CBitrixXscan::start(), который служит единой точкой входа для полного сканирования.

Это улучшает структуру кода, соответствует принципам SOLID и упрощает его поддержку и расширение в будущем. Контроллер теперь лишь вызывает этот метод, не вникая в детали реализации.

Расширение покрытия: новые и улучшенные проверки

В рамках рефакторинга сканер получил возможность искать угрозы в новых местах, а существующие проверки были вынесены в отдельные методы.

Новые проверки:

  1. CheckTemplates() — Условия шаблонов сайтов: Сканер теперь анализирует PHP-код из поля CONDITION таблицы b_site_template. Это нововведение позволяет обнаруживать вредоносный код в условиях подключения шаблона, что является одним из векторов атак.
  2. CheckTriggers() — Триггеры в базе данных: Сканер теперь проверяет наличие триггеров в БД с помощью запроса SHOW triggers;. Он не анализирует их код, а сигнализирует о самом факте их существования. Это превентивная мера, так как триггеры не используются в стандартной конфигурации Bitrix и могут быть признаком скрытой вредоносной активности.

Рефакторинг существующих проверок:

Методы CheckAgents() и CheckEvents() не являются абсолютно новыми, но теперь это выделенные функции. Раньше эта логика была частью более общих методов. Такое разделение улучшает читаемость и поддерживаемость кода.


2. Усиление самозащиты сканера

Одно из неочевидных изменений — усиление защиты самого сканера от манипуляций.

Защита от несанкционированной очистки результатов

В ORM-классе Bitrix\Security\XScanResultTable были переопределены методы delete() и deleteList(). Теперь они содержат проверку стека вызовов, чтобы убедиться, что удаление инициировано исключительно из штатного интерфейса сканера.

Как это работает: Перед удалением записи из b_sec_xscan_results метод получает текущий stack trace и сверяет его с путем, захардкоженным в приватной константе trace. Если стек вызовов не совпадает с ожидаемым, операция удаления молча игнорируется.

Влияние и инсайты:

  • Плюс: Этот механизм защищает от попыток вредоносного кода "замести следы", удалив себя из результатов сканирования через какой-либо обходной путь.
  • Минус: Решение является хрупким. Любой рефакторинг в ядре, меняющий цепочку вызовов AJAX-хендлеров, может нарушить работу функции удаления. Это также означает, что кастомные скрипты для очистки логов сканера перестанут работать.

3. Прочие заметные изменения

  • Масштабная локализация: Добавлена полная поддержка казахского языка (kz) для всего интерфейса модуля security. Это самая объемная часть коммита по количеству затронутых файлов.
  • Обновление эвристики: В регулярное выражение $black_reg, отвечающее за поиск подозрительных строк, были внесены изменения:
    • Добавлена проверка на password_verify (вероятно, для снижения ложных срабатываний) и тестовые домены bitrix.dev.
    • Убрана проверка на обфусцированное слово exploit ([e3]xp[l1][o0][i1][7td]), возможно, из-за большого количества ложных срабатываний.
  • Исправление UI: ID фильтра в гриде результатов сканирования изменен с report_filter на xscan_report_filter, чтобы избежать конфликтов с другими фильтрами в административной панели.
  • Очистка кода: Из модуля были удалены некоторые устаревшие JS-ассеты и изображения.

4. Выводы и рекомендации

Обновление расширяет функциональность сканера уязвимостей и вносит изменения в его архитектуру.

  • Для администраторов: Регулярно запускайте сканер. Теперь он покрывает больше потенциальных угроз. Если вы увидите предупреждение о наличии триггеров в БД — отнеситесь к этому серьезно и проверьте их вручную, так как это нетипичное поведение для сайта на Bitrix.
  • Для разработчиков: Архитектура CBitrixXscan стала более модульной. При работе с результатами сканирования учтите, что прямое удаление записей через ORM-метод delete() теперь заблокировано и будет работать только при вызове из штатного контроллера модуля.

В целом, обновление является результатом работы над улучшением модуля безопасности.