
CISA KEV、ThreatFox、URLhaus、MalwareBazaarのフィードを集約し、検索、変更追跡、STIX/CSV/JSONLエクスポート機能を備えた脅威インテル監視台。
悪用された脆弱性と脅威指標を調査し、そのソース証拠を確認し、保持された変更をレビューします。
ライブオブザバトリーを開く · KEVウォークスルーを試す · ソースカバレッジ · 自分で実行する
オブザバトリーは、CISA KEV、ThreatFox、URLhaus、MalwareBazaarを1つのアナリストワークスペースに統合します。ソースレコードを調査し、ソース日付と収集時刻を区別し、範囲を限定した現在状態の結果をエクスポートするために使用します。欠落、古い、無効化、または利用不可のデータは、常に明示的にラベル付けされたままになります。
7日間ビューで一致するものが返されない場合は、CURRENT KEV CATALOG を使用して既存のエントリを調査します。成功した空の結果、古いソース、利用不可の読み取りは、それぞれ異なる意味を持ちます。いずれも、あなたのシステムが影響を受けていないことを立証するものではありません。
結果: 日付の基準と収集の制限が可視化された、調査および参照が可能なソース裏付けのあるCVEレコードです。このワークフローは、あなた自身の資産が脆弱かどうかを判定するものではありません。
エクスポートは別のワークフローです。Pulse、Infrastructure、URLs、または Malware から開始し、時間枠を選択して、利用可能な検索またはフィルターを適用します。次に Export を選択し、ソースの選択と表示ページの件数を確認し、JSONL、CSV、STIX 2.1、defang済みテキスト、またはマニフェストを選択して、結果をダウンロードします。
エクスポートは、選択したポリシーを適用した後の読み込み済みページを対象とします。出力件数と未サポート件数を確認してください。専用の Exploited ワークスペースのKEVフィルターは、Exportに直接引き継がれ ません。
現在のソース状態、重要な変更イベント、取得テレメトリは分離されたままです。インターフェースはデモレコードや推測された帰属で置き換えることは決してありません。収集はオンデマンド駆動であり、このデプロイメントは継続的な監視を主張するものではありません。
実装と制限事項は以下に文書化されており、ソースカバレッジ、保持、来歴、エクスポートのセマンティクスを含みます。

Pulse — クロスソースの関係、ソースの健全性、現在状態の分析。

Replay — 保持された NEW、UPDATED、REMOVED の遷移をページ単位で再構築したもの。
その他のライブサーフェスには、おおよそのパブリックIPインフラの地理情報や、ファーストパーティのURLhaus / MalwareBazaar証拠ビューが含まれます。これらのサーフェスは、このREADMEでは意図的にプレースホルダーや重複したスクリーンショットで表現されていません。
本番キャプチャは、ライブv1.2.0オブザバトリーからのソースを保持したスクリーンショットです。これらはプレゼンテーション用に切り抜き、サイズ変更/圧縮されていますが、表示される証拠、タイムスタンプ、件数、IOC値、インターフェース状態は再生成または置換されていません。
本番環境の Worker は Cloudflare D1 によって支えられています。フィードの認証情報はサーバー専用の Cloudflare Worker シークレットのままであり、ブラウザ側で必要になることはありません。
1.2.222.13.0 以降このデプロイは demand-driven モードで動作します。リポジトリは現在、標準の Cloudflare Workers を直接ターゲットとしています。v1.2.2 ではスケジュールトリガーは意図的に有効化されていないため、アプリケーションは継続的な収集を主張しません。将来のスケジューラーは、別途の正確性および運用上の検証を経た後、同じ runIngestionCycle() 操作を呼び出すことができます。
ブラウザは初回利用時および開いている間の5分ごとに、明示的な範囲指定付きのメンテナンスリクエストを送信します:
POST /api/ingest
↓
runIngestionCycle()
↓
configuration → TTL → backoff → D1 lease → fetch → normalize → validate
↓
snapshot cache + current observations + material events + cycle statistics
通常の読み取りは別個かつローカルです:
GET /api/observations → D1 current state, scoped before pagination
GET /api/search → D1 current state, scoped before pagination
GET /api/kev → D1 current CISA catalog
GET /api/events → D1 material change ledger
GET /api/geo → local observations + bounded cached IP enrichment
これらの GET ルートはいずれもソースアダプターを呼び出しません。このプロジェクトが後に真にサポートされるスケジューラーを獲得した場合、2 つ目のリフレッシュ実装を作成することなく、同じ runIngestionCycle() 操作を呼び出すことができます。
| ソース | 認証情報 | TTL | 実際のカバレッジ |
|---|---|---|---|
| CISA KEV | なし | 30 分 | 完全な現在の検証済みカタログ |
| ThreatFox | THREATFOX_AUTH_KEY | 15 分 | 要求された 24 時間の IOC ウィンドウ |
| URLhaus | URLHAUS_AUTH_KEY | 15 分 | recent エンドポイントが返す最新 500 レコード |
| MalwareBazaar | MALWAREBAZAAR_AUTH_KEY | 15 分 | エンドポイントが返す最新 100 メタデータレコード |
カバレッジはソースごとに表示されます。境界付き API が完全なカタログとして提示されることはありません。
DB バインディングは個別のデータセットを所有します:
threat_source_cache と threat_source_cache_chunks: ソースごとの最新の検証済みスナップショットで、世代キー付きチャンクに保存されます。observations: 安定したソース ID ごとの最新の正規化された現在状態。初回取り込み、最新のソース観測、最後の実質的変更、現在のハッシュ、リビジョン数、最新の取り込み結果を保持します。observation_events: 意味のある NEW、UPDATED、および正当化可能な REMOVED の証拠イベント。以前と現在の正規化ペイロード、ハッシュ、および決定論的なフィールド差分により、以前の状態を再構築できます。source_fetch_log: レスポンスボディや認証情報を含まない、境界付きのフェッチ試行テレメトリ。source_ingest_cycles: フェッチ済み、有効、拒否、新規、更新、変更なし、削除済みレコードのリフレッシュごとの境界付きカウント。source_refresh_lease: 同時実行されるアイソレートが上流のリフレッシュを重複して行うのを防ぐ、D1 に基づくソースごとの短命リース。ingestion_runtime: 取り込みサイクル全体の最新のヘルス状態。geo_ip_cache: 検証済みの概算 IP ジオロケーション結果と境界付きのネガティブキャッシュエントリ。成功した結果は 30 日後に期限切れになり、失敗したルックアップは 5 分後に再試行されます。期限切れの D1 行は GEO リクエスト中に機会的に削除され、アイソレートのフォールバックは 2,000 エントリに制限されます。ランタイムスキーマ定義は db/schema.ts にあります。初期化では、依存インデックスを作成する前に、新しい現在状態のカラムを既存の observations テーブルに追加します。
これらの問いは意図的に異なります:
observations と検証済みソーススナップショットがこれに答えます。/api/observations?window=... は上流の observedAt によって現在の観測をフィルタリングします。observation_events と /api/revisions がこれに答えます。現在状態は、7 日間の履歴テーブルとして不正確に記述されることはありません。実質的イベント台帳は 7 日間保持されます。フェッチとサイクルのテレメトリは 2 日間保持され、ソースごとに 200 行に制限されます。7 日間再出現しなかった非カタログの現在観測は削除されます。CISA はすべての成功レスポンスが完全なカタログであるため現在のままです。そのカタログから削除された行は、削除される前に 30 日間利用可能なままです。
現在、CISA の不在のみが REMOVED イベントを作成できます。そのアダプターが完全な現在のカタログを取得するためです。境界付きの ThreatFox、URLhaus、または MalwareBazaar の結果からの不在は、削除として扱われません。
変更のない観測は現在の lastObservedInSnapshotAt/lastIngestedAt を進めますが、イベントを作成したり revisionCount を増やしたりしません。lastChangedAt はその後の変更のない観測でも保持されます。
Exploited ビューは以下を分離します:
dateAdded が明示的な TODAY、7D、または 30D の範囲内に収まるレコード。1 日未満の Observatory ウィンドウが CISA の精度として提示されることはありません。現在のカタログは、サーバーサイド検索、ベンダー、製品、新規追加、ランサムウェア関連、追加日フィルター、および不透明カーソルによるページネーションをサポートしています。CVE、ベンダー、製品、脆弱性名、追加日、期限日、ランサムウェア関連、および必要な対応を表示します。CVSSスコアを捏造することはありません。
コンテンツハッシュは正規化されたエビデンスフィールドを対象とし、Observatoryの帳簿管理は含みません。ハッシュが変更されると、以前の正規化ペイロード、新しい正規化ペイロード、以前/新しいハッシュ、および以下に対する決定論的diffを含むUPDATEDイベントが生成されます:
プロベナンスドロワーは/api/revisions?id=...をクエリし、現在のハッシュ、最終的な実質的変更、リビジョン数、保持されているイベント、およびフィールドレベルのdiffを表示します。揮発性の取り込みタイムスタンプはコンテンツdiffには現れません。
ドロワーはまた、受け入れられたすべてのレコードについてバージョン管理されたエビデンストレースを表示します:受け入れられた正規化フィールド、存在しないままのオプションフィールド、表示専用の変換、分類の根拠、および安定した識別の根拠。このトレースは保持されたエビデンスのみを記述します。拒否された上流の値は保持されず、合成されたObservatory識別子が割り当てられることもありません。拒否は、境界付きのフィールドコードと理由コードを伴うサイクルごとの集計カウントとして別途表現されます。そのスキーマより前に収集された古いサイクルは、再構築されるのではなく、内訳を欠くものとしてラベル付けされます。
Recent Eventsは実質的な変更のみを表示します。CISAの完全なリフレッシュ後に、変化のない数百行のSEEN行を出力することはありません。それらの目撃情報はソースサイクル統計に要約されます。