介绍
MS-RPC 是 Windows 网络中使用率较高的协议,许多服务和应用程序都依赖它。因此,MS-RPC 中的漏洞可能会导致严重后果。Akamai 安全情报小组在过去一年中一直致力于 MS-RPC 研究。我们发现并利用了漏洞,构建了研究工具,并记录了该协议的一些未记录的内部细节。
虽然之前的博客文章重点关注服务中的漏洞,但这篇文章将研究 RPC 运行时(MS-RPC 的“引擎”)中的漏洞。这些漏洞类似于我们在 2022 年 5 月发现的漏洞。
整数溢出模式
这三个新漏洞有一个共同点——它们的存在都是因为在三个数据结构中插入时出现了整数溢出:
- SIMPLE_DICT(仅保存值的字典)
- SIMPLE_DICT2(同时保存键和值的字典)
- 队列
所有这些数据结构都是使用动态数组实现的,每次数组满了之后,数组就会增大。这是通过分配当前数组所分配内存的两倍来实现的。这种分配很容易受到整数溢出的影响。
图 1 显示了 RPC 运行时的反编译代码。它显示了插入 SIMPLE_DICT 结构的过程以及可能触发整数溢出的易受攻击的代码行(突出显示&