若关键词被直接拼入示例 shell 命令,单引号可突破 JSON 参数边界
原文依据:2 处命令模板用 shell 单引号包裹 JSON,而关键词来自用户输入。材料没有规定使用参数数组或可靠的 JSON/shell 转义。若执行代理直接替换占位符,含单引号和 shell 运算符的关键词可能结束引号并被 shell 解释。
恶意或意外构造的搜索词可能导致额外本机命令以代理当前权限执行,从而读取或修改其可访问的文件和凭据。该结果取决于实际命令构造方式,并非仅凭模板即可断定会发生。
可见命令只是用单引号包住占位文本 `<JSON 参数>`,并未展示把用户关键词直接拼接进 shell 命令的实现。若执行器确实用未经转义的字符串替换该占位符,关键词中的单引号可能造成 shell 注入;但材料也可能由安全的 JSON 序列化和参数化进程调用来执行。缺少脚本或构造命令的代码,无法确认该风险。用户可要求作者证明参数通过结构化 argv 传递,并对 JSON 和 shell 边界进行安全编码。
这项判断针对展示的代码和适用条件,不表示风险已经实际发生。```bashwecom-cli contact users search --json '<JSON 参数>'```查看另外 1 个位置
|---|---|---|---|---|| `keywords` | string[] | 是 | — | 搜索关键词列表,可按姓名(用户名)/ 拼音 / 英文名 / 别名匹配,最多 10 个;多个关键词之间是 OR 关系 || `search_mode` | string | 否 | — | 搜索模式,默认不传该参数;仅当需要拿到完整人员名单时,才显式传 `"list"` |