0x00 前言
前面,我们用很长的篇幅介绍了容器的威胁模型,这些威胁的共同目标都是为了突破安全边界。
你一定很好奇:什么是安全边界,以及如何突破安全边界?这对于建立容器安全防护观又有什么影响呢?
别急,我们逐一进行讲解。
0x01 安全边界
安全边界(信任边界)在系统中无处不在,若您想在各种不同的安全边界之间“反复横跳”,您得需要各种不同的权限合集。
那安全边界是怎么设置的呢?有的是通过管理方式设置的,例如:在Linux系统中,系统管理员可以通过修改用户所属的组来指定用户可以访问哪些安全边界的文件。
如果您对Linux 的文件权限不是很熟悉,我们将在《第 2 课:Linux 系统调用、权限和 Capabilities》中为您进行简单的回顾。
在云原生的世界里,容器就是安全边界,容器中的应用程序就应该只在容器中运行,除非您明确赋予了应用程序跨越安全边界的权限(例如,通过挂载卷的方式),那么它不能也不应该访问容器之外的数据代码。
0x02 突破安全边界
攻击者与他的目标之间存在越多的安全边界,他就越无法获取该目标,这里的目标可以是您的用户数据。
但正如前面我们学习的《1.2 容器威胁模型》所描述的那样,攻击者可以将攻击向量串联起来,以突破多个安全边界。例如:
-
若攻击者发现应用程序中的依赖存在漏洞,那么他们可以在容器中远程执行代码。 -
如果容器中没有可以直接访问的有价值的数据,那么攻击者就需要找到一种方法来离开容器(无论是进入其他的容器还是逃逸到宿主机中)。在这里,我们列举出两种方法以供参考: -
通过容器自带的逃逸漏洞从容器中逃逸。 -
通过容器的不安全配置进行逃逸。 -
若攻击者成功地从容器内逃逸到了宿主机上,那么他下一个目标应该是要获取宿主机的 root
权限。在这里我们提出一种对于开发者而言非常容易中招,而对于攻击者而言非常简单的方法,那就是: -
应用程序在容器内以 root
的身份运行。具体原因我们将在《第4课:容器之间的隔离》中揭晓。 -
攻击者获取到宿主机的 root
权限过后,就可以访问宿主机上的任何内容了,甚至可以说是宿主机上运行的容器都可以访问宿主机上的所有内容了。
所以,为了避免此类事件的发生,在部署环境中增加或加强安全边界是个很不错的主意。
0x03 总结
本文,我们简述了安全边界的概念,并且提出:在云原生的世界里,容器就是安全边界。容器所面临的大多数风险都起源于安全边界被突破,因此若要提升系统环境的安全性,小小地增加或加强安全边界就可以达到显著的效果。
为了让大家深入理解突破安全边界的威胁,我们结合了《1.2 容器威胁模型》的内容,将攻击向量串联起来,向大家进行展示。
在这里,我们再次强调使用威胁模型的重要性,因为威胁模型考虑了来自应用程序运行环境内部的攻击可能性。
在云的部署环境中,您可能会与其他的用户及其应用程序共享一些资源。这种共享及其资源的特性被称为多租户性,它对于威胁模型同样有着重要的影响。我们下一讲揭晓~
如果您对这个话题感兴趣,欢迎订阅合集:容器安全防护基础,我们将为您提供系统的学习资料~
原文始发于微信公众号(喵苗安全):1.3 安全边界
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论