
deadair v0.4.0
Encuentra las reglas de detección en tu SIEM que están funcionando a ciegas
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
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
| Etapa | Qué hace deadair |
|---|---|
| Inventario | lee las detecciones habilitadas y las entradas que declaran |
| Resolución | usa 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ón | verifica la frescura y el tiempo de las fuentes, además del esquema y el almacenamiento donde el backend lo admite |
| Informe | emite 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.
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
| 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 patrones, integraciones faltantes y alcance de credenciales |
| todas las fuentes obsoletas o vacías | cada fuente resuelta no es utilizable en este momento | cadencia de la fuente y ruta de ingesta |
| campos faltantes | un 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 fuentes | cambios de analizador, paquete y mapeo |
| ventana ciega por retraso | el retraso de ingesta p95 de eventos emparejados supera el margen de retroceso de la regla | intervalo de la regla, retroceso, anulación de marca de tiempo y retraso de canalización |
| 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 limite |
| 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 de análisis | plan de tabla y tipo de regla |
| degradación de fuente | una fuente está obsoleta, vacía, con bajo volumen o con desviación de esquema | historial de la fuente y mantenimiento esperado |
| telemetría sin usar | en Elastic u OpenSearch, se almacenan datos pero ninguna detección local habilitada resuelve a ellos | reglas 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
| Backend | Validación en vivo |
|---|---|
| Elastic Security | CI confiable en 8.19.19 y 9.4.4 |
| OpenSearch Security Analytics | CI confiable en 2.19.6 y 3.7.0 |
| Microsoft Sentinel | conformidad 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
0600en sistemas POSIX. - Las credenciales pueden provenir de variables de entorno o archivos, evitando secretos en argumentos de 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. Una--redact-key-filegenerada 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
- Guía de uso — primeros escaneos, evidencia de informes, hallazgos, límites de CI, estado y flotas
- Estado de validación — rutas probadas y límites actuales
- Arquitectura — contrato de backend, modelo de datos, propiedades de seguridad y límites
- Mejores prácticas — orden de implementación, contexto de alertas y enrutamiento
- Guía 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
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.

