记一次AMD漏洞挖掘:从文件权限配置错误到驱动权限提升
字数 1583 2025-08-30 06:50:11
AMD漏洞挖掘与分析:从文件权限配置错误到驱动权限提升
1. 漏洞背景
AMD(超微半导体公司)是一家总部位于加利福尼亚州圣克拉拉的美国跨国半导体公司,开发计算机处理器和相关技术。本次漏洞涉及AMD芯片组驱动程序的权限配置问题。
2. 漏洞发现过程
2.1 初始发现
使用PrivescCheck工具进行信息收集时,发现AMD目录存在权限配置问题:
- 普通用户对AMD目录具有读取、执行和修改权限
- "Authenticated Users"组对该文件夹具有修改权限
Authenticated Users:Windows操作系统中的一个安全主体,代表所有通过系统身份验证的用户或计算机账户
2.2 目录结构分析
AMD目录下有两个重要子文件夹:
- AMD-Software-Installer:软件安装包目录(不重要)
- Chipset_Software:AMD驱动安装配置文件目录(关键)
Chipset_Software文件夹包含:
- 驱动inf安装配置文件
- 驱动sys程序
- 驱动msi安装文件
3. 漏洞利用分析
3.1 驱动配置文件修改漏洞
以AMD PSP驱动为例(路径:AMDChipset_Software\Binaries\PSP Driver\W11x64):
-
INF文件分析:
INF DestinationDirs Section:定义文件在目标系统上的安装路径- 默认从
system32\drivers目录导入dll - 可修改配置文件使其从用户可控目录导入dll
-
修改示例:
- 将导入路径改为
AMDChipset_Software\Binaries\PSP Driver\W11x64 - 该目录用户可写入恶意dll
- 将导入路径改为
-
利用过程:
- 修改
amdpsp.inf文件 - 通过设备管理器手动更新驱动
- 选择修改后的inf文件
- 系统会将指定目录下的dll移动到system32目录
- 修改
3.2 权限提升漏洞
AMD External Events Service Module漏洞:
- 服务程序
atiesrxx.exe会从当前目录加载MSASN1.dll - 由于用户可以修改驱动文件夹内容,可放置恶意dll
- 服务以系统权限运行,导致权限提升
利用步骤:
- 编写恶意dll并重命名为
MSASN1.dll - 将dll放入AMD驱动文件夹
- 重启服务(开机自启动)
- 恶意dll以系统权限执行
4. 漏洞验证
4.1 文件移动验证
- 修改inf文件指定源路径
- 通过驱动更新将文件移动到system32
- 验证文件是否成功移动
4.2 权限提升验证
- 放置恶意
MSASN1.dll - 重启服务
- 检查dll是否以系统权限执行
5. 漏洞影响
- 本地权限提升至SYSTEM
- 可用于权限维持(服务开机自启动)
- 影响AMD芯片组驱动程序
6. 厂商回应
AMD官方回应:
- 问题出在AMD芯片组驱动程序软件的安装程序中
- 不在漏洞赏金范围内
- 后续更新会发布安全公告或简报
7. 防御建议
-
权限修复:
- 限制AMD驱动目录的访问权限
- 仅允许SYSTEM和Administrators完全控制
-
代码修复:
- 修改服务加载dll的逻辑
- 使用绝对路径或系统目录加载关键dll
-
监控措施:
- 监控system32目录下的异常文件添加
- 监控驱动文件的修改行为
-
用户建议:
- 及时更新AMD芯片组驱动
- 检查系统目录下的可疑文件
8. 技术要点总结
-
文件权限配置错误:
- 普通用户可修改驱动配置文件
- 导致可控制驱动安装行为
-
DLL劫持漏洞:
- 服务从当前目录加载dll
- 结合文件权限问题导致权限提升
-
利用链:
文件可写 → 修改inf → 控制文件移动 ↓ 文件可写 → 放置恶意dll → 服务加载 → SYSTEM权限 -
持久化:
- 利用服务自启动特性
- 每次开机自动执行恶意代码
本漏洞展示了文件权限配置错误如何与DLL加载行为结合导致严重的本地权限提升漏洞,强调了最小权限原则在系统设计中的重要性。