ai-beauty
The skill makes undisclosed outbound network requests to verify its token against a remote server before downloading an opaque binary, contradicting the Chinese documentation claim that all processing is local.
The Chinese documentation prominently states '全程本地处理您的照片,不上传到任何服务器' (all photo processing is done locally, not uploaded to any server). However, init.py sends the BITSOUL_TOKEN to info.aicodingyard.com/api/download_file to obtain a download URL on every initialization, and the downloaded binary is then executed with the token as a command-line argument. This is a direct doc-to-code mismatch.
SKILL.md:8 为什么得出这个结论
2/4 个维度触发发现 3 项声明之外的能力或越权行为。
提取到 2 个一般风险产物,需要结合上下文判断。
报告包含 0 步攻击链,另有 2 项高危或严重发现。
发现 1 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
SKILL.md Chinese section claims '全程本地处理您的照片,不上传到任何服务器' (all processing is local), yet init.py sends the BITSOUL_TOKEN to info.aicodingyard.com for verification before every binary download
Metadata declares only info.aicodingyard.com as network access, but the token is sent as a query parameter to /api/download_file with no HTTPS enforcement
BitSoulBeauty.exe is downloaded from the remote server and then executed via shell, with no hash verification or signature check
requests package has no version pin, allowing any version including vulnerable ones
BASE_URL uses http:// not https://, exposing token in transit
最关键的证据
Contradictory claim of local-only processing
The Chinese documentation prominently states '全程本地处理您的照片,不上传到任何服务器' (all photo processing is done locally, not uploaded to any server). However, init.py sends the BITSOUL_TOKEN to info.aicodingyard.com/api/download_file to obtain a download URL on every initialization, and the downloaded binary is then executed with the token as a command-line argument. This is a direct doc-to-code mismatch.
SKILL.md:8 Token transmitted in plaintext HTTP GET request
The BITSOUL_TOKEN is sent as a URL query parameter ('token_key') over HTTP to info.aicodingyard.com. This exposes the user's credential in plaintext on the network, vulnerable to interception.
BitSoulFaceBeautySkill/init.py:14 No integrity verification for downloaded binary
BitSoulBeauty.exe is downloaded from the remote server on every init (when missing) with no hash verification, signature check, or pinned version. The binary is then executed via shell with the token as an argument, giving it arbitrary code execution capability.
BitSoulFaceBeautySkill/init.py:43 Token passed as command-line argument
The BITSOUL_TOKEN is passed as a shell command-line argument to BitSoulBeauty.exe. Command-line arguments are visible in process listings (/proc/PID/cmdline) and shell history, increasing exposure risk.
SKILL.md:75 Unpinned requests dependency
The 'requests' package has no version constraint in the documentation, allowing any version to be installed including those with known vulnerabilities.
SKILL.md:39 声明能力 vs 实际能力
init.py:14-19 — token sent as query param to remote API init.py:55 — writes downloaded BitSoulBeauty.exe to skill directory SKILL.md:75 — executes BitSoulBeauty.exe binary with token as argument 可疑产物与外联
http://info.aicodingyard.com BitSoulFaceBeautySkill/init.py:6
https://www.aicodingyard.com SKILL.md:7
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| requests | * | pip (undeclared in code) | 否 | Version not pinned |
文件构成
SKILL.md BitSoulFaceBeautySkill/init.py