
deadair v0.5.1
Находит правила обнаружения в вашем SIEM, которые работают вслепую
Открытый инструмент контроля здоровья SIEM-детектирований.
Находите включённые детектирования, которые «слепы», потому что их телеметрия отсутствует, устарела, опаздывает или несовместима со схемой.
Работает локально · Только чтение · Без агента · Без загрузки телеметрии
Прочитайте техническую статью · Упоминается в Detection Engineering Weekly
Реальное сканирование одноразовой лаборатории Elastic с намеренно отсутствующей, устаревшей, запаздывающей и неиспользуемой телеметрией. Воспроизведите его с помощью make record-scan-lab.
Зачем нужен deadair
Правило может быть включено, запланировано и работать без ошибок, в то время как данные, которые ему нужны, отсутствуют. deadair читает актуальный реестр правил, разрешает входные источники каждого правила, используя нативную семантику бэкенда, и проверяет конкретные источники за ними.
Он выявляет:
- правила, чьи селекторы индексов, алиасов или потоков данных не разрешаются ни во что;
- правила, у которых все соответствующие источники устарели или пусты;
- правила, работающие с отсутствующими полями или со слепым окном задержки приёма;
- здоровую телеметрию, которую не читает ни одно включённое детектирование.
В настоящее время deadair работает с Elastic Security и OpenSearch Security Analytics.
Быстрый старт
Скачайте бинарный файл для macOS, Linux или Windows из GitHub Releases или установите с помощью Go:
go install github.com/alephnull-sh/deadair/cmd/deadair@latest
Подключите учётные данные SIEM с доступом только на чтение:
deadair setup elastic # print the least-privilege setup
deadair check # verify the credential can scan
deadair scan # assess live rules and telemetry
Коды выхода стабильны: 0 — всё здорово, 1 — есть находки, 2 — сканирование завершилось с ошибкой.
Как это работает
| Этап | Что делает deadair |
|---|---|
| Инвентаризация | читает включённые детектирования и объявленные ими входные источники |
| Разрешение | запрашивает у Elastic или OpenSearch разрешение шаблонов индексов, алиасов, потоков данных, селекторов и удалённых источников |
| Измерение | проверяет количество документов, самое свежее событие, объём хранилища, сопоставления полей, историю схемы и задержку приёма |
| Отчёт | выводит результаты в терминал, JSON, HTML, сводки по флотам и метрики Prometheus с доказательствами по каждому вердикту |
deadair доказывает, присутствуют ли наблюдаемые телеметрические предусловия детектирования и здоровы ли они. Он не доказывает, что логика правила корректна или что имитация атаки приведёт к оповещению. Для этих уровней используйте его в паре со статической валидацией правил и сквозным тестированием детектирований.
Находки
| Находка | Значение | Первая проверка |
|---|---|---|
| нет подходящего источника | ни один из входных источников правила не разрешается в видимый индекс или поток данных | изменения шаблонов, отсутствующие интеграции и область действия учётных данных |
| все источники устарели или пусты | каждый разрешённый источник сейчас непригоден | периодичность источника и путь приёма данных |
| отсутствующие поля | объявленные поля отсутствуют в сопоставлениях всех подходящих источников | изменения парсера, пакета и сопоставлений |
| слепое окно задержки | измеренная задержка приёма превышает запас lookback правила | интервал правила, lookback, переопределение временной метки и задержка пайплайна |
| деградация источника | источник устарел, пуст, имеет низкий объём или отклонился от схемы | история источника и ожидаемое обслуживание |
| неиспользуемая телеметрия | данные хранятся, но ни одно включённое локальное детектирование не ссылается на них | отключённые правила и намеренный сбор |
Каждый вердикт ограничен областью видимости настроенных учётных данных. JSON-отчёты включают настроенные выражения, разрешённые источники, метод разрешения, статус оценки, метаданные бэкенда и доказательства возможностей. Подробные примеры и разбор см. в руководстве по использованию.
Подключение SIEM
Elastic:
export DEADAIR_ES_URL=https://es.example.internal:9200
export DEADAIR_KIBANA_URL=https://kibana.example.internal:5601
export DEADAIR_API_KEY=<read-only-api-key>
deadair check
deadair scan --json-out report.json --html-out report.html
OpenSearch:
export DEADAIR_BACKEND=opensearch
export DEADAIR_OPENSEARCH_URL=https://opensearch.example.internal:9200
export DEADAIR_OPENSEARCH_USERNAME=deadair
export DEADAIR_OPENSEARCH_PASSWORD=<password>
deadair check
deadair scan
Используйте документированные роли с минимальными привилегиями для Elastic или OpenSearch. Доверенный набор интеграционных тестов также доказывает, что попытки записи с использованием этих учётных данных отклоняются.
CI, флоты и мониторинг
# Gate a candidate rule against live source availability.
deadair scan --rule new-rule.json
# Fail only on new regressions between reports.
deadair diff yesterday.json today.json
# Scan multiple SIEM instances from one process.
deadair scan --fleet fleet.json
# Export cached scan results as Prometheus metrics.
deadair serve --interval 5m
scan --rule изолирует правило-кандидат от несвязанного накопленного объёма проблем. diff работает с детерминированно обезличенными отчётами. Конфигурация флота ссылается на секреты через переменные окружения, а не хранит секретные значения.
Шлюз правила-кандидата и сравнение отчётов на одноразовом стеке Elastic.
Продакшен-паттерны см. в поведении шлюза CI, развёртывании флотов и MSSP и примерах Prometheus.
Протестированные бэкенды
В настоящее время конвейер интеграционного тестирования проверяет следующие точные версии:
| Бэкенд | Точные версии в реальном CI |
|---|---|
| Elastic Security | 8.19.19, 9.4.4 |
| OpenSearch Security Analytics | 2.19.6, 3.7.0 |
Другие версии могут работать, но не покрываются текущей матрицей CI.
Модель безопасности
- Весь доступ к бэкендам — только на чтение; доверенные интеграционные тесты доказывают, что документированные учётные данные не могут выполнять запись.
- Отчёты, HTML, файлы состояния и вывод флота на POSIX-системах записываются с правами
0600. - Учётные данные могут поступать из переменных окружения или файлов, что исключает секреты в аргументах процессов.
--redactзаменяет имена тенантов, правил, источников, шаблонов и полей на устойчивые дайджесты.- Экспортёр по умолчанию привязывается к loopback.
- deadair не отправляет данные на внешние серверы и не собирает телеметрию использования.
Относитесь к отчётам как к чувствительным артефактам SOC: они выявляют слепые детектирования, имена источников, пробелы в схемах и неиспользуемый сбор.
Документация
- Руководство по использованию — первые сканирования, доказательства в отчётах, находки, шлюзы CI, состояние и флоты
- Проверка и догфудинг — что доказано, а что всё ещё требует полевых доказательств
- Архитектура — контракт бэкенда, модель данных, свойства безопасности и ограничения
- Лучшие практики — порядок развёртывания, контекст оповещений и маршрутизация
- Руководство для MSSP — секреты, редактирование, хранение, расчёт масштаба и обработка сбоев тенантов
- Детектирования, которые работают, но не видят — проблема и воспроизводимая симуляция
Участие в разработке
Приветствуются отчёты об ошибках, обезличенные фикстуры, кейсы корректности, документация и предложения по бэкендам. Начните с CONTRIBUTING.md и используйте шаблон RFC для бэкенда при работе над адаптерами.
Лицензия
Apache-2.0.