子网计算服务
Skill presents as an IPv4 subnet calculator but contains documented evidence of being a repurposed gaokao/school service, with undeclared network access and filesystem write operations.
Why this conclusion was reached
2/4 dimensions flagged2 undeclared or violating capabilities were inferred.
4 lower-risk artifacts were extracted and still need context.
The report includes 4 attack-chain steps and 2 severe findings.
4 dependency or supply-chain issues need attention.
Attack Chain
Entry · SKILL.md:1
social · SKILL.md:15
Persistence · scripts/config.py:29
Exfiltration · scripts/call_api.py:64
What drove the risk score up
SKILL.md describes subnet planning, but config.py class docstring says '小笨羊高考Skill配置' (Gaokao skill config), env_prefix is 'XBY_GAOKAO_', and project structure references 'xiaobenyang_gaokao_skill/'. The skill-card explicitly acknowledges 'leftover references to an unrelated gaokao or school service' as a known risk.
SKILL.md only declares AskUserQuestion as the tool. No network resource is declared in allowed-tools, yet the implementation silently POSTs subnet/IP parameters to https://mcp.xiaobenyang.com/api with the user's API key in headers.
config.py:save_api_key_to_env() writes the user-provided API key to a .env file. SKILL.md does not declare filesystem:WRITE permission.
requirements.txt uses '>= ' for all four dependencies, allowing arbitrary version upgrades from PyPI.
Most important evidence
Skill repurposed from unrelated gaokao/school service
SKILL.md describes an IPv4 subnet calculator, but the code contains clear evidence of being modified from a 'gaokao' (Chinese college entrance exam) service. config.py class docstring is '小笨羊高考Skill配置', env_prefix is 'XBY_GAOKAO_', and SKILL.md's project structure references 'xiaobenyang_gaokao_skill/'. The skill-card.md explicitly acknowledges this as a known risk. The intent and provenance of the skill is unclear.
scripts/config.py:13 Undeclared network access to third-party API
SKILL.md declares no network resource access and lists only AskUserQuestion as a tool. However, all five tool functions in tools.py silently call the xiaobenyang.com MCP API, sending the user's API key and potentially sensitive network topology data (IPs, subnets, CIDR prefixes) to https://mcp.xiaobenyang.com. The SKILL.md never mentions this API call or network access.
scripts/call_api.py:64 API key stored in plaintext on filesystem
User-provided API key is written to .env in plaintext via config.py:save_api_key_to_env(). This file could be committed to version control or read by other processes. The skill-card.md acknowledges this as a known risk ('install only when the provider is trusted').
scripts/config.py:29 All dependencies use unpinned >= versions
requirements.txt specifies 'requests>=2.31.0', 'pydantic>=2.7.0', 'pydantic-settings>=2.2.0', and 'python-dotenv>=1.0.1', allowing arbitrary version upgrades from PyPI.
requirements.txt:1 Incorrect project structure reference in SKILL.md
SKILL.md's project structure block references 'xiaobenyang_gaokao_skill/' as the root directory, which is a leftover artifact inconsistent with the subnet calculator branding.
SKILL.md:75 Declared capability vs actual capability
SKILL.md declares no network access; call_api.py:64 POSTs to https://mcp.xiaobenyang.com/api config.py:29 save_api_key_to_env() writes XBY_APIKEY to .env No shell command execution found config.py:37 reads os.getenv('XBY_APIKEY') No recursive skill invocation No clipboard access No browser automation No database access Suspicious artifacts and egress
https://xiaobenyang.com SKILL.md:19
https://mcp.xiaobenyang.com scripts/config.py:19
https://clawhub.ai/user/alinklab skill-card.md:7
https://clawhub.ai/alinklab/subnet-calculator skill-card.md:27
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| requests | >=2.31.0 | pip | No | Version not pinned |
| pydantic | >=2.7.0 | pip | No | Version not pinned |
| pydantic-settings | >=2.2.0 | pip | No | Version not pinned |
| python-dotenv | >=1.0.1 | pip | No | Version not pinned |
File composition
SKILL.md scripts/call_api.py scripts/config.py skill-card.md requirements.txt