Back to skill

Security audit

Tradebot Alpha

Security checks for vulnerabilities and agentic risk

Overview

This is a narrow read-only trading-signal connector, but it tells users to put an API key directly on the command line, which can expose the credential locally.

Review before installing if you plan to use a real API key. Prefer a safer credential channel if available, rotate any key previously used on the command line, and treat returned trading signals as third-party financial data rather than local-only analysis.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
src/index.js:13
Finding
API Key Exposure Through Command-Line Arguments<![CDATA[ ## Vulnerability Details **File Location**: `src/index.js:13-20` **Related Documentation**: `SKILL.md:26-27`, `README.md:34-41` **Vulnerability Type**: Sensitive credential exposure through process arguments and shell history **Risk Level**: Medium ### Vulnerable Code ```js // Parse CLI args const args = process.argv.slice(2); let apiKey = null; let command = null; let symbol = 'BTC'; for (let i = 0; i < args.length; i++) { if (args[i] === '--key' && args[i + 1]) { apiKey = args[i + 1]; i++; ``` The documented invocation explicitly instructs users to place the secret on the command line: ```bash tradebot-alpha --key YOUR_API_KEY analyze BTC tradebot-alpha --key YOUR_API_KEY status ``` The credential is subsequently sent to the declared API as a Bearer token: ```js const res = await fetch(`${API_BASE}${endpoint}`, { headers: { 'Authorization': `Bearer ${apiKey}` } }); ``` ### Technical Analysis The implementation obtains the API key from `process.argv`. Command-line arguments are not an appropriate secret-input channel because they can be retained in shell history, captured by terminal logging or monitoring software, and exposed through process-inspection facilities while the command is running. Sending the key in an HTTPS Authorization header to the fixed and documented `https://tradebot-alpha.bluefeza.com/api/v1` endpoint is consistent with the Skill's declared authenticated API-fetching function. No transmission to an undeclared host was identified. The vulnerability is the unnecessary local exposure created by the credential-input mechanism, not the authenticated network request itself. ### Attack Path 1. A user follows the supplied instructions and runs the CLI with `--key REAL_API_KEY`. 2. The shell may persist the complete command, including the API key, in its history. 3. While the process is running, a local process or monitoring facility with sufficient access may inspect its command-line arguments. 4. An attacker who ...[truncated 1079 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove or deprecate the `--key` argument so credentials are not placed in process arguments. 2. Prefer an operating-system credential store or a configuration file readable only by the owning user. 3. If environment-variable support is provided, document its residual exposure risks and use a narrowly named variable such as `TRADEBOT_ALPHA_API_KEY`. 4. Provide an interactive hidden prompt for ad hoc use, ensuring that input echo is disabled. 5. Never print, log, include in error messages, or persist the full API key. 6. Update `SKILL.md`, `README.md`, and CLI help output to use the protected credential mechanism. 7. Allow users to revoke and rotate exposed keys, and recommend that existing users remove commands containing keys from shell-history files. 8. On the service side, use scoped, revocable, expiring credentials and apply rate limits to reduce the impact of credential theft. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Lp3

Medium
Category
MCP Least Privilege
Confidence
85% confidence
Finding
The skill advertises network-backed functionality ('signal fetcher', API key usage, external homepage/API) but does not declare any explicit tool scope such as permissions or allowed-tools. This creates ambiguity about what external access the skill expects and weakens policy enforcement, making unintended or overbroad network use harder to review and constrain.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Content
|:---|:---|:---|
| Free | $0/month | Manual monitoring, basic alerts, 25 API requests/day |
| Pro | $99/month | Real-time signals, 100 API requests/day |
| Enterprise | $499/month | Custom strategies, unlimited API calls |

## Usage
Confidence
85% confidence
Finding
Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.

Unbounded Resource Access

Medium
Category
Excessive Agency
Content
|:---|:---|:---|
| Free | $0/month | Manual monitoring, basic alerts, 25 API requests/day |
| Pro | $99/month | Real-time signals, 100 API requests/day |
| Enterprise | $499/month | Custom strategies, unlimited API calls |

## Usage
Confidence
80% confidence
Finding
Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.

Missing User Warnings

Low
Confidence
86% confidence
Finding
The README instructs users to pass an API key and interact with a cloud-hosted service, but it does not explicitly warn that requests, identifiers, and possibly trading-related data will be transmitted to a third-party backend. In a finance-related skill, that omission can mislead users about where sensitive data goes and increase the chance of accidental disclosure or inappropriate operational use.

Missing User Warnings

Low
Confidence
89% confidence
Finding
This code performs outbound network calls and sends a bearer token in the Authorization header to a remote endpoint. While the tool's purpose is a connector, the file does not clearly warn users that their provided credential will be transmitted to an external service when commands run.

Static analysis

No suspicious patterns detected.