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 Why this conclusion was reached
2/4 dimensions flagged3 undeclared or violating capabilities were inferred.
2 lower-risk artifacts were extracted and still need context.
The report includes 0 attack-chain steps and 2 severe findings.
1 dependency or supply-chain issues need attention.
What drove the risk score up
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
Most important evidence
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 Declared capability vs actual capability
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 Suspicious artifacts and egress
http://info.aicodingyard.com BitSoulFaceBeautySkill/init.py:6
https://www.aicodingyard.com SKILL.md:7
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| requests | * | pip (undeclared in code) | No | Version not pinned |
File composition
SKILL.md BitSoulFaceBeautySkill/init.py