mcpField
V
vuln-research

vuln-research

github.com/briiirussell安全478366 次安装1 天前更新
代码仓库

关于 vuln-research

vuln-research 是面向安全与开发团队的 CVE 研究技能,用于评估漏洞是否适用于自身环境。它结合受影响版本、代码路径可达性、公开 PoC 和利用情报,支持修补、缓解或接受风险的决策。

主要功能

  1. 01查阅漏洞权威来源
  2. 02确认受影响版本范围
  3. 03分析漏洞代码路径可达性
  4. 04调查公开 PoC 与在野利用
  5. 05比较修补、缓解和风险接受方案

适用场景

  1. 01评估新披露 CVE 对项目的影响
  2. 02确定依赖漏洞是否在实际使用中可达
  3. 03为暂不能修补的漏洞制定缓解方案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/briiirussell/cybersecurity-skills --skill vuln-research

安装后在 Claude Code 中输入/vuln-research确认已加载。

详细介绍

漏洞研究 — CVE 深入分析与适用性评估

CVE 披露后,问题不是“我们是否有这个包?”——dependency-audit 会回答这个问题。真正要问的是:

  • 在我们的使用场景中,是否实际调用了存在漏洞的代码路径?
  • 是否有公开的概念验证(PoC),让漏洞很容易被利用?
  • 是否已有补丁?何时发布?如果无法在 24 小时内部署,我们的暴露窗口有多长?
  • 如果无法打补丁,有什么缓解措施?
  • CISA 是否将其列为正在遭利用的漏洞?

本技能将带你完整走过这一工作流。它与 dependency-audit(用于发现 CVE)和 finding-triage(用于完成处置闭环)配合使用。

授权

仅研究用户拥有或获授权评估的代码、依赖项和系统。阅读安全公告、补丁和公开文章没有问题。仅在用户控制的隔离环境中复现漏洞,切勿针对未获授权测试的在线系统进行测试。披露前的详细信息只能提供给有权知悉的人员(参见“边界”)。

工作流

步骤 1 — 获取权威来源

从权威描述着手;后续资料都只是摘要,有时还会出错。

  • NVD 记录 — https://nvd.nist.gov/vuln/detail/CVE-YYYY-NNNNN
  • 厂商安全公告 — 搜索厂商的安全页面;其中通常对受影响版本和修复内容的描述最准确
  • GitHub 安全公告 — https://github.com/advisories/GHSA-...(通常比 NVD 更简洁,有时还包含 NVD 未提及的细节;请查看上游项目的安全选项卡)
  • CISA 已知遭利用漏洞目录 — https://www.cisa.gov/known-exploited-vulnerabilities-catalog。如果 CVE 列在其中,应视为正在遭利用的漏洞——在 CISA 规定的到期日之前打补丁
  • EPSS 评分 — https://www.first.org/epss/ — 漏洞利用预测评分系统;用于估算未来 30 天内漏洞被利用的概率。可用于在高 CVSS、低 EPSS 与中 CVSS、高 EPSS 之间进行权衡
步骤 2 — 确认受影响版本

厂商安全公告有时会使用模糊表述(“影响 X 之前的版本”);请确定确切范围。

  • 查看厂商的发行说明以及修复提交的历史记录
  • 对于开源项目:找到补丁提交(通常会在安全公告中提及),并运行 git tag --contains <commit>,查看哪些发行版包含了修复
  • 对于闭源项目:安全公告是唯一来源——仔细核对版本比较结果(并非总是遵循 semver)
  • 对于 monorepo 或重新发布的项目:确认你依赖的任何分支或发行版也已合入相同修复
步骤 3 — 映射到你的环境
# Is the package installed at all?
npm ls <package>           # or yarn why <package>, pnpm why <package>
pip show <package>          # or pip list | grep <package>
bundle info <gem>
go list -m all | grep <package>

# What version exactly?
# Inspect lockfiles directly — the resolved version is what runs, not the range
grep -A1 '"<package>"' package-lock.json

# Where is it used?
# Direct dependency, transitive, dev-only?
npm ls <package> --omit=dev  # production-reachable?

如果是传递依赖,请沿依赖树向上追溯,直到找到引入它的直接依赖。覆盖、固定或替换版本都要在该依赖处处理。

步骤 4 — 可达性分析(最关键的一步)

只有实际调用存在漏洞的代码路径,CVE 才可能被利用。这一步可以从 dependency-audit 的噪声中筛出真正的风险。

阅读补丁。 修复提交会准确显示哪个函数、文件或 API 存在漏洞。然后:

# Does your code call the vulnerable function directly?
grep -rn "vulnerableFunction\|VulnerableClass" . \
  --include="*.{js,ts,py,rb,go,java}" \
  --exclude-dir=node_modules

# Does the dependency call it internally even if you don't?
# Trickier — you have to read the parent's source. For an indirect call:
cd node_modules/<package>
grep -rn "vulnerableFunction" .

常见的可达性分析结果:

  • **可达,直接调用:**你会调用有问题的代码。优先级最高——立即打补丁或采用临时解决方案
  • **可达,间接调用:**你的依赖项会在正常使用过程中调用有问题的代码。优先级仍然很高
  • **不可达:**有问题的代码位于你不会使用的功能中(不同模块、不同入口点或不同运行时)。优先级较低;仍建议打补丁,但不会违反 SLA
  • **未知:**记录为未知,并采取审慎做法,尽快打补丁

没有展示分析过程,就不要写“不可达”。当使用方式发生变化时,未来的你会需要重新检查。

第 5 步 — 检查公开 PoC 和活跃利用情况
  • GitHub: 在代码和仓库中搜索 CVE-YYYY-NNNNN — 漏洞披露后几天内就会出现 PoC
  • CISA KEV: 如果漏洞列在其中,说明它正在现实环境中被利用
  • Exploit-DB: https://www.exploit-db.com/ — 已确认的漏洞利用
  • 供应商的安全邮件列表: 有时能提供最新情报
  • GreyNoise: https://www.greynoise.io/ — 全网扫描遥测数据;如果攻击者正在大规模扫描此漏洞,你的暴露窗口已经开启
  • Twitter / Mastodon 安全圈 — 可获取最新情报,但采取行动前请对照权威来源进行核实

EPSS 解读:

EPSS 分数含义
> 0.7未来 30 天内很可能遭到利用 — 按紧急事项处理
0.1 – 0.7存在显著的被利用可能性 — 按常规周期修补
< 0.1预测被利用的可能性较低 — 方便时修补

EPSS 基于实证进行调整;与 CVSS 相比,它与实际漏洞利用情况的相关性更高。

第 6 步 — 修补 / 缓解 / 接受风险

修补(首选):

  • 如果已有修补版本,且你能快速部署 — 升级软件包、运行测试并部署
  • 对没有直接修补方案的传递依赖,使用 overrides(npm)/ resolutions(yarn)/ pin 强制指定修补后的版本

缓解(无法修补时):

  • 如果代码不需要受影响的功能,则将其禁用
  • 添加请求级过滤器(WAF 规则、代理过滤器),拦截已知的恶意输入模式 — 对于通过 HTTP 发起的漏洞利用,这通常可以在几小时内完成部署
  • 对易受攻击的服务进行网络分段,使其无法从不可信网络访问
  • 添加检测(见 siem-detection),即使缓解措施失效,也能发现漏洞利用尝试

接受风险(仅在确有充分理由时):

  • 在你的使用场景中,相关代码路径确实不可达
  • 易受攻击的组件位于仅供内部使用且不会接收不可信输入的服务中
  • 补偿性控制措施足以降低漏洞利用的可能性 / 影响,因而值得接受风险
  • 请参见 owasp-audit 的 Report Format 中的 Accepted Risk 处置方式 — 三个必填字段(原因、补偿性控制措施、重新评估触发条件)。不得例外。
第 7 步 — 记录并完成闭环

作出决定后:

  • 在漏洞跟踪系统(Jira、Linear、Vanta 等)中记录决定
  • 对于接受风险:设置重新评估日期并添加日历提醒
  • 对于修补:通过 npm ls / lockfile 确认实际部署的版本已修补(发布部署和作出决定不是一回事)
  • 对于缓解措施:编写运行手册条目,让接手的人了解该缓解措施的存在及其原因

常见的调研陷阱

  • 公告称“在 vX 中修复”,但软件包从未发布 vX — 这会发生在已弃用的项目中。使用 overrides 指向已知安全的分支,或替换该依赖
  • 供应商悄然修补了漏洞 — 修复在 CVE 发布前就已提交;公告针对的是悄然修复之前的版本。请确认你的版本包含修复提交
  • CVE 适用于你也在使用的同系列软件包 — 代码相同,名称不同(分支、单体仓库中的同系列软件包)。搜索你使用的每个软件包是否包含易受攻击的函数,而不只是公告中提到的软件包
  • CVSS 较高,但 EPSS 较低 — 通常意味着现实环境中存在复杂的前置条件。仍应修补,但不必恐慌
  • CVSS 中等,但 EPSS 较高 — 通常意味着该漏洞已在大规模扫描中遭到利用。按紧急事项处理
  • PoC 需要难以获取的身份验证凭据 — 但你的应用让获取这些凭据变得容易(开放注册)。攻击者评级中的“复杂度”并未考虑 你的 威胁模型

输出格式

# Vulnerability Assessment: CVE-YYYY-NNNNN
## Date: [date]
## Assessor: [name]

### Summary
- **Title:** [from advisory]
- **CVSS / EPSS:** [scores]
- **CISA KEV:** [yes / no, and due date if listed]
- **Affected versions:** [exact range]
- **Our version:** [version + how installed]

### Reachability
- **Direct call:** [yes / no — with evidence]
- **Indirect via dependency:** [yes / no — with evidence]
- **Verdict:** Reachable / Not reachable / Unknown

### Exploitation availability
- **Public PoC:** [yes / no — link]
- **Active exploitation:** [yes / no — source]

### Decision
- [ ] Patch (target deploy: [date])
- [ ] Mitigate (controls: [list]; re-evaluate: [date])
- [ ] Accept risk (why / compensating controls / re-eval trigger)

### Action items
| Item | Owner | Deadline |
|------|-------|----------|

### References
[Links to advisory, patch commit, PoC, EPSS, CISA, etc.]

边界

  • 仅研究影响用户有权访问的代码、依赖项或系统的漏洞
  • 不开发、武器化或分发漏洞利用程序——仅出于评估适用性的目的阅读现有 PoC
  • 对于仅限内部的漏洞或预披露情报,未经授权不得转发
  • 如果研究发现他人代码中尚未报告的漏洞,应遵循负责任披露原则——不得公开,也不得利用
  • 拒绝使用 CVE 研究结果攻击系统的请求

参考资料

  • NVD(国家漏洞数据库)
  • CISA 已知遭利用漏洞目录
  • GitHub 安全公告数据库
  • EPSS(漏洞利用预测评分系统)——FIRST.org
  • MITRE CVE — cve.mitre.org(现在会重定向到 cve.org)
  • Exploit-DB
  • GreyNoise — 互联网扫描遥测数据
  • “Patch Tuesday” / 特定供应商的发布节奏,可作为了解披露时间的背景信息
  • Project Zero 披露政策——负责任披露时间线的参考

评论

支持 Markdown