CVE-2025-1729 – 使用 TPQMAssistant.exe 进行权限提升
原文链接: https://mp.weixin.qq.com/s?__biz=MzAxODM5ODQzNQ==&mid=2247489367&idx=1&sn=084efb7db8b14482e6e9abdf2072363b
CVE-2025-1729 – 使用 TPQMAssistant.exe 进行权限提升
Oddvar Moe securitainment 2025-07-10 14:27
CVE-2025-1729 – Privilege Escalation Using TPQMAssistant.exe
免责声明:本博客文章仅用于教育和研究目的。提供的所有技术和代码示例旨在帮助防御者理解攻击手法并提高安全态势。请勿使用此信息访问或干扰您不拥有或没有明确测试权限的系统。未经授权的使用可能违反法律和道德准则。作者对因应用所讨论概念而导致的任何误用或损害不承担任何责任。
在对我的新 Lenovo ThinkPad P1 Gen7 进行内部研究时,我意外发现了一个从好奇心迅速升级为可行的权限提升漏洞。
每天上午 9:30,一个名为:
Lenovo\TrackPointQuickMenu\Schedule\ActivationDailyScheduleTask
的计划任务会自动启动二进制文件:
C:\ProgramData\Lenovo\TPQM\Assistant\TPQMAssistant.exe
图 1 – 计划任务
该任务仅在用户登录时运行,特别值得注意的是该二进制文件存在动态链接库 (DLL) 侧加载 (sideloading) 漏洞——这是一个经典但常被忽视的攻击向量。
可写目录与缺失的 DLL
存放 TPQMAssistant.exe
的目录对标准用户可写,这已经是一个危险信号。该文件夹的权限允许 CREATOR OWNER
写入文件,意味着任何本地用户都可以向该位置投放文件。
图 2 – 文件夹的 CREATOR OWNER 权限
当计划任务(或二进制文件本身)被触发时,它会尝试从其工作目录加载 hostfxr.dll 但失败,导致 NAME NOT FOUND 事件。这表明该二进制文件正在寻找一个不存在于其目录中的依赖项——这是进行侧加载的绝佳机会。
图 3 – Name Not Found
包含 TPQMAssistant.exe
的目录对用户可写,允许向文件夹添加新文件。
图 4 – 文件夹的 Creator Owner 权限
代码执行
通过在 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 – 感谢证书