ADG Оставить заявку
Блог Управление и процессы 4 мин чтения

Постмортем CrowdStrike: как мы пересмотрели порядок обновления агентов безопасности

После глобального сбоя CrowdStrike разработали внутренний регламент: staging-сегмент, 48-часовое окно наблюдения и контрольный список перед выкаткой в прод.

Контекст момента

Вендоры EDR признали недостаточность staged rollout и canary-тестирования обновлений агентов после глобального сбоя 19 июля 2024

Прошло несколько дней после разбора глобального сбоя CrowdStrike, и мы уже успели провести внутренний постмортем по всем клиентам, где работаем в режиме управляемой инфраструктуры. Выводы предсказуемые, но от этого не менее болезненные: процедура обновления агентов безопасности у большинства была либо доверием вендору, либо ручным наблюдением без формального окна выдержки. Ни то, ни другое не спасает, когда вендор сам же и привозит поломку.

CrowdStrike в своих первых публичных заявлениях признал, что механизм staged rollout для content-обновлений агента работал не так, как должен. Content-обновление (не полноценный апгрейд агента, а обновление конфигурационного файла channel) прилетело во все сенсоры сразу, без фазового раскатывания. Canary-тестирование на этом уровне фактически отсутствовало. Именно поэтому событие оказалось таким масштабным - не было ни одного барьера между ошибкой в файле и миллионами BSOD.

Что именно мы пересмотрели

До сбоя у нас существовало правило «смотреть на крупные версионные апгрейды агента через неделю после релиза». Это разумно, но это только про major-обновления. Content-обновления, которые CrowdStrike (и не только он) рассылает автоматически и непрерывно, были вне этого правила - их никто не рассматривал как потенциально опасные. Теперь рассматривают.

Новый регламент закрывает три дыры.

Первая - отсутствие staging-сегмента для агентов безопасности. EDR, антивирус, агенты мониторинга конечных точек - всё это раньше обновлялось централизованно и синхронно. Теперь в каждой инфраструктуре выделяется отдельная группа хостов под ранние обновления. Это не обязательно физически изолированный сегмент - достаточно группы политик в консоли управления, которая получает обновления раньше основного флота.

Вторая - отсутствие окна наблюдения. Даже если staging-группа и существовала, никто не ждал формально. Теперь между обновлением staging-группы и выкаткой в прод - минимум 48 часов. В этот промежуток смотрим на метрики: нагрузка CPU, количество падений процессов агента, алерты в SIEM. Если за 48 часов ничего не сломалось - идём дальше.

Третья - нет чеклиста перед выкаткой. Обновление агента в прод раньше было «нажать кнопку». Теперь это пункт в чеклисте, который нельзя пройти без явного подтверждения.

Контрольный список перед выкаткой в прод

Вот что проверяем перед тем, как пускать обновление агента на основной флот.

  • Срок выдержки в staging. Прошло не менее 48 часов с момента применения в staging-группе.
  • Метрики staging-хостов. Нет аномального роста CPU/памяти, нет рестартов процессов агента, нет новых алертов в SIEM, связанных с агентом.
  • Changelog вендора. Прочитан. Если есть изменения в поведении ядерного драйвера или kernel-модуля - срок выдержки удваивается.
  • Окно выкатки. Запланировано в рабочее время, не в пятницу вечером. Инженер на связи в течение двух часов после начала.
  • Rollback-план. Определена конкретная версия, к которой откатываемся, проверена её доступность в репозитории вендора.
  • Покрытие хостов. Обновление идёт волнами: сначала не более 20% флота, потом через час - остальное, если всё чисто.

Список звучит как капитанщина. Но именно его отсутствие привело к тому, что 19 июля кто-то нажал кнопку «раскатить» без каких-либо барьеров.

Что сложно

Есть одна честная проблема с этим подходом: content-обновления у большинства EDR-вендоров нельзя отложить так же просто, как версионный апгрейд агента. CrowdStrike, например, исторически не давал возможности откладывать channel-файлы - это была особенность архитектуры, которая и стала уязвимостью. После сбоя они анонсировали изменения в этой части, но пока это анонс, а не работающая функциональность.

Поэтому на практике для content-обновлений staging-группа помогает только зафиксировать факт проблемы раньше, чем она разойдётся по всему флоту. Остановить раскатку автоматически она не позволяет - только дать команде время среагировать и отозвать обновление вручную.

Это не идеально. Но это лучше, чем «узнать о проблеме, когда упало всё».

Что с этим дальше

Регламент внедрён, staging-группы размечены у клиентов. Теперь нужно убедиться, что он реально работает, а не просто лежит в Confluence. Первый тест будет при следующем мажорном обновлении агента - посмотрим, насколько процедура выдерживает реальное давление, когда вендор присылает уведомление «обновите как можно скорее по соображениям безопасности».

Хорошего решения между «быстро закрыть уязвимость» и «не уронить прод» нет. Есть только управляемый компромисс с явными точками принятия решения - вместо безмолвного автообновления, которое однажды делает вид, что знает лучше.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.