安全决策报告
wechat-ai-bridge
配置文件明文存储微信API凭证,代码向未声明的外部URL传输用户联系数据,存在凭证泄露和信息外泄风险
最直接的威胁证据
01
部署包含wechat.yaml的skill到AI Agent环境 初始入口 · wechat.yaml
02
攻击者通过Git history或配置泄露获取硬编码凭证 权限提升 · wechat.yaml
03
利用凭证伪造微信消息或窃听通信 最终危害 · wechat.yaml
为什么得出这个结论
2/4 个维度触发 阻止
声明与实际能力
发现 2 项声明之外的能力或越权行为。
复核
隐藏执行与外联
提取到 1 个一般风险产物,需要结合上下文判断。
阻止
攻击链与高危发现
报告包含 3 步攻击链,另有 2 项高危或严重发现。
复核
依赖与供应链卫生
发现 2 项需要关注的依赖或供应链线索。
攻击链
01
部署包含wechat.yaml的skill到AI Agent环境
初始入口 · wechat.yaml:1
02
攻击者通过Git history或配置泄露获取硬编码凭证
权限提升 · wechat.yaml:2
03
利用凭证伪造微信消息或窃听通信
最终危害 · wechat.yaml:2
风险分是怎么被拉高的
硬编码敏感凭证 +20
wechat.yaml明文存储APPID和TOKEN
未声明的外部网络通信 +20
SKILL.md未声明代码向dashboard.synodeai.com发送数据
凭证无版本控制保护 +10
wechat.yaml可能被提交到代码仓库
文档能力声明不完整 +5
SKILL.md未声明network资源使用
最关键的证据
高危 凭证窃取
配置文件明文存储敏感凭证
wechat.yaml包含明文WECHAT_APPID和WECHAT_TOKEN,这些凭证可能被提交到版本控制系统,任何能访问仓库的人都能获取。
wechat.yaml:2 将凭证移至环境变量,添加wechat.yaml到.gitignore,从代码中删除硬编码凭证
高危 数据外泄
向未声明的外部URL传输数据
代码将用户查询的好友/群聊信息(wxId、nickname、remark)POST到http://dashboard.synodeai.com/ai,但SKILL.md未声明此外部通信行为。
wechat_bridge.js:8 在SKILL.md中明确声明外部API端点,或使用本地API替代
中危 文档欺骗
文档未声明实际使用的资源权限
SKILL.md仅描述业务逻辑(endpoints),未声明需要读取环境变量和发起网络请求的权限。
SKILL.md:1 在SKILL.md中添加allowed-tools: [Read, Bash]声明及理由
低危 供应链
依赖包无版本锁定
package.json中axios和express使用^通配符版本,可能引入恶意更新的依赖。
package.json:4 使用精确版本号如axios: "1.6.0"
声明能力 vs 实际能力
网络访问 阻止
声明 NONE
→ 推断 WRITE
wechat_bridge.js:8 - 代码向外部URL发送请求但SKILL.md未声明 环境变量 阻止
声明 NONE
→ 推断 READ
wechat_bridge.js:9-10 - 读取WECHAT_APPID和WECHAT_TOKEN但SKILL.md未声明 可疑产物与外联
中危 外部 URL
http://dashboard.synodeai.com/ai wechat_bridge.js:8
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| axios | ^1.6.0 | npm | 否 | 无版本锁定 |
| express | ^4.18.0 | npm | 否 | 无版本锁定 |
文件构成
4 个文件 · 104 行
JavaScript 1 个文件 · 77 行Markdown 1 个文件 · 14 行JSON 1 个文件 · 10 行YAML 1 个文件 · 3 行
需关注文件 · 4
wechat_bridge.js 向未声明的外部URL传输数据 · http://dashboard.synodeai.com/ai
SKILL.md 文档未声明实际使用的资源权限
package.json 依赖包无版本锁定
wechat.yaml 配置文件明文存储敏感凭证
安全亮点
代码结构清晰,错误处理完善
无直接代码执行或shell调用
未发现base64编码或混淆代码
功能实现与文档描述的业务流程基本一致