Проактивная защита (security) 24.100.0 от 02.09.2025
- Исправлены интерфейсные ошибки в мониторе активной защиты.
 
Вышло обновление модуля безопасности до версии 24.100.0. В этом разборе — детальный анализ изменений, которые затрагивают как новые функции, так и архитектуру сканера.
1. Архитектурная пересборка сканера CBitrixXscan
Основное изменение этого обновления — рефакторинг класса CBitrixXscan. Логика, которая раньше была разбросана, теперь структурирована.
Новый метод start() — единая точка входа
Ранее логика запуска сканирования (очистка, проверка событий, агентов) была частично вынесена в AJAX-контроллер. Теперь всё это инкапсулировано в новом публичном методе CBitrixXscan::start(), который служит единой точкой входа для полного сканирования.
Это улучшает структуру кода, соответствует принципам SOLID и упрощает его поддержку и расширение в будущем. Контроллер теперь лишь вызывает этот метод, не вникая в детали реализации.
Расширение покрытия: новые и улучшенные проверки
В рамках рефакторинга сканер получил возможность искать угрозы в новых местах, а существующие проверки были вынесены в отдельные методы.
Новые проверки:
CheckTemplates()— Условия шаблонов сайтов: Сканер теперь анализирует PHP-код из поляCONDITIONтаблицыb_site_template. Это нововведение позволяет обнаруживать вредоносный код в условиях подключения шаблона, что является одним из векторов атак.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()теперь заблокировано и будет работать только при вызове из штатного контроллера модуля. 
В целом, обновление является результатом работы над улучшением модуля безопасности.