Project Copacetic:直接修补容器镜像漏洞
copa
是一个用Go编写并基于buildkit的命令行工具,它可以根据流行工具(如Trivy)的漏洞扫描结果直接修补容器镜像。
有关更多详细信息和如何开始使用,请参阅完整文档。
演示
为什么?
我们需要能够快速修补容器,而不必等待上游进行完整的重建。随着漏洞披露和实际利用之间的时间窗口不断缩小,越来越需要修补容器镜像中的关键安全漏洞,以便能够快速重新部署到生产环境中。这种需求在以下情况下尤为迫切:
- 漏洞继承自多层深的基础镜像,而等待更新版本通过供应链传播不是一个选择
- 漏洞存在于您不维护的第三方应用镜像中,其更新频率无法满足您的安全服务水平协议(SLA)要求。
除了填补左移安全实践和工具无法满足的操作需求外,copa
无需重建容器镜像即可修补容器的能力还提供了其他好处:
- 允许除镜像发布者之外的其他用户(如DevSecOps工程师)也能修补容器镜像。
- 通过仅创建额外的修补层,而不是重建整个镜像(通常会导致不同的层哈希值,从而破坏层缓存),减少了重新分发修补镜像的存储和传输成本。
- 通过不必等待基础镜像更新,并且比完整的镜像重建操作更快,减少了修补容器镜像的周转时间。
- 将修补镜像的复杂性从运行重建管道简化为在镜像上运行单个工具。
如何实现?
copa
工具是一个可扩展的引擎,它:
- 从容器镜像的漏洞报告(由Trivy等扫描器生成)中解析所需的更新包。可以编写新的适配器以适应更多的报告格式。
- 使用适当的包管理器工具(如apt、apk等)获取和处理所需的更新包。可以编写新的适配器以支持更多的包管理器。
- 使用buildkit将生成的更新二进制文件应用到容器镜像中。
这种方法的动机是基于使直接容器修补广泛适用和易于访问的核心原则:
- Copa支持修补_现有的_容器镜像。
- 开发人员无需使用特定工具构建镜像或以某种方式修改镜像就能支持容器修补。
- Copa与现有的漏洞扫描和缓解生态系统协同工作。
- 镜像发布者无需为容器修补创建新的工作流程,因为Copa支持使用今天已经发布的安全更新包来修补容器镜像。
- 用户无需迁移到新的、可能支持有限的自定义发行版生态系统,也无需更改其容器漏洞扫描管道以包含修复措施,因为Copa可以无缝集成为一个额外步骤,基于这些扫描报告修补容器。
- Copa减少了修补镜像所需的技术专业知识和等待依赖项的需求。
- 对于操作系统包漏洞,不需要特定镜像的专业知识就能修补它,因为Copa依赖于当今流行的容器扫描工具生成的报告中已经嵌入的漏洞修复知识。
贡献
有几种方式可以参与:
- 加入邮件列表以获取发布、安全公告等通知。
- 参加双周社区会议,讨论开发、问题、用例等。
- 加入CNCF Slack上的
#copacetic
频道。
本项目欢迎遵守CNCF行为准则的贡献和建议。