CVE-2025-1729 - 利用TPQMAssistant.exe实现权限提升漏洞分析

本文详细分析了CVE-2025-1729漏洞,通过Lenovo ThinkPad中的TPQMAssistant.exe可执行文件存在的DLL劫持问题,实现从普通用户到管理员权限的提升。文章包含漏洞原理、利用步骤及厂商修复方案。

CVE-2025-1729 - 利用TPQMAssistant.exe实现权限提升

作者:Oddvar Moe
发布日期:2025年7月8日

在深入研究新款Lenovo ThinkPad P1 Gen7内部机制时,我意外发现了一个从好奇心快速升级为实际权限提升漏洞的案例。

每天上午9:30整,一个名为Lenovo\TrackPointQuickMenu\Schedule\ActivationDailyScheduleTask的计划任务会自动启动二进制文件:C:\ProgramData\Lenovo\TPQM\Assistant\TPQMAssistant.exe

图1 - 计划任务

该任务仅在用户登录时运行,特别值得注意的是此二进制文件存在动态链接库(DLL)侧加载漏洞——这是一个经典且常被忽视的攻击向量。

可写目录与缺失DLL

存放TPQMAssistant.exe的目录允许标准用户写入,这本身就是一个危险信号。文件夹权限允许CREATOR OWNER写入文件,意味着任何本地用户都可以向此位置投放文件。

图2 - 文件夹上的CREATOR OWNER权限

当计划任务(或二进制文件本身)被触发时,它会尝试从工作目录加载hostfxr.dll但失败,导致NAME NOT FOUND事件。这表明二进制文件正在寻找其自身目录中不存在的依赖项——这是进行侧加载的绝佳机会。

图3 - 名称未找到

包含TPQMAssistant.exe的目录允许用户写入,从而可以向文件夹添加新文件。

图4 - 文件夹上的创建者所有者权限

代码执行

通过在TPQMAssistant.exe相同目录中放置恶意的hostfxr.dll,我们可以劫持加载过程。当二进制文件执行时,它会成功加载我们植入的DLL并运行我们的代码。在我的概念验证代码中,我简单地显示一个消息框来验证代码执行。

图5 - 植入DLL的简单概念验证源代码

图6 - 来自加载DLL的消息框

从用户到管理员 - 计划权限提升

虽然这本身就是一个稳固的立足点,但真正的权限提升发生在具有管理员权限的用户登录时。由于计划任务每天上午9:30在登录用户的上下文中运行,我们的恶意DLL将在管理员会话中执行。尽管该进程将以中等完整性运行,但存在足够的UAC绕过方法,如果您想要完全利用,这可以成为一个可行的权限提升途径。我决定在此停止,并简单询问联想是否需要完整的概念验证代码,因为我觉得已经证明了漏洞的存在。事实证明,这足以让他们开始修复。

攻击流程将是:以普通用户身份登录,植入恶意代码,注销,然后等待本地管理员使用机器以执行代码。

缓解措施

联想的产品安全事件响应团队(PSIRT)向我发送了一个修复程序,我进行了测试和验证。修复方法是安装他们发布的Microsoft Store中的TrackPoint Quick Menu版本1.12.54.0。1.12.54.0版本解决了权限提升漏洞,因为这是一个UWP应用程序,将数据存储在c:\program files\下。UWP版本可以在此处找到:https://apps.microsoft.com/detail/9mz08jf4t3ng

但是,这并没有移除现有的win32版本应用程序或计划任务,使其仍然易受攻击。将此情况告知PSIRT后,他们回复如下:

“预装TPQM的更新包将通过System Update交付,这是我们自动拉取应用程序、固件和驱动程序更新的机制。新包将把TPQM调度程序的标准安装路径从C:\ProgramData目录移动到C:\Program Files (x86)\Lenovo\TPQM\TPQMAssistant。它还将检查调度程序可执行文件是否已在C:\ProgramData路径下注册,如果是,将删除该路径并卸载调度程序,然后继续在C:\Program Files (x86)目录下为调度程序创建新路径。”

基于此,似乎一旦他们开始部署软件,问题就会得到解决。

最后思考

与PSIRT合作非常愉快——他们回应迅速,在沟通中礼貌且坦率。他们还在过程中主动向我发送信息,无需我多次询问。我唯一希望的是能为安全研究人员提供奖励,如纪念品或奖金,这可能会带来安全研究人员的更多发现(在我看来)。我确实收到了一份感谢证书。

图7 - 感谢证书

时间线

  • 2025年1月30日 - 初步发现
  • 2025年1月31日 - 首次向PSIRT发送关于发现的电子邮件
  • 2025年1月31日 - 跟踪编号和确认正在由开发团队审查
  • 2025年2月18日 - PSIRT开发团队确认问题并将制作修复程序
  • 2025年2月26日 - 信息显示修复计划于6月10日进行
  • 2025年6月22日 - 关于修复部署延迟的信息;新日期设定为7月8日
  • 2025年6月30日 - 关于发布可测试以确认修复的UWP应用程序的邮件
  • 2025年7月1日 - 发送电子邮件说明UWP中不存在该问题,但不会移除机器上的现有问题
  • 2025年7月1日 - PSIRT回应称正在开发修复程序,将通过系统更新分发给预装软件版本的用户,以移除计划任务和旧可执行文件
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计