VirtualAssistant Core 曝安全漏洞:XDoToolKeyboardService 存在 Shell 注入风险
VirtualAssistant Core 项目的一个关键键盘服务模块被发现存在潜在的安全漏洞。在 `XDoToolKeyboardService.cs` 文件中,代码直接将 `pasteShortcut` 字符串变量插值到 `bash -c` 命令中,构成了一个典型的 Shell 注入攻击面。虽然当前该变量的值来自硬编码的快捷键(如 `ctrl+v` 或 `shift+insert`),但代码模式本身是危险的。任何未来的代码重构,一旦允许用户控制的数据流入此变量,将立即打开一个可利用的远程代码执行通道。
具体风险点位于 `src/VirtualAssistant.Core/Keyboard/XDoToolKeyboardService.cs` 的第 84 行,命令参数构建为 `Arguments = $"-c \"echo 'key {pasteShortcut}' | dotool\""`。同样的危险模式在 `FastPasteAsync`(约第 305 行)和 `PasteFromClipboardAsync`(约第 388 行)中被重复使用。目前,代码对 `pasteShortcut` 变量没有任何白名单验证或输入清理机制,完全依赖其当前来源的安全性。
该漏洞的修复要求明确:必须用 `ProcessStartInfo.ArgumentList`(位置参数数组)结合标准输入管道的方式,替换掉当前不安全的 `bash -c` 字符串插值。替代方案是,在使用前将 `pasteShortcut` 与严格的白名单 `["ctrl+v", "shift+insert"]` 进行验证。此修复需要应用到所有三个粘贴方法中,并应补充相应的单元测试以证明漏洞已被封堵。这一发现凸显了在自动化工具的核心组件中,即使看似无害的硬编码值,若采用不安全的代码模式,也会为未来引入严重安全债务。