如何验证镜像不含 CVE-2024-XXXX 高危漏洞?

解读

面试官想确认候选人是否具备镜像供应链安全的实战能力,而非仅停留在“用工具扫一下”的层面。国内金融、运营商、政务云对**“0-CVE 上线”有刚性要求,CouchDB 作为基础组件,必须证明其镜像在构建、传输、运行**三阶段都可验证、可回溯、可阻断。回答要体现“能落地、能审计、能闭环”。

知识点

  1. 国内合规基线:等保 2.0、关基、工信部 418 号文要求“上线前完成漏洞修复或补偿措施”,高危 CVE 必须24 小时内定位、72 小时内闭环
  2. CouchDB 官方镜像特点:基于 Debian slim,自带 Erlang/OTP、SpiderMonkey 1.8.5、NPM 依赖,历史 CVE 集中在 Erlang 与 JS 引擎
  3. 镜像签名与 attestation:国内大厂生产环境已强制Harbor + Cosign + in-toto,需验证digest 与签名证书 CN 一致才能拉取。
  4. 多引擎交叉验证:Trivy 对系统包识别最全,Grype 对 Erlang 包识别更准,必须双引擎结果对齐才能出报告。
  5. SBOM 闭环:以 SPDX/CycloneDX JSON 形式入库,与 CMDB 资产编号绑定,后续出现新 CVE 可秒级定位影响范围

答案

我采用“三签两审一阻断”流程,确保 CouchDB 镜像不带 CVE-2024-XXXX上线。

  1. 准入前阻断
    a. 在 CI 阶段拉起临时隔离 Harbor 项目,仅允许 Jenkins 服务账号推送。
    b. 使用官方 CouchDB 3.3.3 源码自行构建,Dockerfile 中把 erlang=1:25.3.2.8-1spidermonkey=1.8.5+ci20230321 钉死版本,杜绝 latest 漂移
    c. 构建节点启用BuildKit 缓存挂载--mount=type=cache,sharing=locked 防止层缓存污染,保证可重复构建

  2. 双引擎扫描
    a. 镜像推送到 Harbor 后,触发 Trivy + Grype 并行扫描,参数统一 --ignore-unfixed=false --severity HIGH,CRITICAL
    b. 结果写入 Kafka 漏洞消息队列,由 VulnOps 服务去重并关联 NVD、CNNVD、CNVD 三库,确保 CVE-2024-XXXX 编号一致
    c. 若任一引擎报出 CVE-2024-XXXX,自动创建 JIRA 红线工单,并冻结镜像 digest,Harbor 项目立即开启不可变规则,禁止覆盖。

  3. 签名与 attestation
    a. 扫描通过后,调用 Cosign 对镜像进行签名,证书使用公司 私有 CA 颁发短周期证书(有效期 7 天),私钥托管在 KMS(阿里云 KMS 或国密 HSM)
    b. 同时生成 in-toto attestation,声明“CVE-2024-XXXX 未检出”,并把 SBOM、扫描报告、构建日志作为 predicate 一并写入 OCI 镜像的 attest 层
    c. 签名摘要写入 Harbor 的 Notary v2 元数据生产集群只有校验签名通过才允许拉取

  4. 运行时二次审核
    a. 镜像真正部署到 K8s 前,Kyverno 策略引擎会校验 cosign verify 返回值,摘要、签名、attestation 三者任一不符即拒绝创建 Pod
    b. 每周一凌晨,安全团队拉取上周全部镜像重新扫描,使用最新漏洞库,防止“0day 变 1day”。若发现 CVE-2024-XXXX 在新库中出现,自动触发回滚与隔离

  5. 审计与闭环
    a. 所有扫描报告、签名证书、attestation 统一存入 ElasticSearch 安全索引,保留 180 天支持等保审计快速举证
    b. 出现争议时,可通过 docker buildx imagetools inspect <digest>cosign verify --certificate-identity ... 秒级还原构建链实现“镜像-代码-责任人”三级定位

通过上述流程,CVE-2024-XXXX 在镜像上线前、中、后三个阶段均被显性化、可验证、可阻断,满足国内监管“零高危带病上线”要求。

拓展思考

  1. 红队视角:如果攻击者通过 供应链污染 BuildKit 缓存 植入恶意 .beam 文件,上述流程仍可能被绕过。可引入 eBPF 运行时行为基线,对比 CouchDB beam 文件哈希白名单秒级发现动态加载异常模块
  2. 国密改造:金融信创要求SM2 签名 + SM3 摘要,Cosign 已支持 pkcs11 国密插件,但 Harbor 侧需二次开发 Notary v2 国密验签插件实现全链路国密合规
  3. 离线场景:边缘机房无法实时拉取 NVD 库,可预置 漏洞库离线包(每周同步),并通过 Harbor 复制策略 把漏洞库与镜像同步到边缘节点,保证离线扫描结果与中心一致