可信 — 风险评分 5/100
上次扫描:2 天前 重新扫描
5 /100
wechat-publisher
微信公众号文章发布工具,支持 Markdown 转换、AI 去痕、多主题
合法的微信公众号文章发布工具,代码实现与声明功能一致,无恶意行为发现。
技能名称wechat-publisher
分析耗时48.0s
引擎pi
可以安装
可直接使用。发现一个轻微瑕疵:publish.sh 中 eval 执行用户可控参数存在理论命令注入风险,建议使用数组传递参数替代。

安全发现 3 项

严重性 安全发现 位置
低危
publish.sh 中使用 eval 执行命令存在潜在风险
在 publish.sh 第 127 行,使用 eval 执行构建的命令字符串。虽然是用户主动触发的操作,但 $title 和 $cover 等参数未经过转义处理,理论上存在命令注入风险。
eval $publish_cmd
→ 建议使用数组传递参数替代字符串拼接,例如: wechat-publisher publish "$file" "${cmd_args[@]}"
scripts/publish.sh:127
提示
从 ~/.openclaw/.env 加载环境变量未在文档中声明
config.py 的 load_openclaw_env() 函数会尝试从 ~/.openclaw/.env 加载环境变量作为配置来源之一,但 SKILL.md 中未明确说明此行为。这是合法的配置加载机制,属于轻微文档缺失。
env_file = Path.home() / ".openclaw" / ".env"
→ 建议在 SKILL.md 配置章节中补充说明此配置加载行为
src/wechat_publisher/config.py:25
提示
SKILL.md 声明与实际不符
SKILL.md 声称"完全独立实现,不依赖任何外部 CLI 工具",但实际上 publish.sh 是一个 shell 脚本。
完全独立实现,不依赖任何外部 CLI 工具
→ 如需强调纯 Python 实现,应删除 scripts/publish.sh 或修正文档描述
SKILL.md:1
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 SKILL.md:cli.py 读写本地文件和配置
网络访问 READ READ ✓ 一致 访问微信 API 和 AI Provider API
命令执行 NONE WRITE ✗ 越权 publish.sh:127 使用 eval 执行命令
环境变量 READ READ ✓ 一致 config.py 读取 WECHAT_* 环境变量
技能调用 NONE NONE
剪贴板 NONE NONE
浏览器 NONE NONE
数据库 NONE NONE
12 项发现
🔗
中危 外部 URL 外部 URL
https://developers.weixin.qq.com/
README.md:15
🔗
中危 外部 URL 外部 URL
https://mp.weixin.qq.com/
README.md:36
🔗
中危 外部 URL 外部 URL
https://api.mdnice.com/api/v1/markdown
src/wechat_publisher/converter/__init__.py:41
🔗
中危 外部 URL 外部 URL
https://dashscope.aliyuncs.com/compatible-mode/v1
src/wechat_publisher/humanizer/__init__.py:55
🔗
中危 外部 URL 外部 URL
https://ark.cn-beijing.volces.com/api/v3
src/wechat_publisher/humanizer/__init__.py:60
🔗
中危 外部 URL 外部 URL
https://api.minimax.chat/v1
src/wechat_publisher/humanizer/__init__.py:65
🔗
中危 外部 URL 外部 URL
https://api.moonshot.cn/v1
src/wechat_publisher/humanizer/__init__.py:70
🔗
中危 外部 URL 外部 URL
https://open.bigmodel.cn/api/paas/v4
src/wechat_publisher/humanizer/__init__.py:75
🔗
中危 外部 URL 外部 URL
https://hunyuan.cloud.tencent.com/hunyuan-vision-api
src/wechat_publisher/humanizer/__init__.py:80
🔗
中危 外部 URL 外部 URL
https://api.lingyiwanwu.com/v1
src/wechat_publisher/humanizer/__init__.py:85
🔗
中危 外部 URL 外部 URL
https://api.weixin.qq.com/cgi-bin
src/wechat_publisher/platforms/wechat.py:19
🔗
中危 外部 URL 外部 URL
https://mp.weixin.qq.com
src/wechat_publisher/platforms/wechat.py:171

目录结构

19 文件 · 108.4 KB · 3281 行
Python 12f · 2580L Markdown 4f · 463L Shell 1f · 199L TOML 1f · 34L JSON 1f · 5L
├─ 📁 scripts
│ └─ 🔧 publish.sh Shell 199L · 4.7 KB
├─ 📁 src
│ └─ 📁 wechat_publisher
│ ├─ 📁 converter
│ │ ├─ 🐍 __init__.py Python 159L · 4.7 KB
│ │ ├─ 🐍 css_theme.py Python 230L · 6.7 KB
│ │ ├─ 🐍 theme_types.py Python 73L · 1.6 KB
│ │ ├─ 🐍 themes.py Python 327L · 20.3 KB
│ │ └─ 🐍 wechat_style.py Python 627L · 24.9 KB
│ ├─ 📁 humanizer
│ │ └─ 🐍 __init__.py Python 303L · 8.5 KB
│ ├─ 📁 platforms
│ │ ├─ 🐍 __init__.py Python 17L · 333 B
│ │ ├─ 🐍 base.py Python 113L · 2.1 KB
│ │ └─ 🐍 wechat.py Python 223L · 7.2 KB
│ ├─ 🐍 __init__.py Python 5L · 84 B
│ ├─ 🐍 cli.py Python 367L · 11.8 KB
│ └─ 🐍 config.py Python 136L · 4.0 KB
├─ 📋 _meta.json JSON 5L · 140 B
├─ 📝 CLAUDE.md Markdown 58L · 1.5 KB
├─ 📝 example.md Markdown 27L · 431 B
├─ 📄 pyproject.toml TOML 34L · 746 B
├─ 📝 README.md Markdown 135L · 3.0 KB
└─ 📝 SKILL.md Markdown 243L · 5.8 KB

依赖分析 3 项

包名版本来源已知漏洞备注
httpx >=0.25.0 pip 有版本下限
pydantic >=2.0.0 pip 有版本下限
pillow >=10.0.0 pip 有版本下限

安全亮点

✓ 纯 Python 实现的 Markdown → HTML 转换工具,功能清晰
✓ 凭证仅用于声明的微信 API 和 AI Provider,无凭证外泄
✓ 使用 httpx 进行安全的 HTTP 请求
✓ 依赖版本有最低版本限制(httpx>=0.25.0 等)
✓ 无 base64|bash 管道、裸 IP 请求、eval(atob()) 等恶意模式
✓ 未访问 ~/.ssh、~/.aws 等敏感路径
✓ 无远程脚本下载执行行为