wechat-md-publisher
合法的微信公众号 Markdown 发布工具,通过 npx 动态执行外部 npm 包,存在供应链风险但已明确声明并提供源码审计指引
为什么得出这个结论
1/4 个维度触发发现 1 项声明之外的能力或越权行为。
提取到 15 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
通过 npx 动态拉取第三方 npm 包 wechat-md-publisher,版本 ^1.0.2 允许次要版本更新
凭证加密由上游 npm 包处理,SKILL.md 建议审计但未强制验证
remote-theme-api 功能可能访问第三方端点并发送文章内容
最关键的证据
npx 动态拉取第三方 npm 包存在供应链风险
SKILL.md 和 config.json 均声明使用 `npx --yes wechat-md-publisher@^1.0.2` 动态拉取执行。版本 ^1.0.2 允许次要版本自动更新,可能引入恶意代码。
SKILL.md:54 凭证加密处理依赖外部包
SKILL.md 声明凭证(WECHAT_APP_SECRET)由 wechat-md-publisher npm 包使用 AES-256 加密存储到 ~/.config/,但未强制验证加密实现。
SKILL.md:78 可选的远程主题端点可能外传数据
remote-theme-api 功能在用户使用 `theme add-remote` 时访问第三方端点,可能发送文章内容。SKILL.md 已标注警告。
SKILL.md:72 声明能力 vs 实际能力
SKILL.md:filesystem 声明读取 *.md/*.jpg/*.png/*.gif,写入 ~/.config/wechat-md-publisher-nodejs/ SKILL.md 声明访问 api.weixin.qq.com、mp.weixin.qq.com scripts/run.js:12 使用 spawnSync 执行 npx 命令,属于间接 shell 执行 可疑产物与外联
https://mp.weixin.qq.com/ README.md:54
https://www.toutiao.com/article/123 README.md:142
https://api.md2wechat.cn README.md:209
https://mp.we... SKILL.md:386
https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html SKILL.md:626
https://mp.weixin.qq.com/s/abc SKILL.md:716
https://www.xiaohongshu.com/explore/xyz SKILL.md:717
https://www.toutiao.com/article/7000000000000000000/ SKILL.md:807
https://www.toutiao.com/article/... SKILL.md:813
https://www.ip.cn/ references/ip-whitelist-guide.md:29
https://ipinfo.io/ references/ip-whitelist-guide.md:30
https://ifconfig.me/ references/ip-whitelist-guide.md:31
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| wechat-md-publisher | ^1.0.2 | npm (npx) | 否 | 通过 npx 动态拉取,版本允许次要版本更新,存在供应链风险 |
文件构成
config.json SKILL.md README.md references/ip-whitelist-guide.md