本文档正在积极开发中,尚未最终定稿。
Skip to content

3.1 CVE 监控

流程

CVE 监控每日扫描所有活跃产品的 SBOM 与当前 CVE 数据库进行比对。目标是及早发现已交付产品依赖项中新发布的漏洞。

法律依据

Art. 10(6) CRA: "制造商应建立有效且定期的程序和机制,以识别含有数字元素的产品中的漏洞。"

Annex I, Part II, No. 5: "制造商应主动监控产品中包含的第三方漏洞。"

工作流设计

触发器

yaml
on:
  schedule:
    - cron: '0 6 * * *'    # 每日 UTC 06:00
  workflow_dispatch:         # 手动触发

执行序列

1. 加载活跃产品版本的 SBOM
   +-- 来源:合规仓库 (sbom/) 或 GitHub 发布资产

2. 将每个 SBOM 与当前 CVE 数据库进行扫描
   +-- trivy sbom sbom.cdx.json --severity CRITICAL,HIGH
   +-- grype sbom:sbom.cdx.json --only-fixed --fail-on high

3. 解析结果
   +-- 按严重程度过滤 (CRITICAL, HIGH)
   +-- 提取:CVE ID、软件包、版本、修复版本
   +-- 检查重复项(已报告的 CVE)

4. 发现新问题时:
   +-- 创建 GitHub Issue
   |   +-- 标题:"[CVE-YYYY-XXXXX] <软件包> – <严重程度>"
   |   +-- 标签:security, cve, <severity>
   |   +-- 正文:CVE 详情、受影响的产品、修复版本
   |   +-- 受理人:安全负责人
   +-- Teams 通知(针对 CRITICAL)
   +-- 如正在被积极利用 -> 触发 ENISA 报告流程

5. 归档扫描报告
   +-- 作为 GitHub Actions 制品(90 天)

工作流规范

yaml
name: CVE Monitor

on:
  schedule:
    - cron: '0 6 * * *'
  workflow_dispatch:
    inputs:
      severity:
        description: 'Minimum severity to report'
        default: 'HIGH'
        type: choice
        options: ['CRITICAL', 'HIGH', 'MEDIUM', 'LOW']

jobs:
  scan-sboms:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        product: [product-a, product-b, firmware-esp32]
    steps:
      - name: Checkout Compliance Repo
        uses: actions/checkout@v4

      - name: Get Latest SBOM
        run: |
          SBOM=$(ls -t sbom/${{ matrix.product }}/sbom-*.cdx.json | head -1)
          echo "SBOM_PATH=$SBOM" >> $GITHUB_ENV

      - name: Trivy SBOM Scan
        uses: aquasecurity/trivy-action@master
        with:
          input: ${{ env.SBOM_PATH }}
          scan-type: sbom
          severity: CRITICAL,HIGH
          format: json
          output: trivy-results.json

      - name: Create Issues for New CVEs
        uses: actions/github-script@v7
        with:
          script: |
            const results = require('./trivy-results.json');
            // Create issue for each new CVE
            // Check for duplicates via existing issues

CVE 数据库

数据库工具覆盖范围
NVD (NIST)Trivy, Grype全面——所有 CVE
GitHub Advisory DBDependabot语言特定
OSV (Open Source Vulnerability)Trivy开源聚焦
Red Hat Security DataTrivyLinux 软件包
Alpine SecDBTrivyAlpine 软件包

Issue 模板

markdown
## CVE-[YYYY-XXXXX]: [软件包名称] – [严重程度]

**严重程度:** CRITICAL / HIGH
**CVSS 评分:** X.X
**受影响:** [产品名称] v[版本]

### 详情
- **软件包:** [name]@[version]
- **修复版本:** [fixed-version]
- **CVE:** https://nvd.nist.gov/vuln/detail/CVE-YYYY-XXXXX
- **描述:** [CVE 描述]

### 受影响的产品
| 产品 | 版本 | SBOM |
|------|------|------|
| [名称] | [版本] | [链接] |

### 建议操作
- [ ] 将软件包更新到版本 [fixed-version]
- [ ] 测试补丁
- [ ] 创建发布
- [ ] 更新 SBOM
- [ ] 检查:该 CVE 是否正在被积极利用?-> [ENISA 报告流程](/zh/incident-response/enisa-reporting)

### 分类
- **正在被积极利用:** 是 / 否 / 未知
- **ENISA 报告义务:** 是 / 否

CVE 处理 SLA

严重程度响应时间补丁期限参考
CRITICAL4 小时48 小时Annex I, Part II, No. 7
HIGH24 小时7 天Annex I, Part II, No. 7
MEDIUM72 小时30 天最佳实践
LOW7 天下一次发布最佳实践

文档基于 CC BY-NC 4.0 许可 · 代码基于 MIT 许可