关于 vuln-research
vuln-research 是面向安全与开发团队的 CVE 研究技能,用于评估漏洞是否适用于自身环境。它结合受影响版本、代码路径可达性、公开 PoC 和利用情报,支持修补、缓解或接受风险的决策。
主要功能
- 01查阅漏洞权威来源
- 02确认受影响版本范围
- 03分析漏洞代码路径可达性
- 04调查公开 PoC 与在野利用
- 05比较修补、缓解和风险接受方案
适用场景
- 01评估新披露 CVE 对项目的影响
- 02确定依赖漏洞是否在实际使用中可达
- 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