Volver a actualizaciones
Nuevo releaseSep 6, 2026

deadair v0.8.0

Encuentra las reglas de detección en tu SIEM que están funcionando a ciegas

Compartir

deadair - SIEM detection coverage health

CI Release Go 1.26 License: Apache-2.0

deadair comprueba si las detecciones de SIEM habilitadas todavía disponen de la telemetría que necesitan.
Informa de datos ausentes o desactualizados, retrasos de ingesta e inconsistencias de esquema.

Se ejecuta localmente · Solo lectura · Sin agente · Sin envío de telemetría

Lee el análisis técnico · Destacado en Detection Engineering Weekly · Destacado en tl;dr sec #341

Un escaneo de Elastic que muestra entradas ausentes y desactualizadas, campos ausentes y eventos retrasados

Campos ausentes y eventos retrasados en un laboratorio de Elastic desechable. Abre la imagen para ver la grabación corta con controles de reproducción, o reprodúcela con make record-scan-lab.

Por qué deadair

Una regla puede estar habilitada, programada y sin errores después de que los datos que necesita hayan desaparecido. deadair lee el inventario de reglas activas, resuelve las entradas de cada regla usando la semántica nativa del backend y comprueba las fuentes concretas que hay detrás de ellas.

Detecta:

  • reglas cuyos selectores de índice, alias o flujo de datos no resuelven a nada;
  • reglas con selectores mixtos en las que una entrada declarada ha desaparecido mientras otra todavía resuelve;
  • reglas cuyas fuentes coincidentes están todas desactualizadas o vacías;
  • en Elastic, reglas que se ejecutan con campos declarados ausentes;
  • en Elastic y en reglas Sentinel Scheduled elegibles, una ventana ciega por retraso de ingesta;
  • en Sentinel, reglas cuyas fuentes conocidas usan un plan de tabla Basic o Auxiliary incompatible;
  • en Elastic y OpenSearch, telemetría saludable que ninguna detección habilitada lee.

deadair es compatible con Elastic Security, OpenSearch Security Analytics y Microsoft Sentinel.

Inicio rápido

Descarga un binario para macOS, Linux o Windows desde GitHub Releases, o instálalo con Go:

go install github.com/alephnull-sh/deadair/cmd/deadair@latest

Imprime la configuración de solo lectura para tu SIEM:

deadair setup elastic      # Elastic Security
deadair setup opensearch   # OpenSearch Security Analytics
deadair setup sentinel     # Microsoft Sentinel

Ejecuta una configuración, luego verifica y escanea:

deadair check   # verifica que la credencial puede escanear
deadair scan    # evalúa reglas activas y telemetría

Los códigos de salida son estables: 0 supera la puerta configurada, 1 significa hallazgos sujetos a la puerta y 2 significa que el escaneo falló.

Para investigar una fuente y sus detecciones consumidoras:

deadair scan --json-out report.json --html-out report.html
deadair inspect --source CommonSecurityLog report.json

Usa un nombre de fuente de tu informe. La guía de investigación también cubre fuentes individuales de Sentinel, mantenimiento y seguimiento de recuperación.

Cómo funciona

EtapaQué hace deadair
Inventariolee las detecciones habilitadas y las entradas que declaran
Resoluciónusa la resolución nativa de índices en Elastic y OpenSearch; en Sentinel, combina el análisis de KQL con evidencia de tablas, watchlists, funciones guardadas, ASIM y espacios de trabajo cruzados mapeados
Medicióncomprueba la frescura y la temporización de las fuentes, además del esquema y el almacenamiento donde el backend los admite
Informeemite terminal, JSON, HTML, agregados de flota y métricas de Prometheus con la evidencia detrás de cada veredicto

Sentinel sigue el mismo modelo de regla a fuente y añade watchlists literales, funciones guardadas, parsers ASIM, espacios de trabajo mapeados y linaje de tablas de resumen. También muestra cuándo una porción filtrada de una tabla compartida ha dejado de reportar o un pipeline de resumen se ha quedado atrás.

La guía de uso describe las reglas de evidencia, y el registro de validación documenta la cobertura de pruebas en vivo.

Un feed de firewall de Londres silencioso y su detección dependiente dentro de Sentinel CommonSecurityLog

Dos feeds de firewall comparten CommonSecurityLog. Uno se detiene; el otro sigue reportando. La grabación muestra los escaneos guardados de fallo y recuperación. Consulta el registro de validación para las condiciones del laboratorio.

deadair comprueba si la telemetría de una detección está presente y saludable. No valida la lógica de la regla ni demuestra que un ataque simulado dispare una alerta. Usa la validación estática de reglas y las pruebas de detección de extremo a extremo para esas tareas.

Hallazgos

HallazgoSignificadoPrimera comprobación
sin fuente coincidenteninguna de las entradas de la regla resuelve a un índice, flujo de datos o tabla de Sentinel visiblecambios de patrón, integraciones ausentes y alcance de la credencial
todas las fuentes desactualizadas o vacíastodas las fuentes resueltas son inutilizables ahora mismocadencia de la fuente y la ruta de ingesta
campos ausentesun campo declarado por la regla de Elastic está ausente o no es buscable en una o más fuentes resueltas después de leer todos los mapeos de fuentescambios de parser, paquete y mapeo
ventana ciega por retrasoel p95 del retraso de ingesta de eventos emparejados supera el margen de lookback de la reglaintervalo de la regla, lookback, anulación de timestamp y retraso del pipeline
cobertura de entrada parcialla expresión completa resuelve, pero un selector positivo dentro de ella resuelve vacíomigraciones, selectores de respaldo y alternativas esperadas; informativo a menos que la política lo sujete a la puerta
plan de fuente incompatibleuna regla de Sentinel depende de una tabla Basic o Auxiliary que no es elegible para la ruta de evidencia de reglas analíticasplan de tabla y tipo de regla
degradación de fuenteuna fuente está desactualizada, vacía, con bajo volumen o con deriva de esquemahistorial de la fuente y mantenimiento esperado
telemetría sin usoen Elastic u OpenSearch, se están almacenando datos pero ninguna detección local habilitada resuelve a ellosreglas deshabilitadas y recolección intencional
productor esperado silenciosoun feed configurado de proveedor, producto o dispositivo de Sentinel no ha reportado dentro de su umbralel emisor y el colector de ese feed
pipeline de resumen no saludableun trabajo de resumen de Sentinel relevante falló o su último éxito está vencidoel registro de ejecución nativo y la consulta de resumen

Los hallazgos de productor y de pipeline de resumen afectan al estado de salida cuando sus clases están seleccionadas en la política. Un feed de dispositivo silencioso se informa por separado de otros consumidores de su tabla compartida.

Cada veredicto está limitado a lo que la credencial configurada puede ver. Los informes JSON incluyen las expresiones configuradas, las fuentes resueltas, el método de resolución, el estado de evaluación, los metadatos del backend y la evidencia de capacidades. Consulta la guía de uso para ejemplos prácticos y triaje.

Conectar un 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

Microsoft Sentinel:

az login --tenant <tenant-id>

export DEADAIR_BACKEND=sentinel
export DEADAIR_AZURE_SUBSCRIPTION_ID=<subscription-id>
export DEADAIR_AZURE_RESOURCE_GROUP=<resource-group>
export DEADAIR_SENTINEL_WORKSPACE=<workspace-resource-name>
# Optional: JSON allowlist for literal workspace() targets.
# export DEADAIR_SENTINEL_REMOTES=/restricted/path/sentinel-remotes.json

deadair check
deadair scan

Antes de que deadair evalúe el espacio de trabajo remoto mapeado de una regla, ese espacio de trabajo debe tener Sentinel desplegado. Los mapeos dentro de la misma suscripción pueden demostrar la disponibilidad de la fuente. Las reglas entre suscripciones necesitan evidencia en tiempo de ejecución vinculada a la identidad exacta de la regla. Consulta los detalles de uso de Sentinel para las reglas de evidencia, los límites de espacio de trabajo y región, y las directrices de rendimiento de Microsoft.

Usa los roles de solo lectura documentados para Elastic, OpenSearch o Microsoft Sentinel.

CI, flotas y monitorización

# 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 aísla una regla o detector candidato nativo del backend de la acumulación no relacionada. diff funciona con informes redactados creados con la misma clave en poder del llamador. La configuración de flota referencia secretos a través de variables de entorno en lugar de almacenar valores secretos.

La GitHub Action oficial envuelve puertas de candidatos de instancia única para Elastic, OpenSearch y Sentinel. Escribe un resumen del trabajo, sube un informe JSON redactado y puede aplicar una política de deadair sin instalar una regla. Los flujos de trabajo de Sentinel autentican primero el runner en Azure; la Action no define entradas de credenciales de Azure.

Consulta el comportamiento de la puerta de CI, el despliegue de flota y MSSP y los ejemplos de Prometheus para configuraciones que probar en tu propio entorno.

Backends probados

BackendValidación en vivo
Elastic SecurityCI de confianza en 8.19.19 y 9.4.4
OpenSearch Security AnalyticsCI de confianza en 2.19.6 y 3.7.0
Microsoft Sentinelconformidad grabada con adhesión voluntaria en espacios de trabajo desechables de UK South; consulta el estado de validación

La ejecución de conformidad de Sentinel es manual, no CI programada.

Modelo de seguridad

  • Todas las llamadas del adaptador son de solo lectura. Las pruebas de confianza de Elastic y OpenSearch, más sondas de laboratorio de Sentinel separadas, verifican que las identidades de escaneo documentadas no pueden realizar escrituras representativas.
  • Los informes, HTML, archivos de estado y la salida de flota se escriben con 0600 en sistemas POSIX.
  • Las credenciales pueden provenir de variables de entorno o archivos, evitando secretos en los argumentos del proceso.
  • --redact reemplaza identificadores de inquilino, regla, fuente, patrón, campo, dependencia, linaje, procedencia, espacio de trabajo, watchlist, plantilla y paquete con seudónimos HMAC con clave. Las expresiones de sonda de dependencia validadas y sus argumentos KQL nunca se serializan. Un --redact-key-file generado a partir de bytes aleatorios también habilita la redacción y mantiene los nombres estables entre ejecuciones separadas.
  • El exportador se enlaza a loopback por defecto.
  • deadair no tiene comportamiento de llamada a casa ni telemetría de uso.

Trata los informes como artefactos sensibles del SOC: identifican detecciones ciegas, nombres de fuentes, brechas de esquema y recolección sin uso.

Documentación

Contribuir

Abre un issue para errores, sugerencias o reproducciones saneadas. Los mantenedores gestionan los cambios de código. Consulta CONTRIBUTING.md para más detalles.

Licencia

Apache-2.0.

Categorías