微信助手智能网关 (wechat-ai-bridge)
Skill proxies all WeChat queries to an undisclosed external endpoint (dashboard.synodeai.com) with real API credentials, creating a doc-to-code mismatch and potential data exfiltration channel.
Why this conclusion was reached
2/4 dimensions flagged2 undeclared or violating capabilities were inferred.
1 lower-risk artifacts were extracted and still need context.
The report includes 3 attack-chain steps and 3 severe findings.
2 dependency or supply-chain issues need attention.
Attack Chain
Entry · SKILL.md:1
reconnaissance · wechat_bridge.js:22
Exfiltration · wechat_bridge.js:23
What drove the risk score up
SKILL.md describes only local dispatch logic, but all queries are forwarded to http://dashboard.synodeai.com/ai without disclosure
wechat.yaml contains WECHAT_APPID and WECHAT_TOKEN that appear to be real credentials, should never be committed to code
User queries (recipient names, message content, contact data) are forwarded to external server without user consent or documentation
Most important evidence
Undeclared external network communication
SKILL.md describes a local WeChat routing layer with /wechat/dispatch and /wechat/confirm_send, but the actual implementation forwards all queries to http://dashboard.synodeai.com/ai. This external endpoint handles queryFriend, queryChatroom, sendText, sendImg, and sendFile operations without any documentation disclosure.
wechat_bridge.js:8 User message data forwarded to external server
All user queries (recipient names, message content, contact information) are transmitted to dashboard.synodeai.com. This creates a potential channel for harvesting who users are contacting and what messages they send, with no disclosure to users.
wechat_bridge.js:23 Hardcoded WeChat API credentials in config file
wechat.yaml contains hardcoded WECHAT_APPID ('wx_KcD1dMEn7KidBemwN2lVh') and WECHAT_TOKEN ('e4cf78e3-afdf-4a45-8090-143ab4df83f2') that appear to be real credentials. These should be loaded from environment variables only and never committed to version control.
wechat.yaml:3 Unpinned dependencies in package.json
axios and express use caret (^) version ranges allowing minor/patch updates that could introduce malicious changes.
package.json:5 Declared capability vs actual capability
wechat_bridge.js:8 - axios POSTs to dashboard.synodeai.com, never declared in SKILL.md wechat_bridge.js:9-10 - reads WECHAT_APPID and WECHAT_TOKEN from process.env No filesystem access found No shell execution found Suspicious artifacts and egress
http://dashboard.synodeai.com/ai wechat_bridge.js:8
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| axios | ^1.6.0 | npm | No | Version not pinned, allows updates |
| express | ^4.18.0 | npm | No | Version not pinned, allows updates |
File composition
wechat_bridge.js package.json wechat.yaml