Zurück zu den Updates
New releaseSep 6, 2026

deadair v0.8.0

Findet die Erkennungsregeln in Ihrem SIEM, die ins Leere laufen.

Teilen

deadair - SIEM detection coverage health

CI Release Go 1.26 License: Apache-2.0

deadair prüft, ob aktivierte SIEM-Detections noch über die benötigte Telemetrie verfügen.
Es meldet fehlende oder veraltete Daten, Ingest-Verzögerungen und Schema-Abweichungen.

Läuft lokal · Nur lesend · Kein Agent · Kein Telemetrie-Upload

Technischen Bericht lesen · Vorgestellt in Detection Engineering Weekly · Vorgestellt in tl;dr sec #341

Ein Elastic-Scan, der fehlende und veraltete Inputs, fehlende Felder und verzögerte Events zeigt

Fehlende Felder und verzögerte Events in einem wegwerfbaren Elastic-Lab. Öffne das Bild für die kurze Aufzeichnung mit Wiedergabesteuerung oder reproduziere sie mit make record-scan-lab.

Warum deadair

Eine Regel kann aktiviert, geplant und fehlerfrei sein, nachdem die benötigten Daten verschwunden sind. deadair liest das Live-Regelinventar, löst die Inputs jeder Regel mithilfe der nativen Semantik des Backends auf und prüft die konkreten Quellen dahinter.

Es erkennt:

  • Regeln, deren Index-, Alias- oder Data-Stream-Selektoren zu nichts auflösen;
  • Regeln mit gemischten Selektoren, bei denen ein deklarierter Input verschwunden ist, während ein anderer noch auflöst;
  • Regeln, deren passende Quellen alle veraltet oder leer sind;
  • bei Elastic Regeln, die mit fehlenden deklarierten Feldern laufen;
  • bei Elastic und geeigneten Sentinel Scheduled-Regeln ein Blindfenster durch Ingest-Verzögerung;
  • bei Sentinel Regeln, deren bekannte Quellen einen inkompatiblen Basic- oder Auxiliary-Tabellenplan verwenden;
  • bei Elastic und OpenSearch gesunde Telemetrie, die von keiner aktivierten Detection gelesen wird.

deadair unterstützt Elastic Security, OpenSearch Security Analytics und Microsoft Sentinel.

Schnellstart

Lade ein Binary für macOS, Linux oder Windows von GitHub Releases herunter oder installiere es mit Go:

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

Gib das schreibgeschützte Setup für dein SIEM aus:

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

Führe ein Setup aus und verifiziere dann und scanne:

deadair check   # überprüfen, ob die Anmeldedaten scannen können
deadair scan    # Live-Regeln und Telemetrie bewerten

Exit-Codes sind stabil: 0 besteht das konfigurierte Gate, 1 bedeutet gegatete Findings und 2 bedeutet, dass der Scan fehlgeschlagen ist.

Um eine Quelle und ihre konsumierenden Detections zu untersuchen:

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

Verwende einen Quellennamen aus deinem Bericht. Der Untersuchungsleitfaden behandelt auch einzelne Sentinel-Feeds, Wartung und Wiederherstellungsverfolgung.

Wie es funktioniert

PhaseWas deadair tut
Inventarliest aktivierte Detections und die von ihnen deklarierten Inputs
Auflösenverwendet native Index-Auflösung bei Elastic und OpenSearch; bei Sentinel kombiniert es KQL-Analyse mit Tabellen-, Watchlist-, Saved-Function-, ASIM- und gemappten Cross-Workspace-Nachweisen
Messenprüft Quellenaktualität und -timing sowie Schema und Speicherung, wo das Backend dies unterstützt
Berichtengibt Terminal-, JSON-, HTML-, Fleet-Rollups und Prometheus-Metriken mit den Nachweisen hinter jedem Urteil aus

Sentinel folgt demselben Regel-zu-Quelle-Modell und ergänzt literale Watchlists, Saved Functions, ASIM- Parser, gemappte Workspaces und Summary-Table-Lineage. Es zeigt auch, wenn ein gefilterter Ausschnitt einer gemeinsam genutzten Tabelle verstummt ist oder eine Summary-Pipeline zurückgefallen ist.

Der Nutzungsleitfaden beschreibt die Nachweisregeln und der Validierungsdatensatz dokumentiert die Live-Testabdeckung.

Ein stiller London-Firewall-Feed und seine abhängige Detection innerhalb von Sentinel CommonSecurityLog

Zwei Firewall-Feeds teilen sich CommonSecurityLog. Einer stoppt; der andere berichtet weiter. Die Aufzeichnung zeigt die gespeicherten Fehler- und Wiederherstellungs-Scans. Siehe den Validierungsdatensatz für die Lab-Bedingungen.

deadair prüft, ob die Telemetrie einer Detection vorhanden und gesund ist. Es validiert nicht die Regellogik und beweist nicht, dass ein simulierter Angriff einen Alarm auslöst. Verwende statische Regelvalidierung und End-to-End-Detection-Tests für diese Aufgaben.

Findings

FindingBedeutungErste Prüfung
keine passende Quellekeiner der Inputs der Regel löst zu einem sichtbaren Index, Data Stream oder einer Sentinel-Tabelle aufMusteränderungen, fehlende Integrationen und Credential-Scope
alle Quellen veraltet oder leerjede aufgelöste Quelle ist derzeit unbrauchbarQuellenkadenz und der Ingest-Pfad
fehlende Felderein von der Elastic-Regel deklariertes Feld fehlt oder ist in einer oder mehreren aufgelösten Quellen nicht durchsuchbar, nachdem jedes Quellen-Mapping gelesen wurdeParser-, Paket- und Mapping-Änderungen
Blindfenster durch Verzögerungp95-Ingest-Verzögerung bei gepaarten Events überschreitet die Lookback-Marge der RegelRegelintervall, Lookback, Timestamp-Override und Pipeline-Verzögerung
teilweise Input-Abdeckungder vollständige Ausdruck löst auf, aber ein positiver Selektor darin löst leer aufMigrationen, Fallback-Selektoren und erwartete Alternativen; informativ, sofern nicht durch Policy gegatet
Quellenplan inkompatibeleine Sentinel-Regel hängt von einer Basic- oder Auxiliary-Tabelle ab, die nicht für den Analytics-Rule-Nachweispfad geeignet istTabellenplan und Regeltyp
Quellen-Degradationeine Quelle ist veraltet, leer, hat geringes Volumen oder Schema-DriftQuellenhistorie und erwartete Wartung
ungenutzte Telemetriebei Elastic oder OpenSearch werden Daten gespeichert, aber keine aktivierte lokale Detection löst darauf aufdeaktivierte Regeln und beabsichtigte Erfassung
erwarteter Producer stillein konfigurierter Sentinel-Vendor-, Produkt- oder Device-Feed hat nicht innerhalb seines Schwellenwerts berichtetSender und Collector dieses Feeds
Summary-Pipeline ungesundein relevanter Sentinel-Summary-Job ist fehlgeschlagen oder sein letzter Erfolg ist überfälligder native Ausführungsdatensatz und die Summary-Abfrage

Producer- und Summary-Pipeline-Findings beeinflussen den Exit-Status, wenn ihre Klassen in der Policy ausgewählt sind. Ein stiller Device-Feed wird getrennt von anderen Konsumenten seiner gemeinsam genutzten Tabelle gemeldet.

Jedes Urteil ist auf das beschränkt, was die konfigurierten Anmeldedaten sehen können. JSON-Berichte enthalten die konfigurierten Ausdrücke, aufgelösten Quellen, Auflösungsmethode, Bewertungsstatus, Backend-Metadaten und Capability-Nachweise. Siehe den Nutzungsleitfaden für ausgearbeitete Beispiele und Triage.

Ein SIEM verbinden

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

Bevor deadair den gemappten Remote-Workspace einer Regel bewertet, muss in diesem Workspace Sentinel bereitgestellt sein. Mappings innerhalb desselben Abonnements können die Quellenverfügbarkeit belegen. Regeln über Abonnements hinweg benötigen Laufzeitnachweise, die an die exakte Regelidentität gebunden sind. Siehe die Sentinel-Nutzungsdetails für die Nachweisregeln, Workspace- und Regionsgrenzen sowie Microsofts Performance-Empfehlungen.

Verwende die dokumentierten schreibgeschützten Rollen für Elastic, OpenSearch oder Microsoft Sentinel.

CI, Flotten und Monitoring

# 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 isoliert eine backend-native Kandidatenregel oder einen Detector von unabhängigem Backlog. diff funktioniert mit redigierten Berichten, die mit demselben vom Aufrufer gehaltenen Schlüssel erstellt wurden. Die Fleet-Konfiguration referenziert Secrets über Umgebungsvariablen, anstatt geheime Werte zu speichern.

Die offizielle GitHub Action umschließt Kandidaten-Gates für einzelne Instanzen für Elastic, OpenSearch und Sentinel. Sie schreibt eine Job-Zusammenfassung, lädt einen redigierten JSON- Bericht hoch und kann eine deadair-Policy anwenden, ohne eine Regel zu installieren. Sentinel-Workflows authentifizieren den Runner zuerst bei Azure; die Action definiert keine Azure-Credential-Inputs.

Siehe CI-Gate-Verhalten, Fleet- und MSSP-Deployment und die Prometheus-Beispiele für Konfigurationen, die du in deiner eigenen Umgebung testen kannst.

Getestete Backends

BackendLive-Validierung
Elastic Securityvertrauenswürdige CI auf 8.19.19 und 9.4.4
OpenSearch Security Analyticsvertrauenswürdige CI auf 2.19.6 und 3.7.0
Microsoft Sentinelaufgezeichnete Opt-in-Konformität in wegwerfbaren UK-South-Workspaces; siehe Validierungsstatus

Der Sentinel-Konformitätslauf ist manuell, keine geplante CI.

Sicherheitsmodell

  • Alle Adapter-Aufrufe sind schreibgeschützt. Vertrauenswürdige Elastic- und OpenSearch-Tests sowie separate Sentinel-Lab- Sonden verifizieren, dass die dokumentierten Scan-Identitäten keine repräsentativen Schreibvorgänge durchführen können.
  • Berichte, HTML, State-Dateien und Fleet-Ausgaben werden auf POSIX-Systemen mit 0600 geschrieben.
  • Anmeldedaten können aus Umgebungsvariablen oder Dateien stammen, wodurch Secrets in Prozessargumenten vermieden werden.
  • --redact ersetzt Tenant-, Regel-, Quellen-, Muster-, Feld-, Abhängigkeits-, Lineage-, Provenienz-, Workspace-, Watchlist-, Template- und Paket-Identifikatoren durch geschlüsselte HMAC-Pseudonyme. Validierte Dependency-Probe-Ausdrücke und ihre KQL-Argumente werden niemals serialisiert. Eine aus zufälligen Bytes generierte --redact-key-file aktiviert ebenfalls die Redaktion und hält Namen über separate Läufe hinweg stabil.
  • Der Exporter bindet standardmäßig an Loopback.
  • deadair hat kein Phone-Home-Verhalten und keine Nutzungstelemetrie.

Behandle Berichte als sensible SOC-Artefakte: Sie identifizieren blinde Detections, Quellennamen, Schema-Lücken und ungenutzte Erfassung.

Dokumentation

Mitwirken

Eröffne ein Issue für Bugs, Vorschläge oder bereinigte Reproduktionen. Maintainer übernehmen Code-Änderungen. Siehe CONTRIBUTING.md für Details.

Lizenz

Apache-2.0.

Kategorien