PC-Doctor组件存在提权漏洞,海量设备面临网络攻击风险
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。
PC-Doctor是国外的一款计算机硬件检测和清理优化工具,有着相当长的应用历史,很多计算机设备生产厂商基于其组件构建了自己的计算机管理软件,并预装进设备获得了大量分发,因此本次发现的漏洞将影响全球范围内数以亿计的计算机设备。
来自SafeBreach的专家发现大多数戴尔PC上预装的戴尔SupportAssist软件存在DLL劫持漏洞(CVE-2019-12280),具备普通用户权限的攻击者可利用该漏洞在特定位置植入恶意DLL文件来利用提升的权限执行任意代码,漏洞的根本原因是缺乏安全的DLL加载以及缺少针对二进制文件的数字证书验证。
漏洞解构
SupportAssist用于检查系统硬件和软件的运行状况,检测到问题时它会向戴尔发送必要的系统状态信息以便进入故障排除流程。这些针对硬件的检查需要很高的权限,许多服务使用SYSTEM权限运行。
安全专家介绍,SupportAssist使用PC-Doctor公司开发的组件来访问敏感的低级硬件,包括物理内存、PCI和SMBios。
在戴尔硬件支持服务启动后,它会执行 DSAPI.exe ,而DSAPI.exe又会执行 pcdrwi.exe。两个可执行文件都以SYSTEM权限运行。
接下来,该服务会执行多个PC-Doctor可执行文件,这些可执行文件将收集有关OS和计算机硬件的信息。这些可执行文件实际上是常规PE文件,但具有不同的扩展名“p5x”。
这些可执行文件都加载了DLL库,这些DLL库能够从不同的源(软件和硬件)收集信息。加载库后,ProcMon中会出现以下内容:
从截图中可以看出,有三个p5x可执行文件试图在c:\ python27目录(测试设备的PATH环境变量)中找到以下DLL文件:LenovoInfo.dll、AlienFX.dll、atiadlxx.dll、atiadlxy.dll。
安全专家发现,在他们的测试环境中,路径c:\ python27下有一个ACL允许任何经过身份验证的用户将文件写入ACL,这意味着可以提升权限并允许普通用户编写缺少的DLL文件并以SYSTEM权限运行代码,使得攻击者能够通过签名服务加载和执行恶意工作负载,实现白名单旁路攻击和签名验证绕过等恶意行为。
时间线
04/29/19 – 报告漏洞
04/29/19 – 戴尔的初步回复
05/08/19 – 戴尔确认该漏洞
05/21/19 – 戴尔将此问题发送给PC-Doctor
05/21/19 – PC-Doctor计划在6月中旬发布修复程序
05/22/19 – PC-Doctor正式发布漏洞公告(CVE-2019-12280)
05/28/19 – 戴尔发布受PC-Doctor受影响的SupportAssist的修复补丁
06/12/19 – 披露日期延长至6月19日
06/19/2019 – 漏洞披露
后续影响
考虑到PC-Doctor在全球的装机量超过1亿台,漏洞的影响范围可能更加深远。SafeBreach的安全研究人员发现,存在漏洞的组件还用在了CORSAIR Diagnostics、Staples EasyTech Diagnostics、Tobii I-Series和Tobii Dynavox等诊断工具中。