wenzi-runse
Hardcoded API key embedded in source and undeclared Tencent Cloud network endpoints constitute significant hidden behavior not reflected in documentation, with plaintext local credential storage as an additional concern.
A full OpenAI-format API key (sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7) is hardcoded as DEFAULT_API_KEY in scripts/runse.py line 21. This key is packaged and distributed with the skill, making it trivially extractable by anyone who installs the skill. The key's purpose and ownership are unclear — it is not the user's key but a shared/developer key embedded in the delivery artifact.
scripts/runse.py:21 为什么得出这个结论
2/4 个维度触发声明资源与推断能力基本一致。
提取到 2 个高危 IOC 或外联信号。
报告包含 0 步攻击链,另有 1 项高危或严重发现。
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
scripts/runse.py:21 contains sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 hardcoded as DEFAULT_API_KEY — a credential distributed with the skill package
SKILL.md declares Bash but does not mention the two Tencent Cloud Function URLs (ap-shanghai.tencentscf.com); skill-card.md vaguely mentions 'cloud service' but omits the specific infrastructure endpoint
SKILL.md describes '无状态运行,不存储原文' but the implementation writes user text to a temp file (./tmp_input.txt) before sending — this file I/O is not declared
最关键的证据
Hardcoded API key in distributed skill package
A full OpenAI-format API key (sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7) is hardcoded as DEFAULT_API_KEY in scripts/runse.py line 21. This key is packaged and distributed with the skill, making it trivially extractable by anyone who installs the skill. The key's purpose and ownership are unclear — it is not the user's key but a shared/developer key embedded in the delivery artifact.
scripts/runse.py:21 Undeclared external network endpoints
SKILL.md and skill-card.md describe the skill as calling a 'cloud function' but do not name the specific infrastructure. The actual implementation makes HTTP requests to https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat and https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models — Tencent Cloud Function endpoints — neither of which is mentioned in any documentation. Users cannot audit which external service their text is sent to.
scripts/runse.py:19 Undeclared temporary file I/O
SKILL.md instructs to write text to a temporary file (./tmp_input.txt) before processing but does not declare filesystem WRITE access as part of the skill's capabilities. The file write/read cycle is used for the main processing flow but is not mentioned in the allowed-tools mapping or capability description.
scripts/runse.py:163 Plaintext local credential storage without encryption
User-provided personal API keys are saved in plaintext JSON format (0o600 file mode) to a user-specified or default path (~/.workbuddy/wenzi-runse-config.json). While the skill-card.md mentions this, SKILL.md frames it as an optional '进阶' feature and does not prominently warn about plaintext storage risks.
scripts/runse.py:62 声明能力 vs 实际能力
SKILL.md declares Write; runse.py writes temp files at line 163 Bash declared in allowed-tools; HTTP POST to tencentscf.com implicit via script invocation SKILL.md declares Bash; runse.py executed as subprocess runse.py reads os.environ via sys.stdout.encoding check; documented key storage path includes ~ expansion 可疑产物与外联
sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7 scripts/runse.py:21
API_KEY = "sk-16a611a2dbb9270b476c2caf29414e345f587f0548aca4a7" scripts/runse.py:21
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/bailian/chat scripts/runse.py:19
https://1257707270-955niawhww.ap-shanghai.tencentscf.com/v1/models scripts/runse.py:20
https://clawhub.ai/user/abcqq1234567 skill-card.md:9
https://clawhub.ai/abcqq1234567/skills/wenzi-runse skill-card.md:39
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| urllib | stdlib | Python standard library | 否 | Used for HTTP requests — stdlib, no external dependency |
| json | stdlib | Python standard library | 否 | Stdlib JSON serialization |
| os | stdlib | Python standard library | 否 | Stdlib file system operations |
| argparse | stdlib | Python standard library | 否 | Stdlib CLI argument parsing |
文件构成
scripts/runse.py skill-card.md