Skip to content

Security: jjchen17/wps-cli

Security

SECURITY.md

安全策略

报告漏洞

请不要通过公开 GitHub Issue 报告安全漏洞。

请发送邮件至 948881912@qq.com,主题以 [SECURITY] 开头,包含:

  • 受影响的版本
  • 漏洞描述与威胁模型
  • 复现步骤(或概念验证代码)
  • 你建议的修复方式(可选)

我们会在 72 小时内回复,并在确认漏洞后协调披露时间。

支持的版本

版本 安全更新
0.1.x

默认安全加固

wps-cli 在每次连接 WPS 进程时自动应用以下加固,无需用户配置:

宏自动执行禁用

ComBackend.harden() 设置 app.AutomationSecurity = msoAutomationSecurityForceDisable, 阻止打开文档时触发 Auto_Open / Document_Open 等自动宏。

威胁场景:攻击者向 LLM Agent 投递包含恶意宏的文档,诱导 Agent 调用 wps writer info 打开文件。无加固时宏会以当前用户权限执行任意代码。

公式注入防护

calc cell-formula 命令在调用 COM 之前拒绝以下危险函数:

  • SHELL / EXEC / CALL — 命令执行
  • DDE / DDEAUTO — DDE 协议命令执行
  • REGISTER — 加载外部 DLL
  • HYPERLINK / WEBSERVICE / FILTERXML / ENCODEURL — 数据外泄/SSRF
  • RTD / IMPORTDATA / IMPORTHTML / IMPORTRANGE / IMPORTXML / IMPORTFEED — 外部数据获取
  • INDIRECT — 间接引用(可用于混淆绕过)

calc cell-set 拒绝以 = 开头的值,避免攻击者通过 cell-set 绕过 cell-formula 的校验。

路径边界限制

  • 禁止 UNC 路径(\\server\share)—— 防止 NTLM 哈希泄露。
  • 禁止符号链接 —— 防止 TOCTOU 与目录穿越。
  • export batch 的 glob 模式必须是相对当前工作目录的相对路径,结果必须落在当前目录之下。

内存炸弹防护

pdf extract-pages 的页码字符串会被严格校验:

  • 单个页码不超过 9999
  • 单个区间跨度不超过 1000
  • 总页码数不超过 1000

防止 1-999999 这种输入耗尽内存。

错误信息脱敏

JSON 错误响应中的本地路径在序列化前会经过 redact_path() 处理:

  • 用户主目录 → ~
  • Windows 盘符路径 → <path>

避免 LLM Agent 上下文 / CI 日志泄露文件系统结构。

MCP 服务器安全

wps mcp serve 通过 stdio 暴露 27 个文档操作工具。所有 tool 的输入参数受现有 CLI 安全机制保护(公式注入、路径限制等),但请注意:

  • 仅连接受信任的 MCP 客户端:MCP 协议本身不认证客户端身份,任何能写入 stdin 的进程都可以调用全部工具。
  • 工具能力等同于 CLI 权限:MCP 客户端可以创建/修改/删除文档,能力边界与直接运行 wps CLI 命令一致。

HTTP 驻留模式安全

wps resident start127.0.0.1 上启动 HTTP 服务器:

  • 禁止暴露到公网:默认仅监听 localhost。请勿配置端口转发或修改 --host0.0.0.0,否则局域网内任意机器可操作你的 WPS 进程。
  • 无认证机制:HTTP API 无 token/密码保护,依赖 127.0.0.1 绑定作为唯一安全边界。

模板注入

wps writer merge--data 值直接写入文档:

  • 数据来源:模板填充的 data 值应来自受信任来源。恶意值不会在 WPS 中执行代码,但可能产生误导性文档内容。

已知限制

  • WPS 桌面进程权限继承:wps-cli 启动的 WPS 进程继承调用者的 Windows 安全上下文。如果你以管理员身份运行 wps-cli,WPS 进程也是管理员权限。生产环境建议用最低权限账号运行。
  • DCOM 暴露:如果你手动开启了 KWPS / KET / KWPP 的 DCOM 访问,远程机器可能调用本地 WPS。这超出 wps-cli 控制范围,请检查 Windows COM 安全设置。
  • 依赖供应链pywin32 等核心依赖若被投毒,影响所有 wps-cli 用户。我们会在 pyproject.toml 中固定版本上限。

安全补丁发布

  • 高危漏洞:72 小时内发布补丁版本。
  • 中危漏洞:在下一个常规版本中修复。
  • 低危漏洞:累积到主要版本中修复。

补丁版本会在 CHANGELOG.md 中明确标注 Security 字样。

There aren't any published security advisories