CVE-2025-1729 - 利用TPQMAssistant.exe实现权限提升
作者:Oddvar Moe
在深入研究新款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绕过方法,如果愿意,可以使其成为可行的权限提升。我决定在此停止,并简单地询问联想是否需要完整的概念验证代码,因为我觉得已经证明了漏洞的存在。事实证明,这足以让他们开始修复。
攻击流程是:以普通用户身份登录,植入恶意代码,注销,然后等待本地管理员使用机器以执行代码。
缓解措施
联想的Product Security Incident Response Team (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)目录下为调度程序创建新路径。”
基于此,似乎一旦他们开始部署软件,问题就会得到解决。
最终 thoughts
与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月08日
- 2025年6月30日 - 邮件关于发布的UWP应用程序可以测试以确认修复
- 2025年7月1日 - 发送邮件说明问题在UWP中不存在,但未移除机器上的现有问题
- 2025年7月1日 - PSIRT回应正在开发修复程序,将通过系统更新分发给预加载软件版本的用户,以移除计划任务和旧可执行文件