
deadair v0.8.0
Encuentra las reglas de detección en tu SIEM que están funcionando a ciegas
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
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
| Etapa | Qué hace deadair |
|---|---|
| Inventario | lee las detecciones habilitadas y las entradas que declaran |
| Resolución | usa 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ón | comprueba la frescura y la temporización de las fuentes, además del esquema y el almacenamiento donde el backend los admite |
| Informe | emite 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.
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
| Hallazgo | Significado | Primera comprobación |
|---|---|---|
| sin fuente coincidente | ninguna de las entradas de la regla resuelve a un índice, flujo de datos o tabla de Sentinel visible | cambios de patrón, integraciones ausentes y alcance de la credencial |
| todas las fuentes desactualizadas o vacías | todas las fuentes resueltas son inutilizables ahora mismo | cadencia de la fuente y la ruta de ingesta |
| campos ausentes | un 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 fuentes | cambios de parser, paquete y mapeo |
| ventana ciega por retraso | el p95 del retraso de ingesta de eventos emparejados supera el margen de lookback de la regla | intervalo de la regla, lookback, anulación de timestamp y retraso del pipeline |
| cobertura de entrada parcial | la expresión completa resuelve, pero un selector positivo dentro de ella resuelve vacío | migraciones, selectores de respaldo y alternativas esperadas; informativo a menos que la política lo sujete a la puerta |
| plan de fuente incompatible | una regla de Sentinel depende de una tabla Basic o Auxiliary que no es elegible para la ruta de evidencia de reglas analíticas | plan de tabla y tipo de regla |
| degradación de fuente | una fuente está desactualizada, vacía, con bajo volumen o con deriva de esquema | historial de la fuente y mantenimiento esperado |
| telemetría sin uso | en Elastic u OpenSearch, se están almacenando datos pero ninguna detección local habilitada resuelve a ellos | reglas deshabilitadas y recolección intencional |
| productor esperado silencioso | un feed configurado de proveedor, producto o dispositivo de Sentinel no ha reportado dentro de su umbral | el emisor y el colector de ese feed |
| pipeline de resumen no saludable | un trabajo de resumen de Sentinel relevante falló o su último éxito está vencido | el 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
| Backend | Validación en vivo |
|---|---|
| Elastic Security | CI de confianza en 8.19.19 y 9.4.4 |
| OpenSearch Security Analytics | CI de confianza en 2.19.6 y 3.7.0 |
| Microsoft Sentinel | conformidad 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
0600en sistemas POSIX. - Las credenciales pueden provenir de variables de entorno o archivos, evitando secretos en los argumentos del proceso.
--redactreemplaza 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-filegenerado 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
- Guía de uso — primeros escaneos, evidencia de informes, hallazgos, puertas de CI, estado y flotas
- Investigar una brecha de telemetría — consumidores de fuentes, feeds esperados y recuperación
- Estado de validación — rutas probadas y límites actuales
- Arquitectura — contrato del backend, modelo de datos, propiedades de seguridad y límites
- Buenas prácticas — orden de despliegue, contexto de alertas y enrutamiento
- Guía para MSSP — secretos, redacción, programación y manejo de fallos de inquilinos
- Detecciones que se ejecutan pero no pueden ver — el problema y una simulación reproducible
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.

