安全决策报告

wechat-md-publisher

合法的微信公众号 Markdown 发布工具,通过 npx 动态执行外部 npm 包,存在供应链风险但已明确声明并提供源码审计指引

安装决策优先 来源: ClawHub 扫描时间: 2026/4/6
文件 8
IOC 15
越权项 1
发现 3

为什么得出这个结论

1/4 个维度触发
阻止
声明与实际能力

发现 1 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 15 个一般风险产物,需要结合上下文判断。

通过
攻击链与高危发现

没有形成明确的恶意路径。

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

供应链依赖 +15

通过 npx 动态拉取第三方 npm 包 wechat-md-publisher,版本 ^1.0.2 允许次要版本更新

凭证处理外包 +10

凭证加密由上游 npm 包处理,SKILL.md 建议审计但未强制验证

可选远程端点 +5

remote-theme-api 功能可能访问第三方端点并发送文章内容

最关键的证据

低危 供应链

npx 动态拉取第三方 npm 包存在供应链风险

SKILL.md 和 config.json 均声明使用 `npx --yes wechat-md-publisher@^1.0.2` 动态拉取执行。版本 ^1.0.2 允许次要版本自动更新,可能引入恶意代码。

SKILL.md:54
建议使用固定版本号(如 1.0.2)而非 ^1.0.2,并在使用前审计源码
低危 凭证窃取

凭证加密处理依赖外部包

SKILL.md 声明凭证(WECHAT_APP_SECRET)由 wechat-md-publisher npm 包使用 AES-256 加密存储到 ~/.config/,但未强制验证加密实现。

SKILL.md:78
建议用户在使用前审计 https://github.com/sipingme/wechat-md-publisher/blob/main/src/services/account.ts
提示 供应链

可选的远程主题端点可能外传数据

remote-theme-api 功能在用户使用 `theme add-remote` 时访问第三方端点,可能发送文章内容。SKILL.md 已标注警告。

SKILL.md:72
仅使用可信任的主题源

声明能力 vs 实际能力

文件系统 通过
声明 READ/WRITE
→
推断 READ/WRITE
SKILL.md:filesystem 声明读取 *.md/*.jpg/*.png/*.gif,写入 ~/.config/wechat-md-publisher-nodejs/
网络访问 通过
声明 READ
→
推断 READ
SKILL.md 声明访问 api.weixin.qq.com、mp.weixin.qq.com
命令执行 阻止
声明 NONE
→
推断 WRITE
scripts/run.js:12 使用 spawnSync 执行 npx 命令,属于间接 shell 执行

可疑产物与外联

中危 外部 URL
https://mp.weixin.qq.com/

README.md:54

中危 外部 URL
https://www.toutiao.com/article/123

README.md:142

中危 外部 URL
https://api.md2wechat.cn

README.md:209

中危 外部 URL
https://mp.we...

SKILL.md:386

中危 外部 URL
https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

SKILL.md:626

中危 外部 URL
https://mp.weixin.qq.com/s/abc

SKILL.md:716

中危 外部 URL
https://www.xiaohongshu.com/explore/xyz

SKILL.md:717

中危 外部 URL
https://www.toutiao.com/article/7000000000000000000/

SKILL.md:807

中危 外部 URL
https://www.toutiao.com/article/...

SKILL.md:813

中危 外部 URL
https://www.ip.cn/

references/ip-whitelist-guide.md:29

中危 外部 URL
https://ipinfo.io/

references/ip-whitelist-guide.md:30

中危 外部 URL
https://ifconfig.me/

references/ip-whitelist-guide.md:31

依赖与供应链

包名版本来源漏洞备注
wechat-md-publisher ^1.0.2 npm (npx) 否 通过 npx 动态拉取,版本允许次要版本更新,存在供应链风险

文件构成

8 个文件 · 2131 行
Markdown 5 个文件 · 1848 行JavaScript 2 个文件 · 177 行JSON 1 个文件 · 106 行
需关注文件 · 4
config.json JSON · 106 行
SKILL.md Markdown · 864 行
npx 动态拉取第三方 npm 包存在供应链风险 · 凭证加密处理依赖外部包 · 可选的远程主题端点可能外传数据 · https://mp.we... · https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html · https://mp.weixin.qq.com/s/abc · https://www.xiaohongshu.com/explore/xyz · https://www.toutiao.com/article/7000000000000000000/ · https://www.toutiao.com/article/...
README.md Markdown · 317 行
https://mp.weixin.qq.com/ · https://www.toutiao.com/article/123 · https://api.md2wechat.cn · [email protected]
references/ip-whitelist-guide.md Markdown · 290 行
https://www.ip.cn/ · https://ipinfo.io/ · https://ifconfig.me/ · https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Getting_Started_Guide.html · https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
其他文件 · themes.md · postinstall.js · run.js · quick-start.md

安全亮点

SKILL.md 文档完整,声明了供应链风险并提供源码审计链接
权限声明与实际功能匹配(除间接 shell 执行外)
明确标注凭证敏感性(WECHAT_APP_SECRET 为 sensitive:true)
提供多层次安全提示和使用指引
凭证存储使用 AES-256 加密(依赖上游实现)
脚本代码简洁,无复杂或可疑逻辑