
威胁情报观察站,聚合 CISA KEV、ThreatFox、URLhaus 和 MalwareBazaar 数据源,支持搜索、变更跟踪以及 STIX/CSV/JSONL 导出。
检查已被利用的漏洞和威胁指标,核验其来源证据,并查看保留的变更。
打开实时观测站 · 试用 KEV 操作演示 · 来源覆盖范围 · 自行运行
观测站将 CISA KEV、ThreatFox、URLhaus 和 MalwareBazaar 整合到一个分析工作区中。使用它可以检查来源记录、区分来源日期与采集时间,并导出有边界的当前状态结果。缺失、过期、已禁用或不可用的数据会始终带有可见标注。
如果七天视图没有返回匹配项,请使用 CURRENT KEV CATALOG 检查现有条目。成功的空结果、过期的来源和不可用的读取具有不同的含义。它们都不能证明你的系统未受影响。
结果: 一条有来源支持的 CVE 记录,你可以检查并引用它,且日期依据和采集限制清晰可见。此工作流不会判定你自己的资产是否存在漏洞。
导出是一个独立的工作流。从 Pulse、Infrastructure、URLs 或 Malware 开始,选择一个时间窗口,并应用可用的搜索或筛选条件。然后选择 Export,查看来源选择和可见页面计数,选择 JSONL、CSV、STIX 2.1、去武器化文本或清单,然后下载结果。
导出覆盖应用所选策略后的已加载页面。请查看已输出和不支持的计数。专用 Exploited 工作区的 KEV 筛选条件不会直接带入导出。
当前来源状态、实质性变更事件和抓取遥测保持相互独立。界面绝不会用演示记录或推断的归因来替代。采集是按需驱动的;此部署不声称持续监控。
实现方式和限制记录如下,包括来源覆盖范围、保留期、来源信息和导出语义。

Pulse — 跨来源关系、来源健康状况和当前状态分析。

Replay — 对保留的 NEW、UPDATED 和 REMOVED 转换进行页面范围内的重建。
其他实时界面包括近似公网 IP 基础设施地理位置,以及第一方 URLhaus / MalwareBazaar 证据视图。这些界面有意不在本 README 中用占位或重复的截图来呈现。
生产截图是来自实时 v1.2.0 观测站的保留来源的截图。它们为展示目的进行了裁剪和缩放/压缩;所显示的证据、时间戳、计数、IOC 值和界面状态均未重新生成或替换。
生产环境的 Worker 由 Cloudflare D1 提供支持。Feed 凭据仅作为服务端的 Cloudflare Worker 密钥保存,浏览器端从不需要这些凭据。
1.2.222.13.0 或更高版本此部署以 demand-driven 模式运行。该仓库现在直接面向标准 Cloudflare Workers;v1.2.2 中有意未启用定时触发器,因此该应用不声称具备持续采集能力。未来的调度器可以在经过独立的正确性与运行验证后,调用同一个 runIngestionCycle() 操作。
浏览器在首次使用时以及打开期间每五分钟会发起一次明确且有界的维护请求:
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 路由都不会调用源适配器。如果本项目日后获得真正受支持的调度器,它可以调用同一个 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:按稳定数据源标识的最新规范化当前状态。它保留首次摄取时间、最新数据源观测时间、最后一次实质性变更、当前哈希、修订计数以及最新摄取结果。observation_events:有意义的 NEW、UPDATED 以及有依据的 REMOVED 证据事件。先前与当前的规范化载荷、哈希以及确定性的字段差异使先前状态可被重建。source_fetch_log:有界的抓取尝试遥测,不包含响应体或凭据。source_ingest_cycles:每次刷新的有界计数,涵盖已抓取、有效、被拒绝、新增、更新、未变更和已移除的记录。source_refresh_lease:基于 D1 的短时按数据源租约,防止同时运行的 isolate 重复执行上游刷新。ingestion_runtime:最新的整体摄取周期健康状况。geo_ip_cache:已验证的近似 IP 地理位置结果以及有界的负缓存条目。成功结果在 30 天后过期;失败的查询在五分钟后重试。过期的 D1 行会在 GEO 请求期间被机会性地移除,isolate 回退缓存上限为 2,000 条。运行时 schema 定义位于 db/schema.ts。初始化会在创建依赖索引之前,向现有 observations 表添加新的当前状态列。
以下问题是有意区分开的:
observations 和已验证的数据源快照回答此问题。/api/observations?window=... 按上游 observedAt 过滤当前观测。observation_events 和 /api/revisions 回答此问题。当前状态不会被不准确地描述为七天历史表。实质性事件账本保留七天。抓取和周期遥测保留两天,且每个数据源上限为 200 行。对于非目录的当前观测,若七天内未再次出现,则会被修剪。CISA 保持为当前状态,因为每次成功响应都是完整目录;从该目录中移除的行在修剪前会保留 30 天。
目前只有 CISA 的缺失才能产生 REMOVED 事件,因为其适配器检索的是完整的当前目录。在有界的 ThreatFox、URLhaus 或 MalwareBazaar 结果中缺失,不会被当作删除处理。
未变更的观测会推进当前的 lastObservedInSnapshotAt/lastIngestedAt,但不会创建事件或增加 revisionCount。lastChangedAt 在后续未变更的观测中保持不变。
Exploited 视图区分:
dateAdded 落在显式 TODAY、7D 或 30D 范围内的记录。亚日级的 Observatory 窗口绝不会被呈现为 CISA 精度。当前目录支持服务端搜索、供应商、产品、新增项、勒索软件关联、添加日期筛选,以及不透明游标分页。它显示 CVE、供应商、产品、漏洞名称、添加日期、截止日期、勒索软件关联和所需操作。它不会虚构 CVSS 评分。
内容哈希覆盖规范化后的证据字段,而非 Observatory 的簿记信息。哈希发生变化时会产生一个 UPDATED 事件,其中包含先前的规范化载荷、新的规范化载荷、先前/新的哈希,以及针对以下内容的确定性差异:
溯源抽屉查询 /api/revisions?id=...,并展示当前哈希、最后一次实质性变更、修订次数、保留的事件以及字段级差异。易变的摄取时间戳不会出现在内容差异中。
该抽屉还为每条被接受的记录展示带版本的证据追踪:被接受的规范化字段、仍然缺失的可选字段、仅用于显示的转换、分类依据以及稳定身份依据。此追踪仅描述保留的证据。被拒绝的上游值不会被保留,也绝不会被赋予合成的 Observatory 身份。拒绝情况以按周期聚合的计数单独表示,并带有受限的字段和原因代码;在该模式之前收集的旧周期会被标记为缺少细分,而不是被重建。
Recent Events 仅显示实质性变更。在完整的 CISA 刷新之后,它不会输出数百条未变化的 SEEN 行。这些观测记录会在来源周期统计中汇总。
默认的 Briefing 视图将保留的实质性事件账本与仅存储在当前浏览器中的带版本确认游标进行比较。首次使用和已清除的存储会被标记为初始基线,而非新活动。如果保存的游标早于保留的账本,界面会说明无法证明存在完整的增量。
确认操作绝不会修改或删除服务器事件。游标可以导出和导入为 JSON,以便有意进行设备转移;它不会被呈现为账户同步状态,生成的设备标识符也绝不会发送到服务器。
Briefing 总计描述的是当前返回的账本页面,并被标记为受显示/页面范围限制。它们不会被呈现为完整保留账本的总计。
导入的确认时间戳在存储或比较之前会经过严格验证并规范化为 UTC ISO-8601。浏览器存储被视为可选项:本地存储被阻止或失败时会产生紧凑的内联错误,绝不会导致 Briefing 崩溃。
Export 工作台将已加载并验证的可见页面格式化为 CSV、JSONL、STIX 2.1、defanged 文本,或包含所应用策略和可用记录哈希的证据清单。活动的本地搜索和来源范围会带入 Export。空的来源允许列表会导出零条记录。STIX 将 CISA CVE 表示为 Vulnerability 对象,并将已验证的文件哈希——包括 MalwareBazaar SHA-256 值——表示为 Indicator 对象。已选择、已发出和不支持的计数是相互独立的;不支持的记录会在捆绑包元数据中披露,而不是被静默丢弃。Export 不执行任何上游收集。缺失的置信度仍然缺失,跨来源分歧仍然作为独立记录保留,已移除的账本事件绝不会静默进入当前状态导出。这些产物是证据传输载体,而非防火墙阻断建议。
已过期的来源使用 1、2、5、15 和 30 分钟的有界重试延迟。有效的更大 Retry-After 会被遵守,最长一小时。在退避期间,有效的先前快照会作为过期数据提供;失败的空来源保持离线。
在获取之前,符合条件的源会获取一个短期的条件性 D1 租约。其他 isolate 无法替换未过期的持有者,因此只有一次刷新会继续进行。如果 D1 不可用,系统会明确报告降级为仅快照模式以及 isolate 内存租约;该回退方案不会被描述为分布式。
当前观测、源专属工作区、本地搜索、CISA 目录、重要事件和记录修订均使用有界的服务端游标查询。源和类型约束在排序和分页之前应用。游标编码稳定的排序元组,并经过长度/字符/模式校验,格式错误时以 HTTP 400 失败关闭。浏览器绝不会仅仅为了在本地分页而接收完整的七天数据集。
API 限流器是一个内存中的固定窗口计数器,作用域为单个 Worker isolate。它被准确地报告为尽力而为的 isolate 本地保护,而非全局权威的 Cloudflare 速率限制。普通读取限制为每个上报的客户端 IP 每分钟 120 次请求;摄取拥有独立的每分钟六次请求桶,地理位置拥有独立的每分钟十二次请求桶。D1 写入不会被添加到每次读取中,仅仅为了夸大这一控制措施。