Проактивная защита (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()
теперь заблокировано и будет работать только при вызове из штатного контроллера модуля.
В целом, обновление является результатом работы над улучшением модуля безопасности.