当前位置: 首页 > 科技观察

Azure漏洞允许攻击者提升权限

时间:2023-03-19 10:00:04 科技观察

微软AzureFunctions云容器中的一个权限提升漏洞可能允许用户逃离虚拟容器,据研究人员称。Intezer研究人员将这个漏洞称为“皇家同花顺”,因为触发该漏洞需要绕过刷新到磁盘的限制。逃避刷新到磁盘的限制意味着将数据移交给内核,其他进程在内核中可以看到数据,但在系统重启后可能不可用。该公司发现AzureFunctions容器以特权Docker标志运行,这意味着Docker主机和容器消费者都可以共享/dev目录中的设备文件。该漏洞是由于这些设备文件具有“其他”读写权限造成的。“相对宽松的设备文件权限不是系统的默认设置,”根据周四发布的分析。根据Intezer的说法,由于AzureFunctions环境包含52个不同的文件系统分区,不同权限的用户都可以看到这些分区,因此该功能是一个很大的安全问题。“我们怀疑这些分区属于其他AzureFunctions客户端,但进一步评估表明,这些分区只是同一操作系统使用的普通文件系统,例如Docker主机的文件系统pmem0,”研究人员解释说。Intezer的研究副总裁AriEitan告诉Theatpost:“在攻击者以低权限用户身份访问受害环境的情况下,这会变得非常危险。利用这个漏洞,攻击者可以提升权限并做一些事情他将无法做到(例如从文件系统读取文件)。”此外,虽然该漏洞不是Docker逃逸漏洞,但他说:“如果用户可以升级到root权限,他们将能够使用各种Docker逃避技术逃逸到Docker主机中,两者的结合将对系统的安全构成巨大威胁。”RoyalFlushCloudContainerVulnerability为了找到该设置可能产生的攻击路径,研究人员创建了一个本地测试容器。他们发现,非特权用户可以使用Debugfs程序(一种用于调试Linux内核的特殊程序,可用于检查和更改文件系统的状态)轻松遍历AzureFunctions文件系统。而且,事实证明,非特权用户也可以直接编辑其中的任何文件。据分析:“一开始,我们尝试使用zap_block命令直接编辑文件系统块的内容。在系统内部,Linux内核会修改/dev/sda5设备文件,修改/etc/passwd文件将被写入缓存。因此,系统更改需要刷新到磁盘,这是由Debugfs程序处理的。”然而,研究人员找到了一种方法来绕过直接修改文件的这种限制。“首先,我们通过Debugfs在容器的diff目录中创建了一个硬链接,这样更改就会影响我们容器中的文件,”研究人员解释道。“这个硬链接仍然需要root权限才能编辑,所以我们还必须使用zap_block来编辑内容。受一个名为“pagecachemanagement”的项目的启发,我们可以使用posix_fadvise让内核从缓存中刷新页面。这将使内核加载我们的修改,我们最终会将它们传播到Docker主机文件系统。”研究人员指出,Debugfs还支持写入模式,允许用户对底层磁盘进行修改。“重要的是要注意,我们通常不会写入已安装的磁盘,因为这可能导致磁盘损坏,”他们补充道。研究人员解释说,由于攻击者可以在Docker主机上编辑任意文件,因此他们可以更改/etc/ld.so.preload文件,这将允许攻击者通过容器的差异执行“预加载劫持”攻击传播恶意共享文件的目录。根据研究人员的分析:“这个文件可能被预加载到Docker主机系统中的每个进程中(我们之前已经记录了HiddenWasp恶意软件使用这种技术),因此攻击者可以在Docker主机上执行恶意代码。”Intezer向微软安全响应中心(MSRC)报告了该漏洞,但微软并未发布补丁。根据分析,这家计算巨头确定该漏洞“对AzureFunctions用户的安全没有影响”,因为研究人员使用的Docker主机实际上是由另一个沙箱保护的HyperV容器。但这并不是说这个漏洞在其他配置中没有危险。“虽然MSRC表示这没什么好担心的,但我们相信高级攻击者可以利用此漏洞,并且它可以帮助攻击者进行更高级别的攻击,这就是我们发布它的原因,”Eitan说。Research工作人员还提供了漏洞验证的代码。微软没有立即回应置评请求。Intezer建议:“通过这样的案例,我们可以发现漏洞有时是未知的,或者是消费者无法控制的。我们推荐云安全的两层保护方法。做基础的保护工作,比如修复已知漏洞和加固你的操作系统以减少被攻击的可能性。实施运行时保护策略以检测和响应漏洞利用和其他内存攻击。”本文翻译自:https://threatpost.com/azure-functions-privilege-escalation/165307/【责任编辑:赵宁宁电话:(010)68476606】