Back to skill

Security audit

Trading Analyzer

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent trading-analysis integration, but its setup guidance relies on mutable third-party MCP packages and broad MCP discovery while handling an API key.

Review the MCP servers before use, avoid unpinned npx/@latest examples, run market-data MCP servers with a limited environment, and use a dedicated revocable Alpha Vantage key. Treat generated trading signals as informational only, not investment advice.

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
README.md:77
Finding

Unpinned Third-Party MCP Packages Execute with User Privileges and Credential Access

Content
View full analysis

Vulnerability Details

File Location: README.md, lines 77-94
Vulnerability Type: Unpinned and automatically executed third-party dependencies
Risk Level: Medium

Vulnerable Code

json
{
  "mcpServers": {
    "tradingview-m": {
      "description": "TradingView crypto analysis",
      "command": "npx",
      "args": ["-y", "tradingview-m-mcp@latest"]
    },
    "alpha-vantage": {
      "description": "Alpha Vantage stock data",
      "command": "npx",
      "args": ["-y", "alpha-vantage-mcp@latest"],
      "env": {
        "ALPHAVANTAGE_API_KEY": "$env:ALPHAVANTAGE_API_KEY"
      }
    },
    "yahoo-finance": {
      "description": "Yahoo Finance market data",
      "command": "npx",
      "args": ["-y", "yahoo-finance-mcp@latest"]
    }
  }
}

Technical Analysis

The documented configuration executes three third-party npm packages through npx. Each package uses the mutable @latest tag, while -y suppresses the interactive installation confirmation. Consequently, the code executed on a future invocation can differ from the version originally reviewed.

npm packages can execute package lifecycle scripts during installation and arbitrary JavaScript when launched. The project does not pin reviewed versions, provide a lockfile or integrity hashes, verify package provenance, or require execution inside a sandbox. A compromised package release, maintainer account, or package-resolution path could therefore introduce arbitrary code without any modification to this Skill.

The alpha-vantage-mcp process is explicitly given ALPHAVANTAGE_API_KEY. Access to this key is functionally necessary for authenticated Alpha Vantage requests, but providing it to automatically retrieved, mutable code creates a supply-chain exposure. Because these processes are otherwise launched with the user's normal privileges, a malicious release may also access other files, environment data, and ...[truncated 1893 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace every @latest reference with an exact, reviewed package version:

    json
    "args": ["-y", "alpha-vantage-mcp@X.Y.Z"]
    

    Apply the same control to the TradingView and Yahoo Finance packages.

  2. Record dependency versions in a lockfile and enforce integrity verification during installation. Where supported, validate package signatures, registry provenance attestations, and expected integrity hashes.

  3. Remove automatic -y acceptance from security-sensitive setup instructions, or install dependencies through a separate, reviewable provisioning step rather than downloading code whenever the MCP server starts.

  4. Verify and document the official package names, publishers, source repositories, expected network destinations, and release-review process. This reduces dependency-confusion, typosquatting, and publisher-compromise risks.

  5. Run each MCP server in an isolated container or restricted operating-system account with:

    • Read-only access to required files.
    • No access to unrelated home-directory data.
    • A minimal environment.
    • Restricted outbound network access limited to the corresponding market-data provider.
    • Resource and process limits.
  6. Supply ALPHAVANTAGE_API_KEY only to the Alpha Vantage process. Do not expose the parent process's complete environment where a minimal allowlist can be used.

  7. Use a dedicated, least-privileged API key with provider-side quotas and restrictions where available. Establish key rotation and immediate revocation procedures for suspected package compromise.

  8. Avoid running these commands as root, through sudo, or from an administrator shell. Document that MCP packages must run only with an unprivileged account.

  9. Add dependency monitoring and periodically review pinned updates before deployment rather than accepting new releases automatically.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (18)

MCP Config Access

High
Category
Agent Snooping
Confidence
88% confidence
Finding

The README instructs users to use a tool that auto-discovers MCP servers configured in local editors. Enumerating and interacting with local MCP configuration can expose sensitive server definitions, tokens, endpoints, or trusted local integrations, so this is more dangerous in an agent-skill context than ordinary CLI discovery.

Content

Scanner excerpt · README.md (reported line 28)May include surrounding context.

Use npx to run mcporter immediately without installing globally:

bash
# List available MCP servers
npx mcporter list

# Call a specific MCP tool

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · README.md (reported line 145)May include surrounding context.

nfig ~/.mcporter/mcporter.json add global-server https://api.example.com/mcp

text

### Step 3: Set Up API Keys

#### Alpha Vantage API Key (Required for Stock Analysis)

Get a free API key at: https://www.alphavantage.co/api/

**Set as environment variable:**

```bash
export ALPHAVANTAGE_API_KEY="your_api_key_here"

Add to shell profile (~/.bashrc, ~/.zshrc, etc.) for persistence:

bash
echo 'export ALPHAVANTAGE_API_KEY="your_api_key_here"' >> ~/.bashrc
source ~/.bashrc

Or set in mcporter config:

json
{
  "mcpServers": {
    "alpha-vantage": {
      "env": {
        "ALPHAVANTAGE_API_KEY": "$env:ALPHAVANTAGE_API_KEY"
      }
    }
  }
}

Other API Keys (Optional)

  • TradingView: No API key needed for basic analysis (public data)
  • Yahoo Finance: No API key needed (public data)

Quick Start

Analyze a Cryptocurrency

bash
# Get detailed technical analysis for Bitcoin
mcporter call tradingview-m.coin_analysis symbol=BTCUSDT exchange=BINAN

MCP Config Access

High
Category
Agent Snooping
Confidence
88% confidence
Finding

This troubleshooting step again directs users to list auto-discovered MCP servers, which can reveal local configuration and available integrations. In environments where MCP servers include internal tools or secrets-bearing endpoints, simple enumeration increases attack surface and information disclosure risk.

Content

Scanner excerpt · README.md (reported line 407)May include surrounding context.

MCP servers not discovered

bash
# List all available MCP servers (auto-discovers from editors)
mcporter list

# List with verbose output to see config sources

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The README instructs users to execute npx mcporter without pinning an exact package version. This creates a supply-chain risk because future or compromised package releases could be fetched and executed at runtime, especially since npx can install code on demand. In the context of an agent skill that manages MCP servers, this is more dangerous because the tool can discover and interact with locally configured servers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This example again uses npx mcporter without an exact version, allowing execution of whatever package version is current at invocation time. If the npm package or dependency chain is hijacked, users may run attacker-controlled code directly from the README workflow.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 81)May include surrounding context.

Step 2: Configure MCP Servers

MCPorter auto-discovers MCP servers from your editors. However, if you need to manually configure the trading data providers or add them to a custom config, edit or create config/mcporter.json:

json
{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · README.md (reported line 124)May include surrounding context.

md
mcporter config list

# Add a new server
mcporter config add tradingview-m --http-url "https://api.example.com/mcp"

# Add with alternate config location
mcporter config --config ~/.mcporter/mcporter.json add global-server https://api.example.com/mcp

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · README.md (reported line 127)May include surrounding context.

md
mcporter config list

# Add a new server
mcporter config add tradingview-m --http-url "https://api.example.com/mcp"

# Add with alternate config location
mcporter config --config ~/.mcporter/mcporter.json add global-server https://api.example.com/mcp

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The troubleshooting guidance recommends npx mcporter without version pinning. Even in support sections, copy-pasteable runtime package execution increases supply-chain exposure because users are encouraged to fetch and run the latest package during incident handling.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The README recommends npx mcporter call ... without pinning a version, which can cause arbitrary updated package code to be installed and executed. Because this command is used to contact MCP servers and possibly process sensitive local configuration, the practical blast radius is larger than a generic CLI example.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
76% confidence
Finding

The README suggests testing with an ad-hoc HTTP MCP URL, which can cause user requests and potentially sensitive context to be sent to an arbitrary remote server. In this skill context, where tool calls may involve local MCP environments and financial queries, that external transmission risk is more meaningful than a generic sample URL.

Content

Scanner excerpt · README.md (reported line 427)May include surrounding context.

md
npx mcporter call tradingview-m.coin_analysis symbol=BTCUSDT exchange=BINANCE timeframe=15m

# Test with ad-hoc HTTP URL (for server you control)
npx mcporter call --http-url "https://api.example.com/mcp" list

# Check if specific server is configured properly
mcporter config get tradingview-m

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

This command again uses unpinned npx mcporter, now combined with an ad-hoc HTTP URL. That compounds the risk: users both execute the latest package code and connect it to a remote endpoint, increasing exposure to supply-chain compromise and remote misuse.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
74% confidence
Finding

This configuration example encourages adding an HTTP MCP server, which can route future tool calls and metadata to an external endpoint. The risk is contextual rather than inherently malicious, but documentation should acknowledge that configuring remote servers changes the data boundary and may expose sensitive queries or environment-derived information.

Content

Scanner excerpt · README.md (reported line 447)May include surrounding context.

md
mcporter config list

# Add MCP server to project config
mcporter config add myserver --http-url "https://api.example.com/mcp"

# Use custom config location
mcporter --config ~/custom/mcporter.json list

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

If the line includes npx mcporter, it has the same on-demand execution risk as the other unpinned examples. Users troubleshooting configuration problems are especially likely to copy commands verbatim, so this remains a realistic supply-chain issue.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

If the line includes npx mcporter, it has the same on-demand execution risk as the other unpinned examples. Users troubleshooting configuration problems are especially likely to copy commands verbatim, so this remains a realistic supply-chain issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill presents explicit trading recommendations such as 'Signal: HOLD', 'Outlook: BULLISH', price targets, and risk labels without any accompanying disclaimer that outputs are informational only and not financial advice. In a trading-analysis context, users may reasonably rely on these recommendations for real financial decisions, increasing the chance of harmful or inappropriate action based on incomplete, delayed, or model-generated analysis.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README promotes pulling market data and using external providers with API keys but does not warn users that requests, symbols, usage patterns, and potentially credentials or metadata may be transmitted to third parties. This is primarily a transparency and privacy issue rather than direct code execution, but it matters more here because the skill aggregates multiple external services.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.