アップデート一覧に戻る
New releaseAug 8, 2026

deadair v0.5.1

SIEM内でブラインド状態になっている検出ルールを見つけ出します

共有

deadair - SIEM検知カバレッジの健全性

CI Release Go 1.26 License: Apache-2.0

オープンソースのSIEM検知ヘルスチェック。
テレメトリが欠落、陳腐化、遅延、またはスキーマ非互換のために盲目となっている有効な検知を見つけ出します。

ローカルで実行 · 読み取り専用 · エージェント不要 · テレメトリのアップロードなし

技術解説を読む · Detection Engineering Weeklyで紹介

動作不能な検知と機能低下した検知を示す、使い捨てElasticラボのdeadairスキャン

意図的に欠落、陳腐化、遅延、未使用のテレメトリを含む使い捨てElasticラボの実際のスキャン。make record-scan-labで再現できます。

なぜdeadairか

ルールが有効で、スケジュールされ、エラーがない状態でも、そのルールが必要とするデータは消えていることがあります。deadairは稼働中のルールインベントリを読み取り、バックエンドのネイティブなセマンティクスを使用して各ルールの入力を解決し、その背後にある具体的なソースをチェックします。

以下を検出します:

  • インデックス、エイリアス、またはデータストリームのセレクタが何も解決しないルール;
  • 一致するソースがすべて陳腐化または空であるルール;
  • フィールド欠落または取り込み遅延による盲目ウィンドウを抱えて実行されているルール;
  • 有効な検知が誰も読み取らない健全なテレメトリ。

deadairは現在、Elastic SecurityとOpenSearch Security Analyticsに対応しています。

クイックスタート

macOS、Linux、Windows用のバイナリをGitHub Releasesからダウンロードするか、Goでインストールします:

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

読み取り専用のSIEM認証情報を接続します:

deadair setup elastic   # print the least-privilege setup
deadair check           # verify the credential can scan
deadair scan            # assess live rules and telemetry

終了コードは安定しています:0は健全、1は検出事項あり、2はスキャン失敗を意味します。

動作の仕組み

Stagedeadairの動作
Inventory有効な検知と、それらが宣言する入力を読み取る
ResolveElasticまたはOpenSearchに、インデックスパターン、エイリアス、データストリーム、セレクタ、リモート入力を解決させる
Measureドキュメント数、最新イベント、ストレージ、フィールドマッピング、スキーマ履歴、取り込み遅延を確認する
Report各判定の根拠となるエビデンスとともに、ターミナル、JSON、HTML、フリートロールアップ、Prometheusメトリクスを出力する

deadairは、検知の観測可能なテレメトリ前提条件が存在し、健全であるかどうかを検証します。ルールロジックが正しいことや、シミュレートされた攻撃がアラートを生成することを証明するものではありません。それらのレイヤーについては、静的ルール検証やエンドツーエンドの検知テストと組み合わせてください。

検出事項

検出事項意味最初に確認すること
一致するソースなしルールの入力がすべて可視のインデックスまたはデータストリームに解決されないパターン変更、統合の欠落、認証情報のスコープ
全ソースが陳腐化または空解決されたすべてのソースが現在使用できないソースの更新頻度と取り込み経路
フィールド欠落宣言されたフィールドが一致するすべてのソースマッピングに存在しないパーサー、パッケージ、マッピングの変更
遅延による盲目ウィンドウ測定された取り込み遅延がルールのルックバックマージンを超えているルール間隔、ルックバック、タイムスタンプオーバーライド、パイプラインレイテンシ
ソースの劣化ソースが陳腐化、空、低ボリューム、またはスキーマ乖離しているソース履歴と想定されるメンテナンス
未使用テレメトリデータは保存されているが、有効なローカル検知が解決しない無効化されたルールと意図的な収集

すべての判定は、設定された認証情報が参照できる範囲に限定されます。JSONレポートには、設定された式、解決されたソース、解決方法、評価ステータス、バックエンドメタデータ、機能のエビデンスが含まれます。実例とトリアージについては使用ガイドを参照してください。

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

ElasticまたはOpenSearch用に文書化された最小権限ロールを使用してください。信頼された統合スイートは、それらの認証情報による書き込み試行が拒否されることも実証します。

CI、フリート、モニタリング

# 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 は候補ルールを無関係なバックログから分離します。diff は決定的に秘匿化されたレポートに対して機能します。フリート設定はシークレット値を保存するのではなく、環境変数経由でシークレットを参照します。

候補ルールゲートとその後のレポート差分を示すdeadair

使い捨てのElasticスタックに対する候補ルールのゲートとレポートの差分。

本番パターンについては、CIゲートの動作フリートおよびMSSP展開Prometheusの例を参照してください。

テスト済みバックエンド

統合ワークフローは現在、以下の正確なバージョンをテストしています:

バックエンドライブCIの正確なバージョン
Elastic Security8.19.19, 9.4.4
OpenSearch Security Analytics2.19.6, 3.7.0

他のバージョンでも動作する可能性がありますが、現在のCIマトリクスの対象外です。

セキュリティモデル

  • すべてのバックエンドアクセスは読み取り専用です。信頼された統合テストは、文書化された認証情報が書き込みできないことを実証します。
  • レポート、HTML、状態ファイル、フリート出力は、POSIXシステムでは 0600 で書き込まれます。
  • 認証情報は環境変数またはファイルから取得できるため、プロセス引数にシークレットが含まれません。
  • --redact は、テナント、ルール、ソース、パターン、フィールド名を安定したダイジェストに置き換えます。
  • エクスポーターはデフォルトでループバックにバインドします。
  • deadairには、ホームへの通信や使用状況テレメトリはありません。

レポートは機密性の高いSOC成果物として扱ってください。レポートは盲目の検知、ソース名、スキーマのギャップ、未使用の収集を特定します。

ドキュメント

コントリビューション

バグ報告、サニタイズ済みフィクスチャ、正しさの検証ケース、ドキュメント、バックエンドの提案を歓迎します。CONTRIBUTING.mdから始め、アダプター作業にはバックエンドRFCテンプレートを使用してください。

ライセンス

Apache-2.0.

カテゴリ