mcpField
M
managing-vulnerabilities

managing-vulnerabilities

github.com/ancoleman安全52568 次安装46 周前更新
代码仓库

关于 managing-vulnerabilities

面向安全与 DevSecOps 团队的漏洞管理技能,涵盖从多层扫描、SBOM 生成到风险排序和修复的实践。提供工具选择建议及 CI/CD 安全门禁模式。

主要功能

  1. 01容器、代码与依赖扫描策略
  2. 02生成 CycloneDX 和 SPDX SBOM
  3. 03按 CVSS、EPSS、KEV 排序风险
  4. 04设计分阶段 CI/CD 安全门禁
  5. 05修复流程与 SLA 跟踪

适用场景

  1. 01将扫描和安全门禁加入 CI/CD
  2. 02生成合规所需的 SBOM
  3. 03确定漏洞修复优先级
  4. 04扫描部署前的容器镜像

安装

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

$npx skills add https://github.com/ancoleman/ai-design-components --skill managing-vulnerabilities

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

outputs.yaml
examples/ci-cd/
github-actions-multi-stage.yml
examples/prioritization/
epss-integration.py
kev-checker.py
examples/trivy/
basic-scan.sh
github-actions.yml
sbom-generation.sh
references/
ci-cd-patterns.md
policy-as-code.md
prioritization-framework.md
remediation-workflows.md
sbom-guide.md
tool-selection.md
scripts/
vulnerability-report.sh

详细介绍

漏洞管理

在容器、源代码、依赖项和运行中的应用程序中,实现全面的漏洞检测与修复工作流。本技能涵盖多层扫描策略、SBOM 生成(CycloneDX 和 SPDX)、使用 CVSS/EPSS/KEV 进行基于风险的优先级排序,以及 CI/CD 安全门禁模式。

何时使用此技能

在以下情况下调用此技能:

  • 在 CI/CD 流水线中构建安全扫描
  • 生成软件物料清单(SBOM)以满足合规要求
  • 使用基于风险的方法确定漏洞修复的优先级
  • 实施安全门禁(发现严重漏洞时使构建失败)
  • 在部署前扫描容器映像
  • 检测机密、配置错误或代码漏洞
  • 建立 DevSecOps 实践和自动化
  • 满足监管要求(SBOM 强制规定、第 14028 号行政命令)

多层扫描策略

漏洞管理需要在多个层级进行扫描。每个层级可检测不同类型的安全问题。

层级概览

容器映像扫描

  • 检测操作系统软件包、语言依赖项和二进制文件中的漏洞
  • 工具:Trivy(全面)、Grype(注重准确性)、Snyk Container(商业)
  • 时机:每次构建容器、选择基础映像、注册表准入控制时

SAST(静态应用程序安全测试)

  • 在运行前分析源代码中的安全缺陷
  • 工具:Semgrep(快速、语义分析)、Snyk Code(以开发者为先)、SonarQube(企业级)
  • 时机:每次提交、PR 检查、主分支保护时

DAST(动态应用程序安全测试)

  • 测试运行中的应用程序是否存在漏洞(黑盒测试)
  • 工具:OWASP ZAP(开源)、StackHawk(原生支持 CI/CD)、Burp Suite(手动 + 自动化)
  • 时机:测试暂存环境、验证 API、测试身份验证时

SCA(软件成分分析)

  • 分析第三方依赖项是否存在已知漏洞
  • 工具:Dependabot(GitHub 原生)、Renovate(高级)、Snyk Open Source(商业)
  • 时机:每次构建、更新依赖项、进行许可证审计时

机密扫描

  • 防止机密被提交到源代码中
  • 工具:Gitleaks(快速、可配置)、TruffleHog(熵检测)、GitGuardian(商业)
  • 时机:提交前钩子、仓库扫描、CI/CD 构件检查时
快速选择工具
Container Image → Trivy (default choice) OR Grype (accuracy focus)
Source Code → Semgrep (open-source) OR Snyk Code (commercial)
Running Application → OWASP ZAP (open-source) OR StackHawk (CI/CD native)
Dependencies → Dependabot (GitHub) OR Renovate (advanced automation)
Secrets → Gitleaks (open-source) OR GitGuardian (commercial)

如需详细的工具选择指南,请参阅 references/tool-selection.md。

SBOM 生成

软件物料清单(SBOM)提供软件组件和依赖项的完整清单,是满足合规要求和实现安全透明度所必需的。

CycloneDX 与 SPDX 对比

CycloneDX(推荐用于 DevSecOps)

  • 专注于安全,由 OWASP 维护
  • 原生支持漏洞引用
  • 快速、轻量(JSON/XML/ProtoBuf)
  • 最适用于:DevSecOps 流水线、漏洞跟踪

SPDX(推荐用于法律/合规)

  • 注重许可证合规,是 ISO 标准(ISO/IEC 5962:2021)
  • 提供全面的法律元数据
  • 政府/国防领域偏好的格式
  • 最适用于:法律团队、合规审计、联邦政府要求
生成 SBOM

使用 Trivy(CycloneDX 或 SPDX):

# CycloneDX format (recommended for security)
trivy image --format cyclonedx --output sbom.json myapp:latest

# SPDX format (for compliance)
trivy image --format spdx-json --output sbom-spdx.json myapp:latest

# Scan SBOM (faster than re-scanning image)
trivy sbom sbom.json --severity HIGH,CRITICAL

使用 Syft(高准确性):

# Generate CycloneDX
syft myapp:latest -o cyclonedx-json=sbom.json

# Generate SPDX
syft myapp:latest -o spdx-json=sbom-spdx.json

# Pipe to Grype for scanning
syft myapp:latest -o json | grype

如需全面了解 SBOM 模式和存储策略,请参阅 references/sbom-guide.md。

漏洞优先级排序

并非所有漏洞都需要立即处理。使用 CVSS、EPSS 和 KEV 根据实际风险确定优先级。

现代化的基于风险的优先级排序

步骤 1:收集指标

指标来源用途
CVSS 基础评分NVD、厂商公告漏洞严重程度(0-10)
EPSS 评分FIRST.org API被利用的概率(0-1)
KEV 状态CISA KEV Catalog正在被利用的 CVE
资产关键性内部 CMDB资产遭到入侵时的业务影响
暴露情况网络拓扑面向互联网还是仅限内部

步骤 2:计算优先级

Priority Score = (CVSS × 0.3) + (EPSS × 100 × 0.3) + (KEV × 50) + (Asset × 0.2) + (Exposure × 0.2)

KEV: 1 if in KEV catalog, 0 otherwise
Asset: 1 (Critical), 0.7 (High), 0.4 (Medium), 0.1 (Low)
Exposure: 1 (Internet-facing), 0.5 (Internal), 0.1 (Isolated)

步骤 3:应用 SLA 分级

优先级标准SLA操作
P0 - 严重KEV + 面向互联网 + 关键资产24 小时立即紧急修补
P1 - 高CVSS ≥ 9.0 或(CVSS ≥ 7.0 且 EPSS ≥ 0.1)7 天在冲刺中优先处理,尽快修补
P2 - 中CVSS 7.0-8.9 或 EPSS ≥ 0.0530 天按常规冲刺规划处理
P3 - 低CVSS 4.0-6.9,EPSS < 0.0590 天纳入待办事项,在维护窗口处理
P4 - 信息CVSS < 4.0无 SLA跟踪,并在适当时处理

示例:Log4Shell (CVE-2021-44228)

CVSS: 10.0
EPSS: 0.975 (97.5% exploitation probability)
KEV: Yes (CISA catalog)
Asset: Critical (payment API)
Exposure: Internet-facing

Priority Score = (10 × 0.3) + (97.5 × 0.3) + 50 + (1 × 0.2) + (1 × 0.2) = 82.65
Result: P0 - Critical (24-hour SLA)

如需查看完整的优先级排序框架和自动化脚本,请参阅 references/prioritization-framework.md。

CI/CD 集成模式

多阶段安全流水线

在流水线的各个阶段实施渐进式安全门禁:

阶段 1:提交前(开发者工作站)

Tools: Secret scanning (Gitleaks), SAST (Semgrep)
Threshold: Block high-confidence secrets, critical SAST findings
Speed: < 10 seconds

阶段 2:拉取请求(CI 流水线)

Tools: SAST, SCA, Secret scanning
Threshold: No Critical/High vulnerabilities, no secrets
Speed: < 5 minutes
Action: Block PR merge until fixed

阶段 3:构建(CI 流水线)

Tools: Container scanning (Trivy), SBOM generation
Threshold: No Critical vulnerabilities in production dependencies
Artifacts: SBOM stored, scan results uploaded
Speed: < 2 minutes
Action: Fail build on Critical findings

阶段 4:部署前(预发布环境)

Tools: DAST, Integration tests
Threshold: No Critical/High DAST findings
Speed: 10-30 minutes
Action: Gate deployment to production

阶段 5:生产环境(运行时)

Tools: Continuous scanning, runtime monitoring
Threshold: Alert on new CVEs in deployed images
Action: Alert security team, plan patching
示例:GitHub Actions 多阶段扫描
name: Security Scan Pipeline

on: [push, pull_request]

jobs:
  secrets:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: trufflesecurity/trufflehog@main
        with:
          path: ./
          extra_args: --only-verified

  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: semgrep/semgrep-action@v1
        with:
          config: p/security-audit

  container:
    runs-on: ubuntu-latest
    needs: [secrets, sast]
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t myapp:${{ github.sha }} .

      - uses: aquasecurity/trivy-action@master
        with:
          image-ref: myapp:${{ github.sha }}
          format: sarif
          output: trivy-results.sarif
          severity: HIGH,CRITICAL
          exit-code: 1

      - name: Generate SBOM
        run: |
          trivy image --format cyclonedx \
            --output sbom.json myapp:${{ github.sha }}

      - uses: actions/upload-artifact@v3
        with:
          name: sbom
          path: sbom.json

如需查看完整的 CI/CD 模式(GitLab CI、Jenkins、Azure Pipelines),请参阅 references/ci-cd-patterns.md。

使用 Trivy 扫描容器

Trivy 是推荐的默认容器扫描工具:功能全面、速度快,并且原生支持 CI/CD。

基本用法
# Scan container image
trivy image alpine:latest

# Scan with severity filter
trivy image --severity HIGH,CRITICAL alpine:latest

# Fail on findings (CI/CD)
trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest

# Generate SBOM
trivy image --format cyclonedx --output sbom.json alpine:latest

# Scan filesystem
trivy fs /path/to/project

# Scan Kubernetes manifests
trivy config deployment.yaml
配置(.trivy.yaml)
severity: HIGH,CRITICAL
exit-code: 1
ignore-unfixed: true  # Only fail on fixable vulnerabilities
vuln-type: os,library
skip-dirs:
  - node_modules
  - vendor
ignorefile: .trivyignore
忽略误报(.trivyignore)
# False positive
CVE-2023-12345

# Accepted risk with justification
CVE-2023-67890  # Risk accepted: Not exploitable in our use case

# Development dependency (not in production)
CVE-2023-11111  # Dev dependency only
GitHub Actions 集成
- name: Trivy Scan
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: myapp:${{ github.sha }}
    format: sarif
    output: trivy-results.sarif
    severity: HIGH,CRITICAL
    exit-code: 1

- name: Upload to GitHub Security
  uses: github/codeql-action/upload-sarif@v2
  if: always()
  with:
    sarif_file: trivy-results.sarif

替代方案:使用 Grype 提高准确性

Grype 专注于最大限度减少误报,并可与 Syft 配合生成 SBOM。

**重要提示:**请使用 Grype v0.104.1 或更高版本(凭据泄露问题 CVE-2025-65965 已在此版本之前的版本中修复)。

基本用法
# Scan container image
grype alpine:latest

# Scan with severity threshold
grype alpine:latest --fail-on high

# Scan SBOM (faster)
grype sbom:./sbom.json

# Syft + Grype workflow
syft alpine:latest -o json | grype --fail-on critical
何时使用 Grype
  • 对误报敏感的项目
  • 以 SBOM 为先的工作流(使用 Syft 生成,再用 Grype 扫描)
  • 需要第二方验证意见
  • Anchore 生态系统用户

如需查看完整的工具比较和选择标准,请参阅 references/tool-selection.md。

安全门禁和阈值

渐进式阈值策略

通过渐进式门禁平衡安全性和开发效率。为 PR 检查(速度快,HIGH+CRITICAL)、构建(全面检查)和部署(严格,仅 CRITICAL)配置不同阈值。

策略即代码

使用 OPA (Open Policy Agent) 自动执行策略。创建策略以拒绝严重漏洞、强制检查 KEV Catalog,并实施针对不同环境的规则。

如需查看完整的策略模式、基线检测和 OPA 示例,请参阅 references/policy-as-code.md。

修复工作流

自动修复

设置自动化工作流,每天执行扫描、提取可修复的漏洞、更新依赖项,并自动创建修复拉取请求。

SLA 跟踪

根据 SLA 目标跟踪漏洞修复进度(P0:24 小时,P1:7 天,P2:30 天,P3:90 天)。监控逾期漏洞,并按需升级处理。

误报管理

维护抑制文件(.trivyignore),记录说明理由、审核日期和审批跟踪信息。实施误报分类和审批工作流。

如需查看完整的修复工作流、SLA 跟踪工具和自动化脚本,请参阅 references/remediation-workflows.md。

与相关技能集成

building-ci-pipelines

  • 向流水线定义中添加安全阶段
  • 配置用于存储 SBOM 的制品
  • 使用漏洞阈值实施质量门禁

secret-management

  • 集成密钥扫描(Gitleaks、TruffleHog)
  • 检测到密钥后自动轮换
  • 使用提交前钩子进行预防

infrastructure-as-code

  • 使用 Trivy config 扫描 Terraform 和 Kubernetes 清单
  • 在部署前检测错误配置
  • 使用 OPA 执行策略即代码

security-hardening

  • 根据扫描结果应用修复指南
  • 选择安全的基础映像
  • 实施安全最佳实践

compliance-frameworks

  • 为 SOC2、ISO 27001 审计生成 SBOM
  • 跟踪漏洞指标以用于合规报告
  • 为安全控制提供证据

快速参考

基本命令
# Trivy: Scan image with severity filter
trivy image --severity HIGH,CRITICAL myapp:latest

# Trivy: Generate SBOM
trivy image --format cyclonedx --output sbom.json myapp:latest

# Trivy: Scan SBOM
trivy sbom sbom.json

# Grype: Scan image
grype myapp:latest --fail-on high

# Syft + Grype: SBOM workflow
syft myapp:latest -o json | grype

# Gitleaks: Scan for secrets
gitleaks detect --source . --verbose
常见模式
# CI/CD: Fail build on Critical
trivy image --exit-code 1 --severity CRITICAL myapp:latest

# Ignore unfixed vulnerabilities
trivy image --ignore-unfixed --severity HIGH,CRITICAL myapp:latest

# Scan only OS packages
trivy image --vuln-type os myapp:latest

# Skip specific directories
trivy fs --skip-dirs node_modules,vendor .

渐进式展开

此技能提供基础漏洞管理模式。有关更深入的主题,请参阅:

  • 工具选择: references/tool-selection.md - 完整的决策框架
  • SBOM 模式: references/sbom-guide.md - 生成、存储、使用
  • 优先级排序: references/prioritization-framework.md - CVSS/EPSS/KEV 自动化
  • CI/CD 集成: references/ci-cd-patterns.md - GitLab CI、Jenkins、Azure Pipelines
  • 修复: references/remediation-workflows.md - SLA 跟踪、误报
  • 策略即代码: references/policy-as-code.md - OPA 示例、安全门禁

可运行示例:

  • examples/trivy/ - Trivy 扫描模式
  • examples/grype/ - Grype + Syft 工作流
  • examples/ci-cd/ - 完整的流水线配置
  • examples/sbom/ - SBOM 生成与管理
  • examples/prioritization/ - EPSS 和 KEV 集成脚本

自动化脚本:

  • scripts/vulnerability-report.sh - 生成管理层报告
  • scripts/sla-tracker.sh - 跟踪修复 SLA
  • scripts/false-positive-manager.sh - 管理抑制规则

评论

支持 Markdown