该公司发现,Azure Functions容器在运行时会使用privileged Docker标志,这意味着Docker主机和容器使用者都可以共享/dev目录中的设备文件。该漏洞是由于这些设备文件具有 "他人 "的读写权限而引起的。
周四发布的分析报告中描述,"相对宽松的设备文件权限并不是系统的默认设置"。
根据Intezer的说法,由于Azure Functions环境中包含了52个不同的文件系统分区,这些分区可以使得不同权限的用户可见,这个特点就成了一个很大的安全问题。
研究人员解释说:"我们怀疑这些分区是属于其他Azure Functions客户端的,但通过进一步的评估显示,这些分区只是同一操作系统所使用的普通文件系统,比如Docker主机的文件系统pmem0 "。
Intezer研究副总裁Ari Eitan告诉Theatpost:"在攻击者以一个低权限的用户身份来访问受害者环境的情况下,这可能就会变得非常危险,利用这个漏洞,攻击者可以升级权限,做一些他本不能够做到的事情(例如从文件系统中读取文件)。"
此外,虽然该漏洞不是一个Docker逃逸漏洞,他说:"如果用户能够升级到root权限,他们将能够使用各种Docker逃逸技术逃逸到Docker主机内,将这两者结合在一起使用,对于系统的安全来说将是一个巨大的威胁。"
Royal Flush云容器漏洞
为了查找这种设置可能会产生的攻击路径,研究人员创建了一个本地测试容器。他们发现,通过使用Debugfs程序(一种用于调试Linux内核的特殊程序,可以用来检查和改变文件系统的状态),一个无权限的用户可以轻松穿越Azure Functions文件系统。而且,事实证明,非特权用户还可以直接编辑其中的任何文件。