neoalexy/ThreatWatch

GitHub: neoalexy/ThreatWatch

ThreatWatch:CVE威胁情报工具,结合CVSS和EPSS识别实际被利用的漏洞。

Stars: 0 | Forks: 0

# 威胁监控 CVE威胁情报-高CVSS并不意味着有人在尝试。 ## 目录 1. [动机](#motivation) 2. [架构](#architecture) 3. [数据管道](#data-pipeline) 4. [设计决策](#design-decisions) 5. [安装](#installation) 6. [使用](#usage) 7. [示例输出](#sample-output) 8. [限制和未来工作](#limitations-and-future-work) 9. [堆栈](#stack) ## 动机 获取CVE和提取字段是容易的部分。弄清楚一个有用的摘要实际上看起来是什么样子才是真正有趣的地方。 明显的方法是按CVSS排序。但CVSS衡量的是理论影响-在理想条件下事情可能会变得多糟糕。它不会告诉你是否有人在尝试。 这个月的数据使问题具体化。得分最高的10个CVE的CVSS都是10.0。它们的平均EPSS是0.08%。litellm是一个位于应用程序和语言模型API之间的AI/LLM编排库,CVSS为9.8,EPSS为54.3%。它没有出现在按分数排名的前10位中。它是数据集中最可操作的结果。 这就是ThreatWatch所围绕的。CVSS和EPSS回答不同的问题,你需要两者。 ## 架构 ``` flowchart TD NVD[NVD API] --> F[fetcher.py] EPSS[EPSS API] --> F F -->|raw CVE list| P[parserr.py] P -->|structured CVEs| A[analyzer.py] A -->|severity counts| M[main.py] A -->|top vendors + trends| M A -->|exploitability coefficient| M A -->|watched alerts| M A -->|pre-emerging threats| M A -->|easily exploitable| M A -->|top 10 scoring| M M --> T[terminal output] ``` 每个模块只有一个任务。`fetcher.py`处理所有网络I/O。`parserr.py`从原始NVD JSON中提取结构化数据。`analyzer.py`生成所有信号-没有输出逻辑,没有API调用。`main.py`协调和渲染。 ## 数据管道 **获取** NVD CVE API v2.0在每次运行时查询两次-当前周期和前一个等效窗口以比较趋势。由于NVD不接受分数范围查询,只接受确切的严重性标签,因此HIGH和CRITICAL在单独的请求中获取。 分页通过`startIndex`自动处理。如果没有API密钥,则速率限制为每30秒5个请求,因此请求以6秒的间隔进行,并在带有`Retry-After`头支持的情况下对403/429响应进行指数退避。 在收集所有NVD数据后,EPSS分数以每批100个CVE ID的请求量获取。 **解析** 对于每个CVE: | 字段 | 来源 | |---|---| | CVE ID | `cve.id` | | 发布日期 | `cve.published[:10]` | | CVSS分数 | `cvssMetricV31[type=Primary].baseScore` | | 严重性 | `cvssMetricV31[type=Primary].baseSeverity` | | 向量字符串 | `cvssMetricV31[type=Primary].vectorString` | | 描述 | `descriptions[lang=en].value` | | 供应商 | 见设计决策 | | CWE组 | `weaknesses[].description[].value`映射到类别 | | EPSS | 从FIRST.org批量响应中交叉引用 | | 容易利用 | 向量字符串中的AV:N + AC:L + PR:N | | 争议严重性 | 主要与次要分数差大于2.0 | ## 设计决策 **主要受影响的供应商** 这个简报留给了这个。NVD没有供应商字段-供应商位于`configurations.nodes.cpeMatch`中的CPE字符串内,格式为`cpe:2.3:type:vendor:product:version`。 提取层次结构: 1. CPE数据-当状态为`已分析`时可靠 2. 描述模式匹配-对常见的漏洞描述模式进行正则表达式匹配,恢复一些没有CPE的CVE 3. `unknown`-当什么也不起作用时。 处于`等待分析`或`已推迟`状态的CVE没有CPE。这些通常是最新条目,有时是EPSS最高的。它们被标记为未知,并仅从供应商排名中排除,但它们仍然出现在得分最高的前10个和预出现威胁中,其中不需要供应商归属。 供应商有动机将他们自己的漏洞评分降低。当CNA次要分数与NVD主要分数相差超过2.0点时,CVE被标记为争议。 受监视的供应商在`config.py`中定义。在生产中,这将根据组织实际使用的SaaS工具从文件或环境变量中加载。 **CVSS与EPSS** CVSS是静态的。当漏洞利用代码发布或攻击者开始积极针对某物时,它不会更新。EPSS基于基于真实漏洞利用遥测的每日重新计算-它回答的是现在实际上正在被针对什么。 单独使用任何一个都不够。CVSS 10.0 / EPSS 0.0%表示最大理论损害,现实世界活动几乎为零。CVSS 7.5 / EPSS 40%表示积极武器化。ThreatWatch使用两者并使差异可见。 **供应商可利用性系数** 每个供应商的`CVE计数 x 平均EPSS`。 本月,Microsoft有56个CVE,平均EPSS为0.1%,系数为5.6。litellm有5个CVE,平均EPSS为10.9%,系数为54.5。系数揭示了实际利用概率集中的地方,而不仅仅是CVE量高的地方。 **预出现威胁** 来自非主流供应商的EPSS高于15%的CVE。这些没有出现在按量排名的前5位中,但它们是最有可能转向积极利用的。 每个描述都扫描了SaaS/云攻击表面信号-SaaS/云攻击表面信号,OAuth和令牌引用,API模式,AI/LLM基础设施关键词,供应链指标,身份和SSO组件。当找到匹配项时,它将作为标签出现。如果没有找到匹配项,则显示截断的描述,因为没有标签也是信息。 15%阈值:低于该阈值,信号与噪声比会变差。高于该阈值,有东西正在移动。 ## 安装 ``` pip install -r requirements.txt ``` 不需要API密钥。如果没有一个,则脚本会自动尊重NVD的5 req/30s速率限制。免费密钥可在[nvd.nist.gov](https://nvd.nist.gov/developers/request-an-api-key)获取,每30秒50个请求。 ## 使用 ``` python main.py # last 30 days python main.py --days 60 # custom period python main.py --vendor okta # filter by vendor ``` ## 示例输出 ![ThreatWatch输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/5979eefb6a072733.png) ## 限制和未来工作 **供应商提取**采用第一个CPE匹配。在供应链CVE中,漏洞通过库传播到下游消费者时,第一个匹配通常是库,而不是受影响的产品。对`vulnerable: true`进行过滤并去重将更准确。 **NVD丰富后置队列** - NIST已承认NVD无法以相同的速度丰富每个CVE。2026年3月之前的CVE正在被移动到“未安排”状态,为依赖于NVD元数据的工具创造了盲点。生产版本将交叉引用VulnCheck或OSV作为后备。 **利用时间压缩** - Mandiant M-Trends 2026将平均利用时间定为负七天,这意味着利用通常发生在补丁存在之前。此工具仅操作已发布的CVE。与PoC跟踪(Exploit-DB、GitHub安全通告)集成将缩小这一差距。 **CISA KEV集成** - EPSS衡量概率,KEV确认现实。EPSS高于20%且KEV存在将几乎肯定触发操作。 **无持久性** -每次运行都是无状态的。SQLite存储将启用真实的历史趋势和基于差异的警报:litellm上周没有CVE,这周有5个,EPSS为54% -这个差异比绝对计数更有可操作性。 **AI/LLM供应商覆盖范围** - 2026年,AI工具(LangChain、litellm、OpenClaw、Langflow)的CVE量正在迅速上升,因为AI辅助漏洞发现规模扩大。当前的SaaS信号标记部分覆盖了这一点,但一个具有更紧密关键词匹配的专用类别将提高信号质量。 **趋势窗口** -两个连续的30天窗口对补丁发布周期敏感。90天滚动基线将减少批量安全更新的供应商产生的噪声。 ## 堆栈 - [NVD CVE API v2.0](https://nvd.nist.gov/developers/vulnerabilities) - [EPSS API - FIRST.org](https://www.first.org/epss/api) - [httpx](https://www.python-httpx.org/) - [rich](https://github.com/Textualize/rich)
标签:AMSI绕过, API集成, CVE威胁情报, CVSS评分, EPSS评分, FIRST.org, NVD, 代码示例, 可观测性, 威胁情报工具, 威胁检测, 安全响应, 安全架构, 安全漏洞, 技术趋势, 数据分析, 数据提取, 数据管道, 软件工程, 运行时操纵, 逆向工具, 预检测