浅谈容器运行时安全加固
|
由于云计算获得了快速推进,云原生的概念于2013年被提出,Pivotal 公司的 Matt Stine 在概念中提出了云原生的4个要点:DevOps、持续交付、微服务、容器。而在 2015 年 Google 主导成立了云原生计算基金会(CNCF),CNCF 也给出了对云原生(Cloud Native)的定义,其中包含三个方面:1)应用容器化;2)面向微服务架构;3)应用支持容器的编排调度。 在容器生命周期的三个过程中,攻击者往往是在前两个阶段部署相关的恶意代码,在容器运行时对环境真正执行相关的攻击指令。因此,容器运行时相比于其他两个阶段更直接、也更容易分析出环境中的恶意行为。与其他虚拟化技术类似,逃逸也是针对容器运行时存在的漏洞最为严重的攻击利用行为。攻击者可通过利用漏洞“逃逸”出自身拥有的权限范围,实现对宿主机或者宿主机上其他容器的访问,其中最为简单的就是造成宿主机的资源耗尽,往往会直接危害底层宿主机和整个云原生系统的安全。根据风险所在层次的不同,可以进一步展开为:危险配置导致的容器安全风险、危险挂载导致的容器安全风险、相关程序漏洞导致的容器安全风险、内核漏洞导致的容器安全风险: 危险配置导致的容器安全风险:用户可以通过修改容器环境配置或在启动容器时指定参数来改变容器的相关约束,但如果用户为一些不完全受控的容器配置了某些危险的配置参数,就为攻击者提供了一定程度的可以攻击利用的安全漏洞,例如未授权访问带来的容器安全风险,存储特权数据库模式长期运行可能带来的存储容器环境中的安全风险。 危险挂载导致的容器安全风险:将宿主机上的敏感文件或目录挂载到容器内部,尤其是那些不完全受控的容器内部,往往也会带来安全风险。这种挂载行为可以通过环境配置来设定,也可以在运行时进行动态挂载,因此这里单独地归为一类。随着应用的逐渐深化,挂载操作变得愈加广泛,甚至为了实现特定功能或方便操作,使用者会选择将外部敏感资源或文件系统直接挂载入容器,由此而来的安全问题也呈现上升趋势。例如:挂载 Docker Socket 引入的容器安全风险、挂载宿主机 procfs、sysfs 引入的容器安全问题等。 相关程序漏洞导致的容器安全风险:所谓相关程序漏洞,指的是那些参与到容器运行、管理的服务端以及客户端程序自身存在的漏洞。例如,CVE-2019-5736、CVE-2021-30465、CVE-2020-15257等存在于 Container Daemon、runC 上的容器安全漏洞。 内核漏洞导致的容器安全风险:Linux 内核漏洞的危害之大、影响范围之广,使得它在各种攻防话题下都占有一席之地,特别是在容器环境中,由于容器与宿主机共享了内核,攻击者可以直接在容器中对内核漏洞进行利用攻击。近年来,Linux 系统曝出过无数内核漏洞,例如最有名气的漏洞之一——脏牛(CVE-2016-5195)漏洞也能用来进行容器逃逸。由于这些漏洞的存在,导致很多开发者不得不修改代码,以避免被攻击。但是,即使修改代码,也不能保证万无一失。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
