子网计算服务
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.
为什么得出这个结论
2/4 个维度触发发现 2 项声明之外的能力或越权行为。
提取到 4 个一般风险产物,需要结合上下文判断。
报告包含 4 步攻击链,另有 2 项高危或严重发现。
发现 4 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:1
social · SKILL.md:15
持久化 · scripts/config.py:29
数据外泄 · scripts/call_api.py:64
风险分是怎么被拉高的
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.
最关键的证据
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 声明能力 vs 实际能力
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 可疑产物与外联
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
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| requests | >=2.31.0 | pip | 否 | Version not pinned |
| pydantic | >=2.7.0 | pip | 否 | Version not pinned |
| pydantic-settings | >=2.2.0 | pip | 否 | Version not pinned |
| python-dotenv | >=1.0.1 | pip | 否 | Version not pinned |
文件构成
SKILL.md scripts/call_api.py scripts/config.py skill-card.md requirements.txt