一、背景
AMD的Gaming Evolved program会将一些与游戏相关的程序打包到AMD的驱动中,在安装驱动时这些程序也会被安装到用户电脑上。AMD 显卡有极高的市场占有率,因此该驱动程序的漏洞分布较广。
CVE-2018-6547漏洞存在一个游戏录像和分享的工具PlaysTV中,PlaysTV的更新服务PlaysService提供两个解压和执行命令的http接口,由于并没有对解压位置和执行的命令作合法的检查,导致黑客可通过解压接口以管理员身份覆盖重写电脑上的任意文件,通过执行命令接口则可以系统管理员权限执行本地任意可执行文件或远程SMB上任意可执行文件。
这一漏洞影响PlaysTV 1.27.5及之前的所有版本。腾讯御见威胁情报中心建议AMD显卡的用户尽快升级驱动程序到最新版本。
二、漏洞原理
下面以PlaysTV 1.27.3为例分析。
PlaysService是一个由python脚本编写的服务,由py2exe类似的工具打包生成了plays_service.exe。从plays_service.exe的字符串可以看到大量与python相关的字符串。
Plays_service.exe在初始化python环境时,会把安装目录下python%d%d.zip解压出来。
该压缩包中存放的是大量已编译的.pyd的python 字节码文件。用反编译工具uncompyle6生成原始脚本文件。
Plays_service.py的功能如下:
1、本地监听一个端口开启HTTP服务,端口号写入注册表HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\PlaysTV\Service中。
2、处理HTTP请求 extract_files和execute_installer。
1)extract_files写任意文件
这是一个测试的接口,向指定文件写入’Test file created by service!!!’这段内容。但是被保留到正式版并且没有对文件进行检查,导致可以向任意文件写入测试内容,可能导致系统文件被损坏甚至系统崩溃。
2)execute_installer执行任意程序
重现该漏洞,查看监听的端口:
弹出计算器:
三、补丁分析
1、删除测试接口extract_files(左边是存在漏洞的版本,右边是最新版本)
2、在execute_installer接口中增加文件签名验证
is_sig_valid调用ltc_host.dll的导出函数IsSignatureValid。
IsSignatureValid会校验文件的证书有效性,同时判断是否是指定的三个指纹中的一个。
四、漏洞防御
建议用户尽快升级PlaysTV至最新版本,电脑管家已经完美支持检测和升级。
参考资料:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6547
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-6547
https://www.securifera.com/advisories/CVE-2018-6547/
领取专属 10元无门槛券
私享最新 技术干货