提出了一种远程确定服务器内存碎片的攻击方法

格拉茨技术大学(奥地利)的一组研究人员此前因开发 MDS、NetSpectre、Throwhammer 和 ZombieLoad 攻击而闻名,他们发布了一种针对内存重复数据删除机制的新侧通道攻击方法 (CVE-2021-3714) ,它允许确定内存中是否存在某些数据,组织内存内容的逐字节泄漏,或确定内存布局以绕过基于地址的随机化 (ASLR) 保护。 新方法与之前演示的重复数据删除机制攻击变体不同,该方法通过使用通过 HTTP/1 和 HTTP/2 协议发送给攻击者的请求的响应时间变化作为标准,从外部主机执行攻击。 已经针对基于 Linux 和 Windows 的服务器展示了执行攻击的能力。

针对内存去重机制的攻击,利用写操作处理时间的差异作为渠道,在数据变化导致使用写时复制(COW)机制克隆去重内存页的情况下泄露信息。 在运行过程中,内核会检测来自不同进程的相同内存页并将它们合并,将相同的内存页映射到物理内存的单个区域中以仅存储一份副本。 当其中一个进程尝试更改与已删除重复的页面关联的数据时,会发生异常(页面错误),并且使用写入时复制机制,会自动创建内存页面的单独副本,并将其分配给该进程。 完成复制需要花费额外的时间,这可能是数据更改干扰另一个进程的迹象。

研究人员表明,COW 机制造成的延迟不仅可以在本地捕获,还可以通过分析网络上响应传递时间的变化来捕获。 已经提出了几种方法,用于通过分析 HTTP/1 和 HTTP/2 协议上的请求的执行时间来确定远程主机的内存内容。 为了保存选定的模板,使用标准 Web 应用程序将请求中收到的信息存储在内存中。

攻击的一般原理归结为用可能重复服务器上已存在的内存页内容的数据填充服务器上的内存页。 然后攻击者等待内核对内存页面进行去重和合并所需的时间,然后修改受控的重复数据并评估响应时间来确定命中是否成功。

提出了一种远程确定服务器内存碎片的攻击方法

实验过程中,通过全球网络攻击时最大信息泄露率为34.41字节/小时,通过本地网络攻击时最大信息泄露率为302.16字节/小时,比其他通过第三方渠道提取数据的方法(例如,在 NetSpectre 攻击中,数据传输率为 7.5 点 XNUMX 字节)。

已经提出了三种有效的攻击选项。 第一个选项允许您确定使用 Memcached 的 Web 服务器内存中的数据。 该攻击归结为将某些数据集加载到 Memcached 存储中,清除重复数据删除的块,重写相同的元素,并通过更改块的内容为发生 COW 复制创造条件。 在使用 Memcached 进行实验期间,可以在 166.51 秒内确定虚拟机中运行的系统上安装的 libc 版本。

当使用 InnoDB 存储时,第二个选项可以通过逐字节重新创建内容来找出 MariaDB DBMS 中的记录内容。 该攻击是通过发送经过特殊修改的请求来进行的,导致内存页面中出现单字节不匹配,并分析响应时间以确定对该字节内容的猜测是否正确。 从本地网络发起攻击时,此类泄漏的发生率很低,每小时可达 1.5 字节。 该方法的优点是可以用来恢复未知的内存内容。

第三种方案可以在4分钟内完全绕过KASLR保护机制,在偏移地址位于其他数据未发生变化的内存页面的情况下,获取虚拟机内核镜像的内存偏移信息。 该攻击是从距受攻击系统 14 跳的主机发起的。 用于实施所提出的攻击的代码示例承诺将在 GitHub 上发布。

来源: opennet.ru

添加评论