31,496 颗星、MIT 许可、社区 13,600 模板:nuclei 是怎么把 CVE 扫描跑进分钟级的
说起开源漏洞扫描,你会想到什么?OpenVAS 太重,Nessus 太贵,Burp Suite 太复杂——对于想快速跑一遍”这个服务有没有已知漏洞”的工程师来说,这些工具都谈不上顺手。
nuclei 想解决的就是这个问题。
这个由 ProjectDiscovery 维护的开源扫描器,用 YAML 模板定义检测逻辑,跑在 Go 里,一个二进制文件,无需安装,自带模板库,5 分钟上手。
GitHub:https://github.com/projectdiscovery/nuclei(31,496 ⭐,3,892 Fork,MIT 许可证)
速度,是核心卖点
传统商业扫描器(Nessus、Qualys)基于 CVE 签名库,每次扫描前要同步插件、构建资产清单,一个 /24 网段可能跑上几个小时。nuclei 的做法是:给你一份 YAML 模板列表,你指定目标,它发送请求,匹配响应,直接出结果。
实测:一个 /24 网段,nuclei 可以在几分钟内跑完 7,000+ 模板检查。这不是”快 for a scanner”,是真的快。
速度背后的原因很简单——Go 并发模型 + Stateless 扫描。无状态意味着不需要维护资产数据库,每次扫描都是独立的,输入目标列表,输出结果,干净利落。
模板体系:真正的护城河
nuclei 真正的价值在于它的模板生态。
官方模板库(nuclei-templates) 约有 13,600 个模板,其中约 4,400 个覆盖 CVE,其余涵盖错误配置、暴露面板、默认凭证、技术指纹等场景。模板按协议分类,支持 HTTP、DNS、TCP、SSL、Websocket 和无头浏览器。
更关键的是社区驱动。一个新 CVE 披露后,nuclei 社区通常在几小时到几天内就能产出可用模板——比商业厂商的响应快一到两个量级。2026 年 4-5 月的两个月里,模板库新增 226 个模板,覆盖 123 个 CVE,其中约 10 个属于 CISA KEV(已知被利用漏洞)列表。
模板门槛极低。一个检测逻辑就是一段 YAML:
id: cve-2026-XXXX
info:
name: Example CVE Detection
author: security-researcher
severity: high
http:
- method: GET
path: "{{BaseURL}}/vulnerable-endpoint"
matchers:
- type: word
words:
- "vulnerable_response_string"
你能读懂这段逻辑,说明你也能写。这和商业扫描器的封闭规则库是本质区别——检测逻辑是透明的,不是厂商的黑箱。
适合谁,不适合谁
适合:
- AppSec / 安全工程师:快速扫一批互联网资产,验证”这个 CVE 我们的资产有没有”
- Bug Bounty 猎人:recon 管道接 nuclei,自动把目标列表变成可操作的漏洞线索
- DevSecOps 团队:CI/CD 里跑 nuclei,输出 SARIF 或 JSON,匹配 GitHub Security Advisory
- 初创 / 小团队:免费、无 IP 数量限制、无商业合同,一个二进制走天下
不适合:
- 需要合规报告(PCI DSS、CIS)的场景——这需要认证扫描,nuclei 不做这个
- 需要认证扫描(拿系统账号登录,从内部检查 patch 级别)——这是 OpenVAS / Nessus 的强项
- 需要资产管理和风险趋势(”这台服务器三个月前什么状态”)——nuclei 是无状态的,不保存历史
和商业工具的对比
| nuclei | Nessus Professional | Qualys VMDR | |
|---|---|---|---|
| 价格 | 免费(MIT) | $4,236/年/-seat | ~$10,000+/年 |
| 模板来源 | 社区 13,600+ | 厂商维护 | 厂商维护 |
| CVE 响应速度 | 小时~天 | 周~月 | 周~月 |
| 认证扫描 | ❌ | ✅ | ✅ |
| 合规报告 | ❌ | ✅ | ✅ |
| 资产历史 | ❌ | ✅ | ✅ |
| CI/CD 集成 | 原生 | 需企业版 | 需企业版 |
很多成熟安全团队的做法是:商业扫描器跑合规和内部网络认证扫描,nuclei 跑外部资产的快速 CVE 验证和自定义检查。两者互补,不是非此即彼。
一个真实的约束:CVE-2026-41646
扫别人之前,先看看自己。
nuclei 3.0.0~3.8.0 版本存在 JS 协议安全绕过漏洞(CVE-2026-41646,CVSS 5.5),允许恶意目标服务器通过 require() 函数读取扫描主机上的 .js 和 .json 文件。官方已在 v3.8.0 修复。
此外还有:
- CVE-2026-41645(CVSS 5.3):HTTP 响应数据中的 DSL 表达式注入,可泄露主机环境变量
- CVE-2026-41282(CVSS 4.0):
-env-vars开启时,DSL 表达式注入风险
建议:运行 nuclei 3.8.0 及以上版本,不要对不可信目标开启 -env-vars 参数。
漏洞详情见阿里云漏洞库:https://avd.aliyun.com/detail?id=AVD-2026-41646
下一步:怎么用起来
安装(一条命令):
# Go
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# 或者 Docker
docker pull projectdiscovery/nuclei:latest
首次运行自动下载模板,也可以手动更新:
nuclei -update-templates
扫一个目标,高危优先:
nuclei -u https://your-target.com -severity critical,high
GitHub Actions 集成示例(fail on critical findings):
- name: Run Nuclei scan
run: |
nuclei -u ${{ env.TARGET_URL }}
-t cves/ -t misconfigurations/
-severity critical,high
-json -o nuclei-results.json
- name: Fail on critical
if: jq -e '.[] | select(.info.severity == "critical")' nuclei-results.json
run: echo "Critical vulnerabilities found" && exit 1
推荐扫描节奏:
- 互联网资产:每日一次,用 cron 调度,结果 diff,只告警新增发现
- CI/CD:在 staging 环境跑 nuclei,severity=critical/high 时 fail build
资源链接
- GitHub:https://github.com/projectdiscovery/nuclei
- 官方文档:https://docs.projectdiscovery.io
- 模板库:https://github.com/projectdiscovery/nuclei-templates(欢迎 PR,模板 bounty 计划见官方博客)
- 官方博客(模板月度更新):https://projectdiscovery.io/blog/category/nuclei-templates/
- Nuclei vs 传统扫描器对比(2026):https://dev.to/delmar_olivier_155f48bed1/nuclei-vs-traditional-vulnerability-scanners-in-2026-223k
一句话总结:nuclei 是一个让”快速检查这个资产有没有已知漏洞”变得像跑单元测试一样简单的工具。免费、MIT 许可、社区驱动,唯一需要的就是你知道自己要扫什么。
评论区
登录后可评论。