edge
The skill spawns an external MCP server via npx with an API key, creating opaque code execution that is not inspectable, with undeclared shell execution and indirect credential exposure.
为什么得出这个结论
2/4 个维度触发发现 3 项声明之外的能力或越权行为。
提取到 1 个一般风险产物,需要结合上下文判断。
报告包含 4 步攻击链,另有 2 项高危或严重发现。
发现 1 项需要关注的依赖或供应链线索。
攻击链
初始入口 · SKILL.md:33
权限提升 · SKILL.md:28
权限提升 · SKILL.md:35
最终危害 · SKILL.md:29
风险分是怎么被拉高的
SKILL.md declares mcp:spawn but does not disclose that npx is invoked, which is shell:WRITE execution. Users see only 'MCP server' and may not realize arbitrary code is downloaded and run.
The entire capability surface depends on the @edgedottrade/mcp npm package, which is a black box. The API key is passed as a startup argument, meaning the binary has access to it from initialization with no isolation.
SKILL.md declares 'network: outbound' only, but the MCP server likely makes multiple outbound requests beyond what is documented. The actual network footprint is invisible.
The npx command has no version pinning; any version of @edgedottrade/mcp is accepted, enabling supply chain attacks.
最关键的证据
Undeclared shell execution via npx spawn
The skill invokes 'npx -y @edgedottrade/mcp --api-key ${API_KEY}' which downloads and executes an external npm package. This is shell:WRITE execution and constitutes remote code execution from an external source. The SKILL.md only mentions 'mcp: spawn' without disclosing that npx is used, making the execution vector invisible to users reviewing only the documented behavior.
SKILL.md:28 API key passed to opaque external binary
The Edge Trade API key is passed as a command-line argument to the spawned MCP server at startup. This means the credential is exposed to an external, uninspectable binary from the moment the skill initializes. The MCP server could use this key for any API operation including trading, withdrawal, or data exfiltration. SKILL.md describes it as 'Edge Trade API key (sk-...)' but does not warn about the attack surface of passing it to an external process.
SKILL.md:35 No version pinning on external MCP package
The npx invocation uses '@edgedottrade/mcp' without any version specifier. This means any version—potentially a malicious one published after account compromise—is accepted. The '-y' flag bypasses confirmation prompts.
SKILL.md:29 Incomplete network activity disclosure
SKILL.md declares 'network: outbound' but the MCP server's actual network behavior includes: (1) querying the Edge Trade API for token/pair data, (2) webhook delivery for alerts, (3) polling loops for price subscriptions. These are not enumerated, making the full network footprint opaque.
SKILL.md:15 MCP spawn grants effectively unbounded capability escalation
The 'mcp: spawn' permission combined with spawning a full trading platform MCP server (with trade, portfolio, alerts capabilities) creates a significant capability escalation. The spawned process can access all tools declared in its schema. SKILL.md does not enumerate what the MCP server can do, leaving users unable to audit the actual attack surface.
SKILL.md:11 声明能力 vs 实际能力
SKILL.md declares no filesystem access. No filesystem operations detected. SKILL.md declares 'network: outbound' but the MCP server's actual outbound traffic (API calls to trading endpoints, webhook delivery for alerts, polling loops) is not enumerated. SKILL.md: command: npx. The skill executes 'npx -y @edgedottrade/mcp --api-key ${API_KEY}', which is shell:WRITE not declared in allowed-tools or permissions. SKILL.md: mcp: spawn. The skill spawns a full MCP server process, granting it all capabilities of that server's tools (search, inspect, screen, portfolio, trade, alerts). This effectively escalates from a declared API wrapper to arbitrary code execution. The skill accesses $API_KEY from the environment and passes it as an argument to the spawned npx process. This is not declared in SKILL.md permissions. No clipboard access detected. No browser access detected. No database access detected. 可疑产物与外联
https://docs.trade.edge/agents SKILL.md:26
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @edgedottrade/mcp | * | npm (via npx) | 否 | No version pinned. Pulled from npm at runtime via npx -y. Not vendored or audited. |
文件构成
SKILL.md