Back to skill

Security audit

Tradingview Quantitative

Security checks for vulnerabilities and agentic risk

Overview

This skill mostly matches its TradingView market-analysis purpose, but its setup guidance can expose credentials through an unclear MCP endpoint and mutable npm execution.

Review this skill before installing. Use only a verified MCP endpoint, do not send JWT bearer tokens to the example host, prefer pinned npm package versions, and keep API keys in a secret store or environment variable rather than command arguments. Do not enter a TradingView account password for this RapidAPI/JWT setup unless you independently verify a legitimate need. Treat all buy/sell, options, crypto, and position-size outputs as educational market analysis, not personalized investment advice.

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

T08 · Insecure Dependencies

Warning
Location
README.md:14
Finding

Unpinned npm Packages Executed Through npx

Content
View full analysis
" ] } } } ``` Equivalent instructions also appear in `README.zh.md` and `SECURITY.md`. ### Technical Analysis The documentation directs users to execute the `skills` and `mcp-remote` npm packages through `npx` without an exact version, lockfile, or integrity constraint. Depending on local npm behavior and package availability, `npx` can download the current package release from the configured npm registry and execute its lifecycle or entry-point code with the privileges of the user running the Agent application. Because the effective package contents may change after this Skill has been audited, compromise of the package publisher, npm account, registry, or transitive dependency chain could introduce arbitrary local code execution. The `mcp-remote` process is particularly sensitive because the configuration supplies an API key in its command-line arguments. No evidence establishes that the currently published packages are malicious. The vulnerability is the unsafe, mutable dependency execution model. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution channel, or a transitive dependency used by `skills` or `mcp-remote`. 2. The attacker publishes a malicious release under the same package name. 3. A user fol ...[truncated 892 chars]
Remediation
View remediation
add hypier/tradingview-quantitative-skills ``` and: ```json { "command": "npx", "args": [ "--no-install", "mcp-remote", "https://mcp.rapidapi.com" ] } ``` 2. Install dependencies locally from a lockfile before use, then invoke them with `npx --no-install` so startup cannot silently download a new release. 3. Commit and review an npm lockfile where applicable, and verify registry integrity hashes during installation. 4. Document the canonical npm publisher, source repository, expected package name, and reviewed version to reduce dependency-confusion and typosquatting risks. 5. Audit package lifecycle scripts and transitive dependencies before approving upgrades. 6. Avoid exposing API keys directly in process arguments. Use a supported secret store or environment-to-header mechanism that does not make the value visible in command listings. 7. Run the MCP process under a minimally privileged account with access only to the resources required for market-data requests. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
README.md:90
Finding

Bearer Token May Be Transmitted to an Unverified Placeholder MCP Endpoint

Content
View full analysis
**⚠️ SECURITY WARNING**: Replace `` with the actual JWT token from Step 1. Never commit tokens to version control. ```json { "mcpServers": { "tradingview": { "type": "streamable-http", "url": "https://mcp.example-mcp-server.com/mcp", "headers": { "Authorization": "Bearer ", "Accept": "application/json, text/event-stream" } } } } ``` ``` The same configuration appears in `README.zh.md`. ### Technical Analysis The instructions explicitly tell users to replace the JWT placeholder but do not explicitly require replacement or verification of the configured MCP URL. The hostname `mcp.example-mcp-server.com` is not a reserved `example.com` documentation hostname, and the repository does not establish its ownership, trust relationship, or authorization to receive tokens generated by the RapidAPI endpoint. An MCP client using this configuration will include the bearer token in the HTTP `Authorization` header sent to the configured host. A user who replaces only the token, as instructed, may therefore disclose it to an unverified external service. TLS only protects the token while in transit to the configured host; it does not prevent the receiving host from reading or misusing the credential. ### Attack Path 1. The user submits their RapidAPI key to the documented token-generation endpoint and receives a JWT. 2. The user copies the provided MCP configuration. 3. Following the explicit instruction, the user replaces `` but leaves the URL unchanged. 4. Cursor, Claude Desktop, or another MCP client connects to `https://mcp.example- ...[truncated 852 chars]
Remediation
View remediation
with a server you operate or have independently verified. Never send the JWT to an unknown endpoint. ``` 3. Use an unmistakable configuration placeholder: ```json { "url": "", "headers": { "Authorization": "Bearer " } } ``` 4. Document the expected token issuer, audience, destination hostname, permitted scope, and expiration period. 5. Require the MCP service to validate issuer, audience, signature, expiration, and narrow authorization scopes. 6. Prefer short-lived, destination-bound tokens so a token issued for one MCP service cannot be replayed against another. 7. Provide revocation and rotation instructions for users who may have sent a token to an incorrect endpoint. 8. If no supported self-hosted MCP server implementation is provided, remove this configuration method rather than publishing an unverifiable credential destination. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (34)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

This section recommends a specific options strategy with strikes, expiration, profit targets, stop loss rules, and probability language, but omits any warning that options are complex, can lose value rapidly, and may be unsuitable for many users. Because options involve leverage, time decay, and suitability concerns, presenting this as straightforward guidance materially raises the risk of user harm.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding

The installation command uses npx skills add without pinning an exact package or repository version, so users may fetch whatever content is current at install time. This creates a supply-chain risk: if the upstream package, tag, or dependency chain is compromised, users could install altered skill content or tooling without noticing.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README mixes two different authentication models: earlier sections describe RapidAPI key/JWT-based setup, while the FAQ tells users to verify a TradingView account password and possibly app-specific passwords. This inconsistency can lead users to enter unrelated credentials into the wrong service or tool, increasing the risk of credential disclosure, phishing-style confusion, and insecure troubleshooting.

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.

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 · README.md (reported line 82)May include surrounding context.

⚠️ 安全警告:将 <YOUR_RAPIDAPI_KEY_HERE> 替换为你的实际 API 密钥。切勿分享或提交你的 API 密钥。

bash
curl --request POST \
  --url https://tradingview-data1.p.rapidapi.com/api/mcp/generate \
  --header 'Content-Type: application/json' \
  --header 'x-rapidapi-host: tradingview-data1.p.rapidapi.com' \

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 · README.zh.md (reported line 82)May include surrounding context.

⚠️ 安全警告:将 <YOUR_RAPIDAPI_KEY_HERE> 替换为你的实际 API 密钥。切勿分享或提交你的 API 密钥。

bash
curl --request POST \
  --url https://tradingview-data1.p.rapidapi.com/api/mcp/generate \
  --header 'Content-Type: application/json' \
  --header 'x-rapidapi-host: tradingview-data1.p.rapidapi.com' \

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The FAQ says authentication failures should be troubleshot using a TradingView account/password, but the rest of the document describes RapidAPI key or JWT-based authentication. This inconsistency can mislead users into entering unrelated credentials, increasing the risk of credential exposure, phishing-style confusion, or unsafe secret handling during setup.

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 · SECURITY.md (reported line 70)May include surrounding context.

bash
# Set appropriate file permissions (Unix/Linux/macOS)
chmod 600 ~/Library/Application\ Support/Cursor/mcp_config.json

Using Environment Variables (Advanced)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The example provides specific buy recommendations, entry ranges, targets, stop losses, and position sizing without any warning that the content is informational only and carries risk of financial loss. In a skill explicitly designed for investment analysis, users may reasonably treat this as actionable advice, increasing the chance of unsuitable or over-trusted trading decisions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The crypto example gives a concrete trading strategy with entry, target, stop loss, and risk-reward framing but omits any warning about the high volatility and loss potential of digital asset trading. Because crypto markets are especially speculative, presenting this as a clean strategy without caution can encourage unsafe reliance by users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The example workflow hard-codes lang='zh-Hans' for news retrieval, which imposes a specific language choice rather than offering user selection. This is a natural-language locale policy issue because the guide presents the fixed language as the default pattern without documenting opt-in or regional justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The market review example fixes both market_country='CN' and lang='zh-Hans', steering output to a specific country and language without stating that this is optional or only for China-focused analysis. Because the file is a general usage guide, this can violate locale-choice expectations unless clearly justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This section gives concrete entry points, stop-loss rules, target prices, success-rate figures, and staged position-building instructions without any balancing warning that trading can cause substantial losses and that patterns are probabilistic, not predictive. In a skill explicitly marketed as a professional quantitative investment analysis system, users are more likely to treat this as actionable financial guidance, increasing the risk of harm from overreliance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The examples present specific assets, prices, entries, targets, stop losses, risk-reward ratios, and positive outcome narratives, but do not warn that these are retrospective illustrations, may not generalize, and can encourage users to imitate trades without understanding risk. Because the skill centers on investment analysis, these profit-oriented examples can be reasonably interpreted as endorsements of similar real-world trading behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The example gives explicit buy recommendations, target prices, stop losses, and position sizing without any warning that this is educational, non-personalized, and subject to market risk. In a trading skill, users may treat these outputs as actionable financial advice, increasing the chance of inappropriate or harmful decisions based on incomplete suitability and risk context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The content provides concrete sector allocation percentages and tactical portfolio positioning without clarifying that the guidance is generalized, may not fit individual circumstances, and can lead to losses. In the context of an investment analysis skill, this is especially risky because users may interpret the allocation model as tailored advice and act on it without understanding diversification, volatility, or suitability constraints.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The workflow explicitly instructs the agent to obtain the user's stock holdings list before performing dividend tracking, but it provides no notice, consent step, or data-minimization guidance. Holdings data is sensitive financial information, and silent collection or use can expose private investment positions and create unnecessary privacy risk if logged, retained, or shared with downstream tools.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instructions explicitly route Chinese-name input through lang="zh", and later news/news-detail calls are fixed to zh-Hans. This imposes a specific language/locale behavior in the workflow without documenting user choice, which matches the policy-violation category for language or locale constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The calendar step hard-codes market="china", which creates a locale/region constraint in the workflow. Because the file presents itself as a general deep stock analysis workflow and does not state that it is China-specific, this is an undocumented locale policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The workflow hardcodes lang='zh-Hans' and China-specific market parameters for news retrieval without checking user preference or documenting why that locale is required. This can bias results, omit relevant non-Chinese sources, and cause the agent to provide incomplete or misleading event analysis if a user expects broader or different-market coverage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The example leaderboard calls fix market_code='china', which imposes a specific market/locale in the workflow's natural-language guidance. The file does not state that the workflow is China-specific or offer the user an option to select another market, so it can violate language/locale policy constraints requiring user choice or explicit justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The workflow hard-codes lang='zh-Hans' for news retrieval and news detail fetching, which imposes a specific language/locale without user opt-in. The file does not offer a language choice or explain why Simplified Chinese is mandatory for this skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This markdown workflow includes a sample user trigger, "How was the A-share market today?", but does not define any narrower activation boundaries, exclusions, or explicit trigger scope. Because the file presents a general conversational request as the invocation pattern, the workflow could be matched for ordinary market discussion rather than an intentional request to run the full review skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file defines invocation examples, so SQP-1 applies. The phrase "tech leader stocks" is not a precise trigger and relies on subjective interpretation of which symbols qualify, which can cause unintended or inconsistent activation behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The workflow explicitly produces actionable trading recommendations such as direction, entry conditions, stop loss, and target, but it does not include any user-facing warning that outputs are informational and may result in financial loss. In a quantitative trading skill, this increases the chance that users treat generated output as personalized financial advice and act on it without understanding uncertainty, model limitations, or risk.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.