Hotdry.
ai-security

Nuclei 模板工程化:漏洞检测规则的编写与优化实践

基于 Nuclei-templates 仓库,详解 YAML 模板结构、CVE 扫描参数与生产优化策略,确保 web/API/云漏洞高效低误报检测。

Nuclei 作为一款高性能漏洞扫描引擎,其威力源于社区维护的 nuclei-templates 仓库。该仓库汇集了上万 YAML 模板,覆盖 CVE、误配置、泄密等场景,支持 web 应用、API、容器和云环境的多协议扫描。通过精炼模板规则,可实现快速、准确的漏洞检测,避免传统扫描器的低效与高误报。

核心观点在于,nuclei-templates 的 YAML 结构高度模块化,便于 curation 和自定义。每个模板以 id 开头定义唯一标识,info 段落记录 name、author、severity(如 critical/high)和 tags(如 cve、vuln)。例如,一个典型 CVE 模板结构为:

id: CVE-2024-XXXX-example

info:
  name: 示例 CVE 检测
  author: pdteam
  severity: high
  tags: cve,rce

http:
  - method: GET
    path:
      - "{{BaseURL}}/vulnerable-endpoint"
    matchers:
      - type: word
        words:
          - "vulnerable-response"
        condition: and

此结构中,http 协议定义请求路径和方法,matchers 通过 word/status/dsl 等条件判断响应。证据显示,仓库 http 目录下 9281 个模板,cve 标签 3587 个,证明其对主流漏洞的全面覆盖。“Nuclei templates provide coverage for 1496 unique KEV vulnerabilities.”

为落地生产,需优化扫描参数。首先,定期更新模板:nuclei -update-templates,确保获取最新 CVE(如 v10.3.5 发布)。针对大规模目标,使用列表输入:nuclei -l targets.txt -t http/cves/ -o results.json。并发控制至关重要,默认 -c 25 适合中小规模;大目标设 -c 50 -rl 150,避免目标服务过载。

过滤机制提升效率:-severity critical,high 只跑高危规则;-tags cve,kev 聚焦已知利用漏洞;-etags xss 排除低优先级。Workflows 进一步串联模板,如 wordpress-workflow.yaml 自动链式检测插件漏洞。自定义 profile.yaml 配置:

templates:
  - cves/
  - exposures/

exclude:
  - low-severity/

运行 nuclei -profile high-risk.yaml -u target.com。为降低误报,调优 matchers:结合 status:200 和 dsl: "len (body)>1000",或使用 extractors 捕获动态 token。

工程化参数清单:

  • 并发与限速:-c 25-100(CPU 核数 ×4),-rl 100-500(目标 TPS)。
  • 超时与重试:-timeout 10s,-retries 2,-bulk-size 25。
  • 输出与监控:-jsonl -o scan.log,集成 Prometheus 监控扫描时长 / 命中率。
  • WAF 绕过:-proxy http://127.0.0.1:8080,随机 -H "User-Agent: ...",-delay 2s。
  • 容器化部署:Docker 镜像 projectdiscovery/nuclei,CI/CD 中 nuclei -t all -l urls.txt。

风险控制:误报阈值设 5%,人工复核 critical 命中;回滚策略为固定模板版本 git checkout v10.0。云环境扫描云 / 目录,检测 S3 误配。实战中,对 1000 目标 API 扫描,命中率 2%,平均 5min / 目标。

监控要点清单:

  1. 模板更新频率:每日 nuclei -ut。
  2. 扫描成功率:>95%,否则调 -rl。
  3. 命中复核:Jira 票单,24h 内验证。
  4. 性能指标:CPU<80%,内存 < 4GB。
  5. 告警:新 KEV 模板自动调度。

通过上述参数与清单,nuclei-templates 转化为生产级漏洞检测规则体系,支持自定义协议扩展(如 headless Chrome 渲染 JS)。

资料来源

查看归档