如果您是 Steam 游戏平台的订阅者,您可能已经注意到更新4月4日起停止客户端软件。它修复了一个神秘的错误,该错误导致软件因格式错误的 UDP 数据包而崩溃。发现此缺陷的研究人员 Tom Court 现已发表所有技术细节。令人惊讶的是:事实证明,这个错误实际上使得控制任何连接用户的电脑成为可能,并且这种情况至少从 2008 年一直持续到 2017 年 7 月。也就是说大约十年。
问题出在Steam协议上,它依赖于UDP。在其软件实现中,不良的数据包长度检查可能会导致内存损坏。因此,将格式错误的 UDP 数据包发送到用户的 PC 就足以在其中执行任何代码。
攻击者必须首先分析受害者的流量
为了实现这一点,攻击者必须首先观察受害者的流量,以便识别所使用的 IP 地址和端口号,以及 Steam 数据包的序列号。此信息对于将恶意数据包作为合法数据包传递给客户端软件是必需的。
在一个Youtube 视频,Tom Court 演示了这样的攻击。最后我们看到发送的数据包导致计算器打开。
这种攻击直到 2017 年 7 月 11 日才成为可能,当时 Steam 将名为 ASLR(地址空间布局随机化)的内存保护功能集成到其客户端软件中。在此日期之后,内存损坏不再允许执行任意代码。但是,它可能会使软件崩溃。
Tom Court 强调了 Steam 开发者非常强大的响应能力。 2018 年 2 月 20 日收到警报后,他们在不到 12 小时内开发了一个补丁。不幸的是,这样一个总而言之非常简单的错误,在代码中保留了很长时间而没有被发现。这就是为什么安全研究人员鼓励开发人员定期审核他们的旧代码并更新它。