
deadair v0.4.0
Encontra as regras de detecção no seu SIEM que estão executando às cegas
Saúde de detecções SIEM de código aberto.
Encontre detecções habilitadas que estão cegas porque sua telemetria está ausente, obsoleta, atrasada ou
incompatível com o esquema.
Executa localmente · Somente leitura · Sem agente · Sem upload de telemetria
Leia o artigo técnico · Destaque no Detection Engineering Weekly · Destaque no tl;dr sec #341
Varredura real de um laboratório Elastic descartável com telemetria deliberadamente ausente, obsoleta, atrasada e não utilizada. Abra a imagem para a reprodução curta, ou reproduza-a com make record-scan-lab.
Por que deadair
Uma regra pode estar habilitada, agendada e sem erros depois que os dados de que precisa desapareceram. deadair lê o inventário de regras ativo, resolve as entradas de cada regra usando a semântica nativa do backend e verifica as fontes concretas por trás delas.
Ele detecta:
- regras cujos seletores de índice, alias ou data-stream não resolvem para nada;
- regras com seletores mistos em que uma entrada declarada desapareceu enquanto outra ainda resolve;
- regras cujas fontes correspondentes estão todas obsoletas ou vazias;
- no Elastic, regras executando com campos declarados ausentes;
- no Elastic e em regras Sentinel Scheduled elegíveis, uma janela cega de atraso de ingestão;
- no Sentinel, regras cujas fontes conhecidas usam um plano de tabela Basic ou Auxiliary incompatível;
- no Elastic e no OpenSearch, telemetria saudável que nenhuma detecção habilitada lê.
deadair suporta Elastic Security, OpenSearch Security Analytics e Microsoft Sentinel.
Início rápido
Baixe um binário para macOS, Linux ou Windows em GitHub Releases, ou instale com Go:
go install github.com/alephnull-sh/deadair/cmd/deadair@latest
Imprima a configuração somente leitura para o seu SIEM:
deadair setup elastic # Elastic Security
deadair setup opensearch # OpenSearch Security Analytics
deadair setup sentinel # Microsoft Sentinel
Execute uma configuração e depois verifique e faça a varredura:
deadair check # verifica se a credencial pode fazer a varredura
deadair scan # avalia regras ativas e telemetria
Os códigos de saída são estáveis: 0 passa no gate configurado, 1 significa achados bloqueados pelo gate e 2 significa que a varredura falhou.
Como funciona
| Estágio | O que deadair faz |
|---|---|
| Inventário | lê detecções habilitadas e as entradas que elas declaram |
| Resolução | usa resolução de índice nativa no Elastic e no OpenSearch; no Sentinel, combina análise KQL com evidências de tabela, watchlist, função salva, ASIM e workspace cruzado mapeado |
| Medição | verifica frescor e temporização das fontes, além de esquema e armazenamento onde o backend os suporta |
| Relatório | emite métricas de terminal, JSON, HTML, rollups de frota e Prometheus com a evidência por trás de cada veredito |
O Sentinel segue o mesmo modelo de regra-para-fonte. Seu adaptador também entende watchlists literais, funções salvas, parsers ASIM, workspaces mapeados e linhagem de tabelas de resumo. Quando o Azure fornece evidência suficiente, deadair pode mostrar que uma fatia filtrada de uma tabela compartilhada ficou silenciosa ou que um pipeline de resumo ficou para trás. Essas duas verificações são consultivas; elas não alteram o gate. O guia de uso descreve as regras de evidência, e o registro de validação registra a cobertura de testes ao vivo.
Varredura ao vivo de um laboratório Sentinel descartável semeado com telemetria ausente, obsoleta, atrasada e incompatível. Abra a imagem para a reprodução curta. Veja o registro separado de conformidade Azure para os testes de somente leitura e negação de escrita.
deadair verifica se a telemetria de uma detecção está presente e saudável. Ele não valida a lógica da regra nem prova que um ataque simulado disparará um alerta. Use validação estática de regras e testes de detecção de ponta a ponta para essas tarefas.
Achados
| Achado | Significado | Primeira verificação |
|---|---|---|
| nenhuma fonte correspondente | nenhuma das entradas da regra resolve para um índice, data stream ou tabela Sentinel visível | mudanças de padrão, integrações ausentes e escopo da credencial |
| todas as fontes obsoletas ou vazias | toda fonte resolvida está inutilizável no momento | cadência da fonte e o caminho de ingestão |
| campos ausentes | um campo declarado pela regra Elastic está ausente ou não pesquisável em uma ou mais fontes resolvidas após toda a leitura de mapeamentos de fonte | mudanças de parser, pacote e mapeamento |
| janela cega de atraso | o atraso p95 de ingestão de eventos pareados excede a margem de lookback da regra | intervalo da regra, lookback, substituição de timestamp e atraso de pipeline |
| cobertura parcial de entrada | a expressão completa resolve, mas um seletor positivo dentro dela resolve vazio | migrações, seletores de fallback e alternativas esperadas; informativo a menos que a política o bloqueie |
| plano de fonte incompatível | uma regra Sentinel depende de uma tabela Basic ou Auxiliary que não é elegível para o caminho de evidência de regra analítica | plano de tabela e tipo de regra |
| degradação de fonte | uma fonte está obsoleta, vazia, com baixo volume ou com desvio de esquema | histórico da fonte e manutenção esperada |
| telemetria não utilizada | no Elastic ou OpenSearch, dados estão sendo armazenados mas nenhuma detecção local habilitada resolve para eles | regras desabilitadas e coleta intencional |
Cada veredito é limitado ao que a credencial configurada pode ver. Os relatórios JSON incluem as expressões configuradas, fontes resolvidas, método de resolução, status da avaliação, metadados do backend e evidência de capacidade. Veja o guia de uso para exemplos práticos e triagem.
Conecte um 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: allowlist JSON para alvos literais de workspace().
# export DEADAIR_SENTINEL_REMOTES=/restricted/path/sentinel-remotes.json
deadair check
deadair scan
Antes de deadair avaliar o workspace remoto mapeado de uma regra, esse workspace deve ter o Sentinel implantado. Mapeamentos na mesma assinatura podem comprovar a disponibilidade da fonte. Regras entre assinaturas precisam de evidência em tempo de execução vinculada à identidade exata da regra. Veja os detalhes de uso do Sentinel para as regras de evidência, limites de workspace e região e as orientações de desempenho da Microsoft.
Use as funções somente leitura documentadas para Elastic, OpenSearch ou Microsoft Sentinel.
CI, frotas e monitoramento
# Bloqueie uma regra candidata com base na disponibilidade de fonte ao vivo.
deadair scan --rule new-rule.json
# Falhe apenas em novas regressões entre relatórios.
deadair diff yesterday.json today.json
# Varra várias instâncias de SIEM a partir de um único processo.
deadair scan --fleet fleet.json
# Exporte resultados de varredura em cache como métricas Prometheus.
deadair serve --interval 5m
scan --rule isola uma regra ou detector candidato nativo do backend do backlog não relacionado. diff
funciona com relatórios redigidos criados com a mesma chave mantida pelo chamador. A configuração de frota referencia
segredos por meio de variáveis de ambiente em vez de armazenar valores secretos.
A GitHub Action oficial encapsula gates de candidatos de instância única para Elastic, OpenSearch e Sentinel. Ela escreve um resumo de job, envia um relatório JSON redigido e pode aplicar uma política deadair sem instalar uma regra. Workflows do Sentinel autenticam o runner no Azure primeiro; a Action não define entradas de credenciais Azure.
Veja comportamento do gate de CI, implantação de frota e MSSP e os exemplos Prometheus para configurações para testar em seu próprio ambiente.
Backends testados
| Backend | Validação ao vivo |
|---|---|
| Elastic Security | CI confiável em 8.19.19 e 9.4.4 |
| OpenSearch Security Analytics | CI confiável em 2.19.6 e 3.7.0 |
| Microsoft Sentinel | conformidade registrada opt-in em workspaces descartáveis do UK South; veja status de validação |
A execução de conformidade do Sentinel é manual, não CI agendado.
Modelo de segurança
- Todas as chamadas do adaptador são somente leitura. Testes confiáveis de Elastic e OpenSearch mais sondas separadas de laboratório Sentinel verificam que as identidades de varredura documentadas não podem realizar escritas representativas.
- Relatórios, HTML, arquivos de estado e saída de frota são gravados com
0600em sistemas POSIX. - As credenciais podem vir de variáveis de ambiente ou arquivos, evitando segredos em argumentos de processo.
--redactsubstitui identificadores de tenant, regra, fonte, padrão, campo, dependência, linhagem, proveniência, workspace, watchlist, template e pacote por pseudônimos HMAC com chave. Expressões de sondagem de dependência validadas e seus argumentos KQL nunca são serializados. Um--redact-key-filegerado a partir de bytes aleatórios também habilita a redação e mantém os nomes estáveis entre execuções separadas.- O exportador vincula-se ao loopback por padrão.
- deadair não tem comportamento de phone-home nem telemetria de uso.
Trate os relatórios como artefatos sensíveis do SOC: eles identificam detecções cegas, nomes de fontes, lacunas de esquema e coleta não utilizada.
Documentação
- Guia de uso — primeiras varreduras, evidência de relatório, achados, gates de CI, estado e frotas
- Status de validação — caminhos testados e limites atuais
- Arquitetura — contrato de backend, modelo de dados, propriedades de segurança e limites
- Melhores práticas — ordem de implantação, contexto de alerta e roteamento
- Guia MSSP — segredos, redação, agendamento e tratamento de falhas de tenant
- Detecções que executam mas não conseguem ver — o problema e uma simulação reproduzível
Contribuindo
Relatórios de bugs, fixtures sanitizadas, casos de correção, documentação e propostas de backend são bem-vindos. Comece com CONTRIBUTING.md e use o modelo de RFC de backend para trabalho de adaptador.
Licença
Apache-2.0.

