Back to skill

Security audit

Crypto Analyst

Security checks for vulnerabilities and agentic risk

Overview

This crypto analysis skill largely fits its stated purpose, but it runs unbundled local helper scripts by default and handles exchange credentials with misleading documentation.

Review before installing. Use only read-only OKX API keys with no trading or withdrawal permissions, avoid placing broad credentials in the project .env, and run okx_analyst.py with --no-news unless the external helper scripts are reviewed, trusted, and expected on your machine.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
scripts/okx_analyst.py:829
Finding

Default Execution of Unverified External Skill Scripts

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (48)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

If the skill can invoke external scripts or news aggregation beyond what the description discloses, that hidden expansion of behavior materially increases attack surface and user surprise. Undisclosed external execution paths are risky in agent skills because they can introduce unreviewed network destinations, data handling, or shell execution not anticipated by the user.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 5)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 19)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 65)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 66)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 70)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/okx_analyst.py (reported line 20)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/okx_analyst.py (reported line 36)May include surrounding context.

python
"""
OKX Account Balance Checker
Requires OKX API Key with read permissions. Uses only public endpoints (no trading).
.env 需要: OKX_API_KEY, OKX_API_SECRET, OKX_API_PASSPHRASE
"""

import sys

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 21)May include surrounding context.

python
def load_env():
    """Load OKX credentials from .env (优先项目根目录,其次脚本目录)"""
    for env_path in [
        os.path.join(PROJECT_ROOT, '.env'),
        os.path.join(SCRIPT_DIR, '.env'),
    ]:
        if os.path.exists(env_path):

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/balance_check.py (reported line 22)May include surrounding context.

python
def load_env():
    """Load OKX credentials from .env (优先项目根目录,其次脚本目录)"""
    for env_path in [
        os.path.join(PROJECT_ROOT, '.env'),
        os.path.join(SCRIPT_DIR, '.env'),
    ]:
        if os.path.exists(env_path):

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises and orchestrates scripts that require shell execution, network access, file reads, and environment-based secrets, but it does not declare any explicit tool scope or permissions boundaries. This increases the risk of over-privileged execution, accidental secret exposure, or unsafe tool invocation because consumers cannot tell what capabilities the skill actually needs before running it.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill metadata and instructions are entirely presented in Chinese, with no indication that the user may choose another language or locale. Under the stated policy, a language constraint should either be optional for the user or explicitly justified as region-specific.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger phrase includes broad, everyday language such as asking for market views, which can cause the skill to activate unintentionally in contexts where the user did not explicitly request this crypto tool. Unintended invocation is more dangerous here because the skill can lead to network access, script execution, and potentially credential-dependent flows.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script claims it 'uses only public endpoints' but actually calls OKX's authenticated private /api/v5/account/balance endpoint and requires API key, secret, and passphrase. This mismatch can mislead users into supplying sensitive credentials under a false assumption, increasing the chance of unsafe deployment or over-trust.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The module docstring materially contradicts the implementation by presenting the API usage as public/non-sensitive while the code performs signed private account access. In a security-sensitive crypto skill, this deception-by-documentation can cause operators to expose exchange credentials they would not otherwise provide.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/cross_exchange.py (reported line 35)May include surrounding context.

python
symbol = symbol.upper().replace('-', '') + 'USD'
    # Try Binance US first, then OKX as fallback reference
    for base_url in [
        f"https://api.binance.us/api/v3/ticker/price?symbol={symbol}",
    ]:
        try:
            r = requests.get(base_url, timeout=10)