Дайджесты новостей
Драматичная сцена ночной отладки в терминале с симуляцией системных вызовов в изолированном контейнере для проверки правил Falco.

event-generator: эмуляция атак для проверки правил безопасности Falco

Представь картину: команда DevSecOps потратила недели на внедрение системы мониторинга среды выполнения Falco в продакшен-кластер Kubernetes. Написаны десятки кастомных правил аудита системных вызовов, настроена пересылка алертов через Falcosidekick в корпоративный Slack и SIEM. В дашбордах тишина и покой, ни одного критического алерта за месяц.

Руководство довольно, но у опытного инженера внутри нарастает холодный скепсис: а система вообще работает? Что, если в сложном логическом выражении правила закралась банальная опечатка, и реальный злоумышленник прямо сейчас читает конфиги сервера, пока датчики молчат?

Проект с открытым исходным кодом Falco (выпускник фонда CNCF) решает эту проблему специализированным инструментом event-generator. Ранее мы обсуждали, как меняется общая безопасность репозиториев и эксплойты в современных средах. Сегодня разберем, как на практике построить синтетическое регрессионное тестирование правил Falco.

Зачем нужен генератор синтетических инцидентов

Главная задача event-generator — генерировать в контролируемой среде ровно те системные события и паттерны поведения, на которые должны реагировать правила Falco:

  • Проверка работоспособности eBPF-проб и модуля ядра Linux;
  • Верификация срабатывания цепочки доставки оповещений от ядра до SIEM;
  • Регрессионное тестирование: гарантия того, что обновление правил Falco или версий компонентов не сломало существующие детекты.

Но у такой эмуляции есть обратная сторона: чтобы проверить алерт «попытка перезаписи бинарника в /bin», утилита действительно обязана попытаться модифицировать файлы в системном каталоге.

Именно поэтому разработчики категорически настаивают: запускать event-generator необходимо исключительно внутри изолированного контейнера Docker. Запуск бинарника напрямую на хостовой операционной системе без контейнеризации чреват повреждением системных конфигов и нарушением стабильности сервера.

Арсенал сценариев: от системных вызовов до Kubernetes API

Инструмент разделяет тестовые сценарии на три большие группы:

  1. syscall (системные вызовы ядра Linux):
    • Чтение чувствительных файлов (/etc/shadow, /etc/sudoers);
    • Попытка добавления публичного ключа в ~/.ssh/authorized_keys;
    • Побег из контейнера через системный вызов смены пространств имен unshare;
    • Создание псевдоустройств в каталоге /dev или скрытых папок с точкой;
    • Запуск бинарных файлов из оперативной памяти (memfd_create или /dev/shm);
    • Запуск сетевых сканеров портов и утилит сетевой разведки.
  2. k8saudit (аудит событий Kubernetes API):
    • Создание привилегированных подов со снятыми ограничениями безопасности;
    • Назначение ClusterRole с опасными полными правами подстановки (*);
    • Монтирование чувствительных путей хоста (/var/run/docker.sock, корневой ФС);
    • Запуск подов в сетевом пространстве имен узла (hostNetwork: true).
  3. helper: вспомогательные сетевые службы для генерации клиент-серверного трафика.
# Непрерывный цикл эмуляции подозрительных системных вызовов в Docker
docker run -it --rm \
  --name falco-event-tester \
  falcosecurity/event-generator run syscall --loop

# Точечная проверка правила детекта побега из контейнера
docker run -it --rm \
  falcosecurity/event-generator run syscall.ChangeNamespacePrivilegesViaUnshare

Декларативные сьюты: команда suite в версии v0.13

В свежем релизе утилиты v0.13 (согласованном с Falco версии 0.44.0+) появилась долгожданная команда suite.

Раньше все тестовые сценарии были жестко зашиты в исходный код утилиты на Go. Теперь инженеры могут описывать собственные тест-кейсы в декларативных YAML-файлах. Это позволяет подключить event-generator прямо в конвейер CI/CD: при любом изменении репозитория с правилами Falco автоматически поднимается тестовый кластер Kind, прогоняется набор сьютов и подтверждается наличие алертов.

# Эмуляция создания привилегированного пода в Kubernetes для проверки аудита API
event-generator run k8saudit.CreatePrivilegedPod
Строгая изоляция тестового стенда

Никогда не запускайте event-generator с флагами широкого диапазона действий на рабочих production-узлах вне изолированного тестового пространства имен или отдельного сэндбокс-кластера, так как генерируемый шум может перегрузить аналитиков дежурной смены SOC.

Практический итог

Безопасность инфраструктуры строится на постоянном сомнении и проверке гипотез. Использование event-generator позволяет превратить аудит Falco из «черного ящика с надеждой» в измеримый, автоматически тестируемый инженерный контур, где каждое правило доказало свою эффективность на реальных синтетических атаках.