Back to skill

Security audit

Tradekix

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its financial-data purpose, but it can automatically create an account and run account-changing actions like upgrade and API-key revocation without clear confirmation safeguards.

Install only if you are comfortable letting the agent contact Tradekix, send signup details, and store an API key locally. Use read-only market commands by default, and require explicit human approval before signup, upgrade, or revoke actions; avoid running it in environments where HOME or command arguments may be attacker-controlled.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/tradekix.sh:59
Finding

Unsafe JSON Construction Allows Request Manipulation and Configuration Corruption

Content
View full analysis
/dev/null || echo "") if [[ "$success" == "True" ]]; then api_key=$(echo "$response" | python3 -c "import json,sys; print(json.load(sys.stdin)['data']['api_key'])") mkdir -p "$CONFIG_DIR" echo "{\"api_key\":\"$api_key\",\"email\":\"$email\",\"agent_name\":\"$name\"}" > "$CONFIG_FILE" ``` ### Technical Analysis The `name`, `email`, and optional `moltbook` command-line values are directly interpolated into a JSON string without being encoded by a JSON serializer. Consequently, quotation marks, backslashes, control characters, and JSON delimiters supplied in these values are treated as JSON syntax rather than field data. The same unsafe construction is used when writing `config.json`. The `api_key` from the remote response and the user-supplied email and agent name are inserted into JSON using shell string interpolation. A value containing JSON metacharacters can therefore create invalid configuration data or change its logical structure. This issue does not directly cause shell command execution because expanded shell variables are not reparsed as shell syntax. It does, however, cross the JSON data boundary unsafely and permits request manipulation and persistent configuration corruption. ### Attack Path 1. An attacker influences a value passed to `signup`, such as `--name`, `--email`, or `--moltbook`. 2. The attacker includes quotation marks and JSON syntax in that value, for example a sequence that terminates the intended string and adds another property ...[truncated 1053 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/tradekix.sh:12
Finding

Environment-Controlled Configuration Path Is Embedded in Executable Python Source

Content
View full analysis
/dev/null || { echo "Error: Invalid config. Run: tradekix.sh signup" >&2; exit 1 } ``` At line 109: ```bash python3 -c "import json; c=json.load(open('$CONFIG_FILE')); print(f'Agent: {c.get(\"agent_name\",\"?\")}'); print(f'Email: {c.get(\"email\",\"?\")}'); print(f'Key: {c[\"api_key\"][:16]}...')" ``` The affected path is initialized from the process environment: ```bash CONFIG_DIR="$HOME/.config/tradekix" CONFIG_FILE="$CONFIG_DIR/config.json" ``` ### Technical Analysis `CONFIG_FILE` is derived from the environment-controlled `HOME` variable and inserted directly into Python program text passed to `python3 -c`. The path is surrounded by single quotation marks in the generated Python code, but single quotation marks occurring inside `HOME` are not escaped. An attacker who can choose the wrapper's environment may construct a `HOME` value that closes the Python string literal and introduces additional Python statements. If the corresponding file-existence check succeeds, Python interprets the injected content as code rather than path data. The file check makes exploitation less direct because the attacker must also prepare a filesystem path matching the crafted `CONFIG_FILE`. Nevertheless, quote characters are valid in Unix path components, and an attacker with environment control and permission to create the tested path can satisfy that prerequisite. ### Attack Path 1. An attacker gains control over the environment used to launch `tradekix.sh`, including the `HOME` variable. 2. The attacker selects a `HOME` value containing a single quote and valid Python syntax that terminates the intended `open('...')` argument and introduces an a ...[truncated 981 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (11)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documented upgrade command can trigger a paid subscription change, but the skill does not require a clear warning or explicit confirmation step. In an agent setting, that creates a direct risk of unauthorized charges or plan changes if the command is invoked due to ambiguous user intent or automatic workflow behavior.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill invokes shell commands and performs account-management actions, but the manifest does not declare any tool scope or allowed-tools restrictions. That increases the chance the agent can execute shell unexpectedly or more broadly than reviewers and users anticipate, reducing transparency and making risky operations harder to govern.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description uses broad market- and finance-related activation cues, so the skill may trigger in many ordinary conversations about finance. In context, that matters because the skill can run shell commands and perform signup/upgrade flows, creating unnecessary exposure to account creation or other side effects from an overly eager invocation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The setup flow says to sign up automatically if no config exists, and it stores an API key in the user's home directory without an explicit consent warning. This can create third-party accounts and persist credentials locally without the user's informed approval, which is especially risky in agentic environments where setup may happen implicitly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The revoke command invalidates the stored API key, but the documentation does not warn users about that destructive consequence. If triggered accidentally, it can break integrations or interrupt service, and in an agent workflow the loss of access may be surprising and hard to diagnose.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/tradekix.sh (reported line 24)May include surrounding context.

sh
api_get() {
  local endpoint="$1"
  local key; key=$(load_key)
  curl -sL "${BASE_URL}${endpoint}" -H "X-API-Key: $key" -H "Accept: application/json"
}

# Authenticated POST request

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The signup flow sends the user's name and email to a remote API without an explicit privacy notice or confirmation beyond command syntax. In an agent context, users may not realize personal data is being transmitted to a third party, creating privacy and consent issues.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/tradekix.sh (reported line 70)May include surrounding context.

sh
api_key=$(echo "$response" | python3 -c "import json,sys; print(json.load(sys.stdin)['data']['api_key'])")
      mkdir -p "$CONFIG_DIR"
      echo "{\"api_key\":\"$api_key\",\"email\":\"$email\",\"agent_name\":\"$name\"}" > "$CONFIG_FILE"
      chmod 600 "$CONFIG_FILE"
      echo "API key saved to $CONFIG_FILE"
      echo "$response"
    else

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill’s stated purpose is querying market data, but it also exposes account-management actions such as plan upgrades and key revocation. In an agent setting, these side-effecting operations can be invoked unexpectedly, causing billing changes or service disruption that are not necessary for normal read-only market queries.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The upgrade and revoke operations are account-changing POST actions with no confirmation, dry-run, or warning. In an autonomous or semi-autonomous agent environment, this makes accidental billing changes or credential destruction much easier.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Including API key revocation in a market-data skill creates an unnecessary destructive capability. If triggered accidentally or through prompt/agent misuse, it can revoke the user’s credential and deny future access to the service.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.