Volver a actualizaciones
Nuevo releaseJul 23, 2026

deadair v0.4.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

Salud de detecciones SIEM de código abierto.
Encuentra detecciones habilitadas que están ciegas porque su telemetría falta, está obsoleta, llega tarde o es incompatible con el esquema.

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

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

deadair scan of a disposable Elastic lab showing dead and impaired detections

Escaneo real de un laboratorio Elastic desechable con telemetría deliberadamente ausente, obsoleta, tardía y sin usar. Abre la imagen para ver la breve repetició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 en vivo, resuelve las entradas de cada regla usando la semántica nativa del backend y verifica las fuentes concretas detrás de ellas.

Detecta:

  • reglas cuyos selectores de índice, alias o flujo de datos no resuelven a nada;
  • reglas con selectores mixtos donde una entrada declarada ha desaparecido mientras otra aún resuelve;
  • reglas cuyas fuentes coincidentes están todas obsoletas o vacías;
  • en Elastic, reglas que se ejecutan con campos declarados faltantes;
  • en Elastic y en reglas programadas de Sentinel 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 instala 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 y luego verifica y escanea:

deadair check   # verifica que la credencial pueda escanear
deadair scan    # evalúa reglas y telemetría en vivo

Los códigos de salida son estables: 0 supera el umbral configurado, 1 significa hallazgos que superan el umbral y 2 significa que el escaneo falló.

Cómo funciona

EtapaQué hace deadair
Inventariolee las detecciones habilitadas y las entradas que declaran
Resoluciónusa la resolución de índices nativa 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ónverifica la frescura y el tiempo de las fuentes, además del esquema y el almacenamiento donde el backend lo admite
Informeemite métricas de terminal, JSON, HTML, resúmenes de flota y Prometheus con la evidencia detrás de cada veredicto

Sentinel sigue el mismo modelo de regla a fuente. Su adaptador también entiende watchlists literales, funciones guardadas, analizadores ASIM, espacios de trabajo mapeados y linaje de tablas de resumen. Cuando Azure proporciona suficiente evidencia, deadair puede mostrar que una porción filtrada de una tabla compartida se ha quedado en silencio o que una canalización de resumen se ha quedado atrás. Esas dos comprobaciones son informativas; no cambian el umbral. La guía de uso describe las reglas de evidencia, y el registro de validación registra la cobertura de pruebas en vivo.

deadair scan of a disposable Microsoft Sentinel lab showing missing, stale, late, and incompatible telemetry

Escaneo en vivo de un laboratorio Sentinel desechable sembrado con telemetría ausente, obsoleta, tardía e incompatible. Abre la imagen para ver la breve repetición. Consulta el registro de conformidad de Azure separado para las pruebas de solo lectura y denegación de escritura.

deadair verifica 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 disparará 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 patrones, integraciones faltantes y alcance de credenciales
todas las fuentes obsoletas o vacíascada fuente resuelta no es utilizable en este momentocadencia de la fuente y ruta de ingesta
campos faltantesun campo declarado por una 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 analizador, paquete y mapeo
ventana ciega por retrasoel retraso de ingesta p95 de eventos emparejados supera el margen de retroceso de la reglaintervalo de la regla, retroceso, anulación de marca de tiempo y retraso de canalización
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 limite
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 de análisisplan de tabla y tipo de regla
degradación de fuenteuna fuente está obsoleta, vacía, con bajo volumen o con desviación de esquemahistorial de la fuente y mantenimiento esperado
telemetría sin usaren Elastic u OpenSearch, se almacenan datos pero ninguna detección local habilitada resuelve a ellosreglas deshabilitadas y recopilación intencional

Cada veredicto se limita 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>
# Opcional: lista blanca JSON para objetivos literales de workspace().
# 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 implementado. Los mapeos de la misma suscripción pueden demostrar la disponibilidad de la fuente. Las reglas entre suscripciones necesitan evidencia de 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 pautas de rendimiento de Microsoft.

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

CI, flotas y monitoreo

# Limita una regla candidata contra la disponibilidad de fuentes en vivo.
deadair scan --rule new-rule.json

# Falla solo en nuevas regresiones entre informes.
deadair diff yesterday.json today.json

# Escanea múltiples instancias de SIEM desde un solo proceso.
deadair scan --fleet fleet.json

# Exporta resultados de escaneo en caché como métricas de Prometheus.
deadair serve --interval 5m

scan --rule aísla una regla o detector candidato nativo del backend del trabajo pendiente no relacionado. diff funciona con informes redactados creados con la misma clave retenida por el llamador. La configuración de flota hace referencia a secretos a través de variables de entorno en lugar de almacenar valores de secretos.

La Acción oficial de GitHub envuelve los límites de candidatos de instancia única para Elastic, OpenSearch y Sentinel. Escribe un resumen de 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 al ejecutor en Azure primero; la Acción no define entradas de credenciales de Azure.

Consulta comportamiento del límite de CI, implementación de flotas y MSSP y los ejemplos de Prometheus para configuraciones que probar en tu propio entorno.

Backends probados

BackendValidación en vivo
Elastic SecurityCI confiable en 8.19.19 y 9.4.4
OpenSearch Security AnalyticsCI confiable en 2.19.6 y 3.7.0
Microsoft Sentinelconformidad registrada de participació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 programado.

Modelo de seguridad

  • Todas las llamadas del adaptador son de solo lectura. Las pruebas confiables de Elastic y OpenSearch más las sondas separadas del laboratorio de Sentinel verifican que las identidades de escaneo documentadas no puedan realizar escrituras representativas.
  • Los informes, HTML, archivos de estado y salida de flota se escriben con 0600 en sistemas POSIX.
  • Las credenciales pueden provenir de variables de entorno o archivos, evitando secretos en argumentos de 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. Una --redact-key-file generada a partir de bytes aleatorios también habilita la redacción y mantiene los nombres estables entre ejecuciones separadas.
  • El exportador se vincula a loopback por defecto.
  • deadair no tiene comportamiento de llamada a casa ni telemetría de uso.

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

Documentación

Contribuciones

Los informes de errores, fixtures sanitizados, casos de corrección, documentación y propuestas de backend son bienvenidos. Comienza con CONTRIBUTING.md y usa la plantilla de RFC de backend para el trabajo de adaptadores.

Licencia

Apache-2.0.

Categorías