作者:Anubhav Gupta,Kubescape 贡献者
本文中,我们将学习如何利用Kubescape[1]和Copa[2]修补容器镜像中的漏洞。
什么是 Kubescape?🔍
Kubescape 是一个开源的 Kubernetes 安全平台,涵盖了风险分析、安全合规性检查以及配置错误扫描等功能。它面向 DevSecOps 实践者或平台工程师,提供易用的命令行界面、灵活的输出格式及自动化扫描能力,为 Kubernetes 用户和管理员节省了宝贵的时间、精力和资源。Kubescape 是云原生计算基金会(CNCF)的沙箱项目[3]。
什么是镜像漏洞?💀👾
容器镜像可能包含安全漏洞,这些漏洞可能被攻击者利用。这些漏洞包括过时的软件版本、未修补的安全漏洞或弱加密协议。通过漏洞扫描工具分析容器镜像及其依赖项,可以识别出镜像漏洞。
从广义上讲,镜像漏洞可以分为两大类:
操作系统级漏洞:这类漏洞源于镜像所使用的底层操作系统,与你的应用程序代码无关。例如:你使用 alpine 作为容器镜像的基础镜像。 应用级漏洞:这类漏洞源于你的应用程序源代码问题。例如:代码中的 SQL 注入错误或软件中使用的过时 Python 库/包。
什么是镜像修复?🩹
Kubescape 借助 Copa,通过将包更新至已修复版本,能够“修补”或“修复”镜像中的漏洞。
以下是 Copa 修补镜像的架构图概述:
Copa 架构图
从 Kubescape 等扫描器生成的容器镜像漏洞报告中解析需要更新的包。 使用 apt、apk 等合适的包管理工具获取并处理所需更新包。 利用 buildkit 将更新后的二进制文件应用于容器镜像。
工作原理是怎样的呢?⚒️🤔
以下是我制作的一个小型流程图,帮助理解 Kubescape 镜像修补过程:
Kubescape 镜像修补流程
用户输入需要修补的镜像 Kubescape 使用 Grype 引擎扫描镜像以查找漏洞 Kubescape 分析扫描到的镜像信息,识别漏洞,并将报告传递给修补流程 Kubescape 读取漏洞报告,并使用 Copa 修补镜像中可修复的脆弱包 Kubescape 再次使用 Grype 引擎扫描修补后的镜像以验证漏洞 在 CLI 输出中,我们能看到漏洞概要报告及修补后镜像已导出至本地 Docker 服务器
演示 👨💻👀
让我们看下实际操作。
运行以下命令扫描"nginx:1.23"镜像的漏洞:
kubescape scan image nginx:1.23
得到如下输出:
Kubescape 镜像扫描结果
可见,Kubescape 在此镜像中发现了 265 个漏洞。
现在运行修复命令:
kubescape patch -i nginx:1.23
得到如下输出:
Kubescape 镜像修补结果
可以看到,我们得到了名为"nginx:1.23-patched"的新镜像,漏洞总数从 265 减少到了 198!
你或许会疑惑——为何不是所有漏洞都被修补,为什么仍有 198 个漏洞未修复?答案在于镜像扫描与修补的工作机制。
如果你了解 Grype、Trivy、Docker 等流行的镜像扫描软件,它们通常会列出:
镜像中存在特定漏洞的包,如 libcurl4; 镜像中正在使用的包当前版本,如 7.74.0-1.3+deb11u7; 漏洞已被修复的包版本,如 7.74.0-1.3+dev11u10。
如果将包更新至已修复版本,漏洞即被修复。但有些包尚未有已知修复方案,安全研究人员正积极寻找解决方案。因此,剩余未修复的漏洞就是目前尚无解决方案的那些。
总结
我们迫切需要在不向上游进行全面重建的情况下快速修补容器。随着漏洞披露与活跃利用之间窗口的不断缩小[4],快速重新部署生产环境中的容器镜像以修补关键安全漏洞成为日益增长的运营需求。Kubescape 和 Copa 能帮助你迅速修复镜像中的操作系统级漏洞。
若想了解更多关于我如何在 Kubescape 与 Copa 之间添加此集成与支持的信息,请查看我的另一文章[5]。
Kubescape: https://kubescape.io/
[2]Copa: https://project-copacetic.github.io/copacetic/
[3]云原生计算基金会(CNCF)的沙箱项目: https://www.cncf.io/sandbox-projects/
[4]漏洞披露与活跃利用之间窗口的不断缩小: https://www.bleepingcomputer.com/news/security/hackers-scan-for-vulnerabilities-within-15-minutes-of-disclosure/
[5]另一文章: https://anubhav-gupta.medium.com/lfx-mentorship-my-experience-c0c451839735
点击【阅读原文】阅读网站原文。
文章转载自CNCF。点击这里阅读原文了解更多。
联系Linux Foundation APAC
Linux基金会是非营利性组织,是技术生态系统的重要组成部分。
Linux基金会通过提供财务和智力资源、基础设施、服务、活动以及培训来支持创建永续开源生态系统。在共享技术的创建中,Linux基金会及其项目通过共同努力形成了非凡成功的投资。请关注LFAPAC(Linux Foundation APAC)微信公众号。