CVE-2025-1729 - 利用TPQMAssistant.exe进行权限提升
作者:Oddvar Moe
发布日期:2025年7月8日
漏洞评估
在深入研究联想ThinkPad P1 Gen7内部机制时,我发现了一个意外的发现,这个发现很快从好奇心升级为一个可行的权限提升漏洞。
每天上午9:30准时,一个名为Lenovo\TrackPointQuickMenu\Schedule\ActivationDailyScheduleTask的计划任务会自动启动二进制文件:C:\ProgramData\Lenovo\TPQM\Assistant\TPQMAssistant.exe。
该任务仅在用户登录时运行,特别有趣的是这个二进制文件容易受到动态链接库(DLL)侧加载攻击——这是一个经典且经常被忽视的攻击向量。
可写目录和缺失的DLL
存放TPQMAssistant.exe的目录对标准用户可写,这已经是一个危险信号。文件夹的权限允许CREATOR OWNER写入文件,这意味着任何本地用户都可以向此位置投放文件。
当计划任务(或二进制文件本身)被触发时,它会尝试从其工作目录加载hostfxr.dll但失败,导致NAME NOT FOUND事件。这表明二进制文件正在寻找其自身目录中不存在的依赖项——这是侧加载的完美机会。
包含TPQMAssistant.exe的目录对用户可写,允许向文件夹添加新文件。
代码执行
通过在TPQMAssistant.exe同一目录中放置恶意的hostfxr.dll,我们可以劫持加载过程。当二进制文件执行时,它会成功加载我们植入的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合作很愉快——他们回应迅速,在沟通中礼貌且坦率。他们还在过程中主动向我发送信息,无需我多次询问。我唯一希望的是对安全研究人员的奖励,如纪念品或奖金,这可能会带来安全研究人员的更多发现(在我看来)。我确实收到了一份感谢证书。
时间线
- 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回应正在开发修复程序,将通过系统更新分发给预装软件版本的用户,将移除计划任务和旧可执行文件