容器供应链安全:镜像投毒与 SBOM 实践
攻击模式:镜像投毒
供应链投毒正在从语言包(npm/PyPI)扩散到容器镜像:
- 高仿镜像:在 Docker Hub 等平台上传名称相近的恶意镜像,诱导误拉;
- 上游投毒:篡改构建依赖或基础镜像,让投毒"合法地"进入发布流程;
- 供应链代理:在构建流水线中替换第三方组件,实现持久化。
为什么容器投毒更难发现
镜像是一层叠一层的黑盒,运行后难以追溯每一层的来源与内容;加上构建缓存复用,投毒可以跨多个发布版本潜伏。
防御实践
SBOM(软件物料清单)
- 为每个构建产物生成 SBOM,记录依赖、版本与来源;
- 让"这个镜像里有什么"成为可回答的问题。
签名与校验
- 启用镜像签名(Cosign 等),验证镜像来源与完整性;
- 设置准入策略,只允许已签名的镜像进入生产。
拉取策略
- 固定镜像摘要(digest)而非 tag;
- 使用可信镜像仓库与代理镜像。
持续扫描
- 在 CI 中扫描漏洞与恶意组件,阻断高危镜像构建。
小结
容器让交付变快,也让供应链的信任链变短。没有 SBOM 和签名校验的容器环境,等于在未知来源的地基上盖楼。
评论