关于 managing-vulnerabilities
面向安全与 DevSecOps 团队的漏洞管理技能,涵盖从多层扫描、SBOM 生成到风险排序和修复的实践。提供工具选择建议及 CI/CD 安全门禁模式。
主要功能
- 01容器、代码与依赖扫描策略
- 02生成 CycloneDX 和 SPDX SBOM
- 03按 CVSS、EPSS、KEV 排序风险
- 04设计分阶段 CI/CD 安全门禁
- 05修复流程与 SLA 跟踪
适用场景
- 01将扫描和安全门禁加入 CI/CD
- 02生成合规所需的 SBOM
- 03确定漏洞修复优先级
- 04扫描部署前的容器镜像
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill managing-vulnerabilities安装后在 Claude Code 中输入/managing-vulnerabilities确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
outputs.yamlexamples/ci-cd/github-actions-multi-stage.ymlexamples/prioritization/epss-integration.pykev-checker.pyexamples/trivy/basic-scan.shgithub-actions.ymlsbom-generation.shreferences/ci-cd-patterns.mdpolicy-as-code.mdprioritization-framework.mdremediation-workflows.mdsbom-guide.mdtool-selection.mdscripts/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.05 | 30 天 | 按常规冲刺规划处理 |
| P3 - 低 | CVSS 4.0-6.9,EPSS < 0.05 | 90 天 | 纳入待办事项,在维护窗口处理 |
| 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- 跟踪修复 SLAscripts/false-positive-manager.sh- 管理抑制规则