ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

InputPlumber双漏洞分析:本地攻击如何窃取Linux游戏账号

InputPlumber双漏洞分析:本地攻击如何窃取Linux游戏账号 最近圈子里都在聊 InputPlumber 的两个 CVE-2025 漏洞。简单说Linux 玩家常用的输入管理工具 InputPlumber 被曝出两个本地安全漏洞组合起来能让本地低权限进程直接模拟键盘输入甚至在你登录游戏客户端时把账号密码带走。这事看起来没有远程 RCE 那么炸裂但对用 SteamOS、掌机或桌面 Linux 玩游戏的用户来说威胁非常真实尤其那些经常在共享电脑、宿舍机器或网吧式 Linux 主机上打游戏的玩家这一下子把本机不安全的风险拉到了眼前。这篇文章我会从 InputPlumber 到底是什么讲起拆解这两个漏洞的成因、组合攻击逻辑再给出一套可操作的排查、修复和日常加固方案。无论你是普通玩家、系统管理员还是搞安全的小伙伴都能照着思路自己查一遍。咱们不摆理论直接讲实操和踩坑的点。1. 事件背景InputPlumber 双漏洞到底是怎么回事1.1 InputPlumber 在 Linux 生态里的位置很多用 Windows 的玩家可能没听过 InputPlumber但在 Linux 掌机、SteamOS 和一批开源掌机系统里它几乎是输入管理中枢一样的存在。InputPlumber 是一个开源输入管理守护进程用来统一处理手柄、键盘、鼠标、虚拟设备之间的事件转发和重映射。比如你想把手柄的右摇杆映射为鼠标移动或者让某个按键变成组合键InputPlumber 可以在系统层面把事情办好游戏里不需要额外配置。从架构上看它的核心是一个后台服务对外暴露 D-Bus 接口同时读写特定目录下的配置文件。普通玩家不会直接碰它但系统里的用户级服务、桌面环境、Steam 客户端可能随时在调用它。只要有服务就有攻击面。这次曝出的两个漏洞恰好一个打在 D-Bus 接口权限校验上一个打在配置文件路径处理上都属于本地攻击的典型入口。之所以说Linux 玩家警惕是因为 InputPlumber 运行在用户会话层一旦它被本地恶意进程利用受影响的不只是输入映射还可能是你在游戏客户端里敲过的每一个按键。很多玩家觉得本地攻击没那么吓人别人又碰不到我的电脑但现实中共享电脑、远程桌面、游戏服务器托管、甚至下载了被捆绑恶意脚本的情况并不少见本地漏洞恰恰是这些场景下最容易被悄悄触发的一类。1.2 为什么本地攻击也能偷走游戏账号在聊漏洞细节前先解决一个最常见的困惑为什么本地攻击能跟窃取游戏账号扯上关系传统观念里账号被盗往往是钓鱼、撞库或键盘记录器这类攻击大多来自网络或恶意软件。可实际上InputPlumber 这类系统级输入工具一旦被滥用它的能力就是模拟键鼠输入。攻击者不需要真正读到你的密码文件只需要在你登录游戏、输入密码的那一刻注入一段键盘事件比如在密码框里追加一个额外的按键序列或者用不可见窗口把你的输入重定向到攻击者控制的虚拟设备上。说白了它能让你按下的 A 键同时也被另一个监听端记录这种输入镜像在安全领域是很经典的攻击手法。因为 InputPlumber 本身有合法的输入重映射功能安全软件很难判断一个按键是用户真的按下还是被工具模拟出来的。双漏洞的价值就在这里第一个漏洞让低权限进程能调用本不该调用的接口第二个漏洞让进程能覆盖或劫持配置文件。两个漏洞结合恶意代码就能把 InputPlumber 改造成一个隐形的键盘记录器然后在游戏登录窗口弹出时精准捕获账号和密码甚至在你启用二次验证时把临时码也一起抄走。这就是本地攻击可直接窃取游戏账号的真正含义。2. 漏洞原理拆解一个越权接口一个符号链接2.1 漏洞一D-Bus 接口访问控制缺失D-Bus 是 Linux 桌面和系统服务之间通信的骨干。InputPlumber 为了让玩家和图形界面工具能控制输入映射对外提供了一套 D-Bus API比如列出设备切换配置导出配置导入配置等操作。问题恰恰出在这里一些敏感操作的访问控制没有做严格限制导致会话总线上的任意进程都能调用。我举一个通俗类比D-Bus 就像一个写字楼大厅的总服务台每个程序都可以递纸条给服务台让服务台去联系某个房间里的人。正常情况下服务台要检查你有没有门禁卡。但 InputPlumber 这次漏洞是服务台看到纸条上没有盖特定印章也直接帮你把话带到了甚至允许你修改房间里的设置。攻击者只需要在用户会话里跑一个普通进程这个进程不需要任何特殊权限就可以调用 InputPlumber 的导入配置接口把自己的恶意按键映射写进去。如果只是改配置也没那么严重更麻烦的是这个接口可能还暴露了读取当前配置的功能。读取配置本身不致命但配合配置里的设备描述符攻击者能判断出游戏客户端什么时候在运行甚至能枚举当前连接的输入设备为后续按键模拟做侦察。对安全研究员来说这类未授权接口的漏洞很常见但对终端玩家来说它意味着任何在你机器上运行的小程序都可能直接命令 InputPlumber 干活。2.2 漏洞二配置文件路径处理不当InputPlumber 把设备配置和系统设置保存为本地文件常见位置类似~/.config/input-plumber/或系统级配置目录。第二个漏洞出在路径处理上程序在导入配置或恢复备份时没有严格校验文件路径是否在预期目录内攻击者通过符号链接或路径穿越可以把配置写入任意位置。符号链接攻击在 Linux 用户态服务里反复出现原因是很多开发者直接拼接用户可控字符串到路径里再用 open 函数写文件。假如 InputPlumber 的某个接口接收备份文件名参数攻击者传入一个指向~/.bashrc的符号链接路径程序就可能把恶意内容写入这个文件。虽然写入的格式是配置文件的文本但攻击者可以精心构造内容比如利用程序后续解析时的某个功能间接影响其他行为。更实际的一种利用方式是劫持 InputPlumber 自己的配置目录。因为该服务可能以当前用户的权限运行如果能通过路径穿越把一个伪造的配置文件放到自动加载子目录里服务在重启或设备接入时就会加载这个配置从而让恶意映射长期生效。这种持久化机制比单纯调用一次接口更隐蔽重启也不会丢失。2.3 双漏洞组合从任意进程到键盘输入单独看第一个漏洞攻击者至少能调用 API单独看第二个漏洞攻击者能写文件但未必能直接产生输入。两个漏洞组合起来攻击链条就很清晰了第一步通过 D-Bus 未授权接口读取当前配置了解系统里有哪些输入设备、配置目录结构。第二步利用路径处理漏洞写入一个恶意配置该配置定义了一个由攻击者进程控制的虚拟输出设备。第三步当受害者在游戏登录界面输入账号时恶意配置让真实键盘事件被复制到虚拟设备攻击者进程在另一端读取这个虚拟设备的数据流。整个过程不需要 root 权限也不需要修改游戏的任何文件。因为攻击者只是借用了 InputPlumber 的合法能力Linux 系统的权限模型在这里完全失效了。这里要强调一句文章只做原理层面的分析不会给出任何利用代码。安全研究者公开漏洞时通常也只放概念验证的截图原理描述足以帮助管理员评估风险真正要做的不是复现攻击而是赶紧修复。3. 自查与实操你的系统是否受影响3.1 快速确认 InputPlumber 版本和运行状态在动手修复前先确认自己的机器是否真的装了 InputPlumber跑的是什么版本。多数发行版可以通过包管理器查询# Debian/Ubuntu 系 apt list --installed 2/dev/null | grep -i inputplumber # Fedora/RHEL 系 rpm -qa | grep -i inputplumber # Arch 系 pacman -Q | grep -i inputplumber如果输出为空大概率没装但也要考虑是否被其他应用作为依赖带进来。SteamOS 和 ChimeraOS 的镜像通常会在系统更新时自动带上 InputPlumber因此这类系统的用户得格外留意。确认安装后再查服务状态和版本号systemctl --user status input-plumberInputPlumber 在很多发行版里是用户级 systemd 服务所以要用--user参数。结果里的Active: active (running)表示正在运行。如果显示版本号记下来去官方仓库比对是否在受影响区间。我建议直接看厂商发布的公告因为 CVE 列表里通常标注了修复版本。3.2 用户态服务与系统服务的区别这里很多人会踩坑用systemctl status input-plumber不带--user查不到服务就以为没装。实际上 InputPlumber 这类面向桌面用户的输入管理服务往往通过用户级 systemd 运行它只在登录会话里存在对应的是~/.config/systemd/user/下的单元文件。排查的时候建议同时看系统级和用户级服务# 系统级 systemctl status input-plumber # 用户级 systemctl --user status input-plumber # 查找所有相关进程 ps aux | grep -i [i]input-plumberps的输出能看到进程运行的绝对路径和启动参数如果路径在/usr/bin/或/usr/lib/下一般是发行版打包的版本如果出现在/tmp或用户目录下那就要警惕是不是被改写了。这种检查习惯在 Linux 系统管理里很基础但关键时刻能救命。3.3 日志里的异常痕迹攻击不一定会在日志里留下明显的报错但有些异常还是可查的。先用 journalctl 看 InputPlumber 的近期日志journalctl --user -u input-plumber --since 7 days ago重点关注有没有大量导入配置、切换配置的记录频率高得反常有没有加载了不存在的设备文件或路径异常的警告服务在非用户操作的时间点自动重启或重新加载配置。日志里出现Permission denied不一定代表被攻击可能是正常权限问题但反复出现“加载配置失败”“找不到设备节点”之类的关键字就要结合文件完整性一起检查。如果发现配置文件被改过用ls -l查看时间戳再对照官方默认配置内容是能发现端倪的。4. 修复与加固不给本地攻击留机会4.1 升级版本与补丁最直接的修复方式是把 InputPlumber 升级到修复版本。多数发行版会在一周内推送安全更新坐标 Debian/Ubuntu 的可以用apt upgradeArch 用户直接pacman -Syu更新整个系统即可。对于 SteamOS建议切到main或beta通道接受系统更新等 Valve 推送对应补丁。升级后一定要重启用户会话或重启系统因为即使二进制文件换了运行中的服务可能还在用旧代码。验证方法systemctl --user restart input-plumber systemctl --user status input-plumber如果发行版没有打补丁的迹象可以考虑从官方源码仓库手动编译最新版本。但这要求你了解构建依赖和安装路径普通玩家更稳妥的做法是暂时禁用 InputPlumber 服务宁可用系统自带的手柄映射也别把漏洞暴露在公网上。禁用命令systemctl --user stop input-plumber systemctl --user disable input-plumber4.2 收紧 D-Bus 策略即使补丁还没出管理员也可以从 D-Bus 策略层面做缓解。D-Bus 允许系统管理员通过/etc/dbus-1/system.d/或用户级/etc/dbus-1/session.d/下的配置文件定义哪些进程可以调用哪些接口。InputPlumber 的官方包里通常自带一个 D-Bus 策略文件比如com.example.InputPlumber.conf它的默认策略可能太宽松。你可以创建一个更严格的自定义策略只允许特定用户组或特定进程调用配置写入接口。举个例子把调用者限制在games用户组policy contextdefault deny owncom.example.InputPlumber/ deny send_destinationcom.example.InputPlumber/ /policy policy groupgames allow send_destinationcom.example.InputPlumber/ allow owncom.example.InputPlumber/ /policy修改完 D-Bus 配置后需要重启 D-Bus 或重新登录会话才生效。注意不要把自己锁在门外先备份原文件再修改随后用busctl --user list和busctl --user introspect验证接口是否还能正常访问。收紧策略后普通进程再调用相关接口会直接得到 AccessDenied这能给补丁落地争取时间。4.3 给玩家的一线加固建议对大多数普通玩家来说不需要建设一套复杂的安全体系但有几条习惯能大幅降低这类本地攻击的成功率不要随意运行来路不明的脚本或程序尤其是从游戏论坛、第三方下载站拿到的小工具。很多本地漏洞利用都是靠捆绑在“优化脚本”“mod 管理工具”里传播的。如果是共享电脑给每个使用者建独立用户账户并关闭自动登录。InputPlumber 漏洞需要能访问当前用户会话独立账户能阻止对手轻易拿到会话权限。锁定关键目录的写权限比如把 InputPlumber 配置目录设为只读需要有 root 权限去操作并且可能影响正常配置建议在修复后再执行。游戏客户端开启二次验证。即便键盘输入被拦截攻击者拿到的密码还需要额外验证码才能登录这层保护争取了宝贵的救援时间。还有一个很多人忽略的点如果你只是偶尔用 InputPlumber 配置一次手柄可以完成配置后就停止服务而不是让它常驻后台。攻击的前提是目标进程存在关掉服务直接从根上断了这条路。5. 常见问题与排查实录5.1 速查表问题、原因、处理现象可能原因处理方式我的系统没有安装 InputPlumber需要担心吗不运行相关服务本地攻击面少了一个入口不装自然最稳但要留意 SteamOS 等系统可能会自动集成查不到用户级服务InputPlumber 可能以不同服务名运行或还未启动用ps aux | grep -i查进程再查看官方文档确认服务名日志有大量配置加载记录可能有其他进程调用了接口也可能只是误报查看调用时间对照自己是否在玩游戏时还手动改过配置升级补丁后游戏按键失灵新版修改了配置格式或接口备份旧配置参考官方迁移说明重新映射关掉服务后游戏不识别手柄游戏依赖 InputPlumber 的虚拟设备把游戏加入系统原生手柄兼容模式或用其他映射工具替代这些坑是我在实际排查中遇到的真实场景尤其是“升级后按键失灵”最容易让人误以为升级导致故障其实只是配置路径变了。遇到问题先翻日志不要直接回滚补丁因为回滚等于把漏洞又带回来了。5.2 结合实战的排查命令清单下面这套命令组合可以帮你快速评估系统有没有被动了手脚也适合写进运维手册。# 1. 查看服务运行状态和最近日志 systemctl --user status input-plumber journalctl --user -u input-plumber --since today -n 50 # 2. 列出配置目录检查文件时间戳 find ~/.config/input-plumber -type f -name *.yaml -o -name *.json 2/dev/null | xargs ls -l # 3. 检查是否有奇怪的符号链接 find ~/.config/input-plumber -type l -ls 2/dev/null # 4. 查看会话总线上是否有人频繁请求 InputPlumber busctl --user list | grep -i inputplumber # 5. 检查进程打开的文件确认配置目录没有被异常占用 lsof D ~/.config/input-plumber 2/dev/nullfind查符号链接非常关键因为第二个漏洞就是靠符号链接写文件。如果发现.yaml文件实际指向了系统目录里不相关的文件那就不是正常配置需要立刻停止服务并备份当前可疑文件交给安全人员分析。busctl --user list可以列出当前会话总线上所有活跃连接。正常情况下应该只有 InputPlumber 自身和几个图形界面的客户端。如果莫名其妙多了一个不认识的进程名先ps查它的可执行文件路径再决定是否注销会话。结尾说点大实话我个人实际排查这类漏洞时的体会是别高估 Linux 的默认安全性。很多人觉得 Linux 比 Windows 安全是因为权限隔离做得细但用户态服务一旦把 D-Bus 接口放开隔离墙就出现了裂缝。InputPlumber 这次的双漏洞不是多高深的技术就是典型的“接口未授权 路径校验缺失”在桌面 Linux 生态里这类问题以后还会出现。最后还是那句话先升级再加固最后养成好习惯。游戏账号没了可以找回但如果你在这台电脑上还翻了邮箱、聊过私密内容本地攻击造成的损失可能远超一个 Steam 库。Linux 玩家要玩得开心也得先把自己的输入通道管牢。
返回列表