2022-08-26 01:17:35
来 源
中存储
Docker
容器风险包括错误配置的权限分配、容器镜像中的恶意软件、使用过时和易受攻击的容器镜像、容器编排器添加冗余身份验证工具、缺乏对容器覆盖网络的可见性以及恶意软件在容器和操作系统之间传播。

容器安全最佳实践包括将安全工具集成到容器代码中、扫描第三方和专有容器映像中的恶意软件和错误、使用容器编排器自动执行安全策略、最小化主机操作系统、使用命名空间隔离以及将类似容器分组到一个主机OS。

这些最佳实践可帮助 IT 团队防范潜在风险。容器风险包括错误配置的权限分配、容器镜像中的恶意软件、使用过时和易受攻击的容器镜像、容器编排器添加冗余身份验证工具、缺乏对容器覆盖网络的可见性以及恶意软件在容器和操作系统之间传播。

容器镜像安全威胁

从广义上讲,一旦黑客获得对容器系统的访问权限,黑客就可能会解析他们有权访问的代码,以便对其他系统进行攻击。

或者,黑客可能会使用被盗或欺骗的凭据来访问容器环境并直接在容器上安装恶意软件。使用强大的身份验证和授权工具可以防止这种情况发生。

图像漏洞

映像是在容器(例如微服务)中运行代码的基本文件。不能直接更改图像。当在代码中发现漏洞时,必须将容器移除并替换为具有更新图像的新容器。这里的主要问题是在审查生产中的容器的扫描程序发现漏洞之前,漏洞可能会被忽视多长时间。

配置错误

当容器映像配置中存在错误时,即使是完全最新且安全的容器也可能会暴露给恶意行为者。错误的配置可能会意外地授予用户太多访问容器的权限。另一个例子是将 SSH 功能集成到容器中,从而为黑客访问易受攻击的容器创造了另一种途径。

同样,如果一个组织对其容器镜像使用公共容器注册表,它就有使用具有已知错误配置的镜像的风险,黑客知道如何利用该镜像。例如,2019 年,Talos Intelligence 发现Alpine Linux Docker映像的 root 用户密码为空。简而言之,root 访问不受密码保护。

审查不力的第三方容器镜像

开发人员使用来自容器注册表的第三方容器映像并不少见。如果没有进行尽职调查并且图像没有经过适当的审查,那么包含恶意软件的图像可能会进入系统。一旦恶意软件与生产中的其他容器一起出现,它就可以轻松传播到其他容器或主机操作系统。

审查图像包括使用图像扫描仪、检查公共图像的可信签名以及确保经常更新图像——尤其是针​​对已披露的漏洞。

图像扫描仪验证图像不包含已知漏洞。虽然这仍然存在未知漏洞可以通过扫描程序的机会,但它仍然限制了对黑客开放的威胁向量。

容器注册表管理

容器注册表是存储图像以供开发人员使用的地方。无论是内部还是外部注册表,具有已知漏洞的旧容器映像都会对组织构成风险。他们的存在本身不是问题。风险在于,开发人员可能仍会使用这些旧的、易受攻击的图像。在这种情况下,图像很容易受到黑客知道或更容易找到的攻击。组织可以通过教育他们的开发人员避免使用旧图像来降低这种风险。此外,定期图像审核有助于发现旧图像。

组织的注册表需要使用充足的身份验证和授权要求来访问敏感或专有应用程序的图像。如果没有适当的保护或最小权限原则,就会存在知识产权丢失、应用程序技术细节暴露以及其他受信任图像损坏的风险。损坏的映像尤其危险,因为所有使用损坏映像的容器和主机都会受到威胁。

编排软件风险

与其他容器元素一样,容器编排工具的访问仍然是一个问题。编排器可能包括一个身份验证服务,该服务与组织自己的身份验证器分开运行。这种冗余可能会引发问题,因为在协调器的身份验证服务中审核用户帐户可能不像组织主要依赖的那样定期进行。如果一个帐户不再使用并且在编排器的身份验证服务中,它可能会在没有通知的情况下被泄露,从而可能导致大规模泄露。

编排软件通常管理容器用来向其他容器节点发送数据的覆盖网络。这里的问题是,覆盖网络通常对其他网络监控和安全工具是不透明的。这些其他工具只能看到网络上的加密数据包,而不是发送的实际数据和请求。如果没有完全的可见性,IT 团队可能会错过其网络中的重大安全事件。

容器间流量不通过网络外围安全工具的方式增强了这一点。在这种情况下,编排器必须将安全工具集成到其中,以监控和保护容器之间的数据传递。

根据容器信息的敏感程度对容器的覆盖网络进行分段非常重要。例如,如果一个不太安全的面向公众的网站或应用程序与用于敏感财务信息的应用程序位于同一个覆盖网络上,那么黑客访问不太安全的应用程序并在覆盖网络上传播并不难到具有更敏感数据的容器。

这同样适用于共享主机操作系统内核的容器。敏感和不敏感的应用程序可能会共享一个主机操作系统,因为一些编排器将容器部署在当时可用资源最多的地方,而不考虑安全风险。但是,当安全性较低的容器工作负载受到威胁时,敏感容器仍然面临更大的受到威胁的风险。

容器逃逸

容器安全中反复出现的主题是恶意软件从一个容器跳转到另一个容器或主机操作系统。这被称为“容器逃逸”,是容器运行时软件漏洞的一部分,例如 runc于 2019 年 2 月宣布了此漏洞。当黑客能够访问运行时软件时,他们可以更改软件并获得访问权限到其他容器。

容器逃逸在某种程度上很容易实现,部分原因是各个容器通常能够使用覆盖网络来访问彼此和主机操作系统。受感染的容器可以扫描更大的网络以进行南北通信。受感染的容器使用此信息来查找其他弱点,以便在容器环境之外加以利用。

容器也应该很少能够对主机 OS 文件系统进行更改。在更改影响主机操作系统基本功能的位置时尤其如此 - 例如 Linux 容器中的 /boot 或 Windows 容器中的 C:\Windows 等位置。这是一种扩展权限的方法,也是一种攻击主机及其容器的方法。

主机操作系统的挑战

主机操作系统有可能成为攻击面的最大部分。这就是为什么将容器特定的操作系统精简为仅支持在其上运行的容器的功能很重要的原因。当操作系统的功能较少时,黑客可以使用的攻击途径就会减少。

没有任何 IT 元素没有漏洞。而且,如果黑客成功利用了操作系统的漏洞,他们将获得对系统更大部分的访问权限,而不是从容器中访问。

主机操作系统还面临来自组织内部的威胁,无论是否恶意。对主机操作系统的访问应该受到限制,因为与主机的直接连接,而不是通过编排层,可能会导致超出员工打算工作的少数容器的变化。

通过 DevSecOps 实现容器安全

DevSecOps是一种实践,开发人员、安全和运营部门和流程在如何协同工作方面保持一致,以便应用程序的不同元素有效集成以支持应用程序的生命周期。

DevSecOps 的目标是在应用程序的开发中包含安全和操作能力,而不是稍后在应用程序之上添加这些能力。这非常适合容器化应用程序的每个方面都具有内置安全性的方法。

DevSecOps 团队能够创建安全策略并通过编排器配置其自动执行。这些团队还可以建立预定义的缓解步骤。缓解步骤可以隔离受感染的容器,将其放在不同的网络上,重新启动它,甚至停止其运行,直到完全了解威胁。

容器安全工具

集成是保护容器的关键主题。其中一个示例是将安全工具集成到应用程序或环境的代码中。

例如,入侵防御系统 (IPS) 用于监控容器之间移动的所有流量。作为防止已知漏洞的一部分,IPS 被放入环境中的每个主机操作系统中。如果已知漏洞正在修复过程中,但存在该漏洞的容器仍在生产中,则 IPS 可以检测到利用该漏洞的尝试并阻止该利用尝试。

为容器镜像使用第三方注册表时,重要的是只使用具有可信签名的镜像,这些签名显示谁创建了镜像。即便如此,使用容器扫描器扫描容器镜像中的漏洞也很重要。

容器扫描器在内部注册表中寻找已知的漏洞和威胁,例如恶意软件。这样,易受攻击或恶意的容器就不会到达注册表。在将容器发送到生产环境之前,扫描仪还可以作为最后一组检查。一旦投入生产,扫描仪就可以检测到受损的容器。

当容器在生产环境中运行时,像 Kubernetes 这样的编排工具可能会带来上述问题。但是,编排器还提供了自动执行容器安全策略的工具。

容器安全风险和最佳实践:关键要点

  1. 容器安全风险集中在通常由错误配置、弱镜像和镜像以及审查不善的第三方镜像引起的漏洞上。
  2. 主要的容器安全最佳实践包括将安全功能集成到应用程序代码中、审查容器映像以及通过协调器使用自动安全策略实施。
  3. 审查从内部和外部注册表获取的图像对于确保在漏洞和恶意软件影响大量容器和主机操作系统之前在开发早期发现它们至关重要。
  4. DevSecOps IT 团队模型是将安全功能集成到开发过程中的有效方式。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。