Steam客户端存在一个10年的远程程序代码执行漏洞,Valve紧急修补

网络安全公司Context Information Security资深研究员Tom Court发现,游戏平台Steam客户端存在一个至少10年的远程程序代码执行漏洞,而这个漏洞影响每月1,500万的活跃用户,游戏公司Valve在收到网络安全通报后,紧急在12小时内就发布安全性补丁。

Steam客户端函数库的堆积(Heap)崩溃漏洞能被远程触发,该区程序代码是用来处理并重组多个UDP数据封包,Steam客户端依赖自定义的协议进行通信,这个协议创建于UDP之上。简单来说,这个错误发生于,客户端程序没有对分段数据报的第一个数据封包进行基本的检查,以确保指定的封包长度小于或是等于总数据报的长度,Tom Court认为这是一个疏忽,因为在后续传输的封包都有经过检查。

在现代操作系统中,单独的堆积崩溃漏洞很难控制,因此也不容易被利用于远程程序代码执行攻击,但是Steam自定义的内存分配器,以及在2017年7月之前,steamclient.dll二元档中还没有使用地址空间配置随机加载(Address Space Layout Randomisation,ASLR)保护技术,因此大幅提高了这个漏洞被利用的可能性,

Tom Court表示,这是一个简单的漏洞,在缺乏现代化网络安全技术的保护下,漏洞被利用起来也相对简单许多。他在今年2月告知Valve该漏洞,而Valve也在12小时内就在客户端测试版发布了修正补丁,并在3月22日以将正式版推送给所有玩家,目前没有证据显示该漏洞曾被利用来发动攻击。

这个漏洞之所以存在这么久还没有被发现,Tom Court认为,由于这部分程序运行良好,开发者似乎也没有特别的理由更新,但这反而是一个很好的教训,定期检查包含老旧程序代码的程序显得十分重要,以确保这些程序符合现代安全标准,因此他认为,Valve应该全面检查Steam客户端的程序代码。

另外,他还提到,在Context Information Security通过电子邮件通知Valve漏洞后,在大约8小时过后,第一个修复程序已经产生且推送成为客户端测试版分支,这个过程非常快速,有别于不少供应商漫长的往返沟通,目前Valve是Context Information Security心中修复排行榜中的第一快。