美国国家标准技术局(NIST)发布了一项有关应用容器技术安全问题的公告。该公告对之前的两个公告内容进行了总结,包括镜像、注册表、编配器、容器、主机操作系统和硬件方面的漏洞,以及相应的应对措施。
NIST 的计算机安全研究中心(CSRC)负责监管 NIST 的数字和信息相关的项目和出版物。该公告对之前的两份有关应用容器安全的出版物进行了总结,它先是对应用容器的现状进行了总结,然后列出了影响容器安全的因素,最后提出改进应用容器安全的应对措施。
容器的可移植性和不可变性会导致两个地方出现安全问题。容器提供了比应用压缩包更高级别的抽象,用于发布和部署应用程序。它们具有跨环境和机器的可移植性,相同的容器镜像可以被用在开发环境、测试环境和生产环境。这对于应用的可移植性和持续交付来说虽然有一定的好处,但也带来了安全问题。安全工具和流程并不能保证容器所运行环境绝对安全,因为特定的环境可能包含很多安全漏洞。
容器使用了不可变模型,每当一个新版本的容器发布,旧的容器就会被销毁,新容器会代替旧容器执行任务。如果基础镜像发生变更(比如一个操作系统镜像),应用开发者就必须为相应的应用生成新的镜像。将安全漏洞补丁和缺陷修复推到生产环境变成了开发人员的责任,而不是运维人员。但实际上,运维团队应该在这方面拥有更多的经验,所以说这也是一个潜在的问题。
NIST 发布的指南列出了六个需要应用安全措施的地方,包括镜像、注册表、编配器、容器、主机操作系统和硬件。镜像漏洞有可能是操作系统漏洞、配置问题、木马、未被信任的镜像、明文存储的秘钥。镜像是基于基础镜像构建而成的,在很多情况下,应用开发者并不知道底层镜像会存在问题。不安全的连接、过时的镜像和不完备的认证授权机制给镜像注册带来了风险。如果没有做好网络流量控制,任由无限制的访问,那么用于管理容器生命周期的编配器也会出现问题。大部分编配器并不支持多用户模式,从安全方面来看,默认的设置一般无法保证最佳的安全性。
容器里也可能包含了恶意代码,它们有可能会“冲出”容器,对同一主机上的其他容器或对主机本身造成威胁。容器内部未加控制的网络访问和不安全的容器运行时配置(在高级别权限模式下运行)也会带来隐患,因为容器有可能受到来自其他方面的影响,比如应用级别的漏洞。每一个主机操作系统都有一个“攻击面”,攻击者通过这个攻击面对操作系统发起攻击。主机一旦受到攻击,主机上的容器也难逃厄运。共享内核的容器会加大攻击面。
应对措施需要从最底层开始——也就是硬件,然后往上达到容器运行时,当然也会触及镜像、注册表和编配器。之前关于容器安全的研究也提到了类似的内容。
查看英文原文: NIST Publishes Guidelines on Application Container Security
评论