谷歌安全研究员Tavis Ormandy发现暴雪游戏存在一个严重漏洞,攻击者利用该漏洞针对游戏玩家电脑可实现远程恶意代码执行。“魔兽世界”、“守望先锋”、“暗黑破坏神3”、“炉石传说”和“星际争霸2”等由暴雪娱乐公司创造的流行网络游戏,每月的在线玩家数量都达5亿人次。
如果要用网络浏览器在线玩暴雪游戏,用户需要在自己电脑系统中安装一个名为‘Blizzard Update Agent’的客户端程序,利用它来运行HTTP协议和1120端口的JSON-RPC服务,以便执行‘命令安装、卸载、设置更改、更新和其他维护相关的选项’动作。
Tavis Ormandy发现这个安装在玩家系统中的Blizzard Update Agent,存在一种名为’DNS Rebinding‘(DNS重绑定)的漏洞,这种漏洞实现的攻击允许用任何网站充当外部服务器和玩家本地主机之间的中转桥梁。
当攻击者简单地创建了一个DNS入口,并把某个可控制的URL页面绑定了客户端IP 127.0.0.1之后,迷惑电脑玩家访问该构造的URL页面,在此过程中,DNS重绑定技术的利用导致DNS发起的请求破坏浏览器同源策略(SSO),可使攻击者各客户端Blizzard Update Agent程序发起一些JavaScript方式的执行命令。
尽管浏览器中运行的随机网站通常不能向自己以外的主机域名发起请求,但由于本地的Blizzard Update Agent服务不会验证客户端请求的主机名,也不会响应此类请求,所以导致了该漏洞的可利用。
利用DNS重绑定技术,可以把某个可控URL,解析到玩家本地主机,进而与之进行通信。也就是说任何可控的URL都能向客户端发送命令。由此,我使用以下页面来生成测试名为7f000001.c0a80001.rbndr.us的主机名。
https://lock.cmpxchg8b.com/rebinder.html
因此,我在7f000001.c0a80001.rbndr.us域名中绑定了127.0.0.1和199.241.29.227两个IP:
通过上述信息可知,主机名在两个IP之间进行解析处理,但当DNS Response中的TTL字段足够短时,将不会从本地DNS缓存中读取,而是重新发起DNS请求,当两个IP绑定到同一主机名上后,浏览器就会认为该两个IP都来自同一源地址,由此突破同源策略实现攻击。以下为一个简单地PoC测试页面,它可以实现对Blizzard客户端的攻击,利用网络驱动或目标设定来在玩家浏览器中和系统中“下载”或安装恶意dll以及数据文件等。
http://lock.cmpxchg8b.com/yah4od7N.html
Ormandy最初于去年12月向暴雪公司报告了该漏洞,并催促暴雪公司尽快制作补丁以免玩家电脑系统受到影响。但在初次沟通之后,暴雪公司却停止了对Ormandy的邮件回应,并偷偷地在客户端版本5996中加入了部分缓解措施。
“暴雪公司在12月22日就突然停止了和我的邮件交流,他们不再回复我任何问题,但却悄悄在5996客户端中加入了一种奇怪的解决方案。” “他们的解决方案似乎是查询客户端命令行,获取exename的32位FNV-1a哈希值,然后检查它是否在黑名单中,我建议他们把主机名列入白名单,但显然该解决方案过于简单。暴雪在不通知或咨询我的情况下就释出这个补丁,我非常不高兴。
但当Ormandy在此公开了该漏洞之后,暴雪公司却主动联系他并声称,将会采取更多稳定的主机白名单机制来修复该漏洞,相关补丁正在研发部署之中。针对该漏洞,Ormandy还对其它大型网游是否进行了检查测试。Ormandy还于上周发现了开源下载工具Transmission BitTorrent中存在的一个RCE漏洞,该漏洞同样可致使攻击者在Transmission客户端远程执行恶意代码,进而控制客户端系统。