Back to skill

Security audit

bitopro-market-intel

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed crypto market-data/news helper that reads public sources and does not place trades or access accounts.

Before installing, be aware that the skill queries public crypto/news APIs and may send English RSS article titles and descriptions to Google Translate. Do not use it to place trades or manage an account; use it only for public market/news information and verify any investment decision independently.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (46)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 517)May include surrounding context.

md
| `SKILL.md` | Core skill definition (this file) |

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

md
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

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

md
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

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 · evals/evals.json (reported line 129)May include surrounding context.

json
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

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 · evals/evals.json (reported line 139)May include surrounding context.

json
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

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 · references/coin-mapping.md (reported line 60)May include surrounding context.

md
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

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 · references/endpoints.md (reported line 265)May include surrounding context.

md
| [CoinGecko](https://www.coingecko.com/) (Public, no key) | ~30 req/min, shared per IP | Global market, rankings, trending, categories, company holdings |
| [CoinGecko](https://www.coingecko.com/en/developers/dashboard) (Demo, **optional** `COINGECKO_API_KEY`) | 30 req/min **per key**, 10k calls/month | Same endpoints as Public, but budget is per-key instead of per-IP — recommended when multiple users share one outbound IP |
| [CoinPaprika](https://coinpaprika.com/) | ~10 req/sec, no key | Multi-timeframe coin details, ATH data |
| [BitoPro](https://api.bitopro.com/v3) | 600 req/min, no key | Dynamic trading pair list |
| 6 RSS feeds (BlockTempo / ABMedia / BlockCast / CoinDesk / CoinTelegraph / Decrypt) | unrestricted, no key | Tool 8 news aggregation (3 zh-tw + 3 en) |
| [Google Translate](https://translate.googleapis.com/) (unofficial public, no key) | ~100 req/h per IP | Tool 8 pre-translation of English titles + descriptions to 繁中 |

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The prescribed display format is entirely in Traditional Chinese, and similar mandatory Chinese-only presentation appears throughout the skill. Because the skill does not offer a user language choice or justify a required locale constraint, it conflicts with the stated policy for language/locale flexibility.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill metadata and scope statement say pre-trade spec lookup should be handled by bitopro-spot, but Tool 7 exposes detailed trading-pair constraints such as minimums, precision, and order limits. That creates a scope-boundary violation that can route users into using a market-intel skill for trading preparation, weakening separation between informational and trading workflows.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file explicitly says pre-trade spec lookup that is part of placing an order should use bitopro-spot, yet Tool 7's purpose includes surfacing per-pair trading specs before placing orders. Contradictory routing logic can cause the agent to ignore intended guardrails and use a less controlled skill in contexts closer to transaction execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description requires auto-translation of English news into 繁中 as part of normal behavior, rather than offering language selection. This is a natural-language locale policy issue because the user is not given a choice to receive original English or another locale by default.

Content

No source excerpt is available for this finding.

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

md
"name": "Get latest Fear & Greed Index",
    "prompt": "目前加密貨幣市場的恐懼貪婪指數是多少?",
    "expected_tools": ["get_fear_greed_index"],
    "expected_endpoints": ["GET https://api.alternative.me/fng/"],
    "expected_output_contains": ["恐懼貪婪指數", "數據來源", "Alternative.me", "不構成投資建議"],
    "expected_output_not_contains": ["CoinGecko", "CoinPaprika"],
    "notes": "Footer MUST contain Alternative.me (the only source used). MUST NOT falsely list CoinGecko/CoinPaprika."

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 · evals/evals.json (reported line 7)May include surrounding context.

json
"name": "Get latest Fear & Greed Index",
    "prompt": "目前加密貨幣市場的恐懼貪婪指數是多少?",
    "expected_tools": ["get_fear_greed_index"],
    "expected_endpoints": ["GET https://api.alternative.me/fng/"],
    "expected_output_contains": ["恐懼貪婪指數", "數據來源", "Alternative.me", "不構成投資建議"],
    "expected_output_not_contains": ["CoinGecko", "CoinPaprika"],
    "notes": "Footer MUST contain Alternative.me (the only source used). MUST NOT falsely list CoinGecko/CoinPaprika."

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 · evals/evals.json (reported line 17)May include surrounding context.

json
"name": "Get latest Fear & Greed Index",
    "prompt": "目前加密貨幣市場的恐懼貪婪指數是多少?",
    "expected_tools": ["get_fear_greed_index"],
    "expected_endpoints": ["GET https://api.alternative.me/fng/"],
    "expected_output_contains": ["恐懼貪婪指數", "數據來源", "Alternative.me", "不構成投資建議"],
    "expected_output_not_contains": ["CoinGecko", "CoinPaprika"],
    "notes": "Footer MUST contain Alternative.me (the only source used). MUST NOT falsely list CoinGecko/CoinPaprika."

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 · references/endpoints.md (reported line 10)May include surrounding context.

md
"name": "Get latest Fear & Greed Index",
    "prompt": "目前加密貨幣市場的恐懼貪婪指數是多少?",
    "expected_tools": ["get_fear_greed_index"],
    "expected_endpoints": ["GET https://api.alternative.me/fng/"],
    "expected_output_contains": ["恐懼貪婪指數", "數據來源", "Alternative.me", "不構成投資建議"],
    "expected_output_not_contains": ["CoinGecko", "CoinPaprika"],
    "notes": "Footer MUST contain Alternative.me (the only source used). MUST NOT falsely list CoinGecko/CoinPaprika."

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 · references/endpoints.md (reported line 32)May include surrounding context.

md
"name": "Get latest Fear & Greed Index",
    "prompt": "目前加密貨幣市場的恐懼貪婪指數是多少?",
    "expected_tools": ["get_fear_greed_index"],
    "expected_endpoints": ["GET https://api.alternative.me/fng/"],
    "expected_output_contains": ["恐懼貪婪指數", "數據來源", "Alternative.me", "不構成投資建議"],
    "expected_output_not_contains": ["CoinGecko", "CoinPaprika"],
    "notes": "Footer MUST contain Alternative.me (the only source used). MUST NOT falsely list CoinGecko/CoinPaprika."

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

md
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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

md
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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

md
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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

md
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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 · evals/evals.json (reported line 26)May include surrounding context.

json
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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 · evals/evals.json (reported line 36)May include surrounding context.

json
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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 · evals/evals.json (reported line 46)May include surrounding context.

json
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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 · evals/evals.json (reported line 64)May include surrounding context.

json
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."

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 · evals/evals.json (reported line 74)May include surrounding context.

json
"name": "Get global market overview (BitoPro-relevant fields only)",
    "prompt": "加密貨幣全球市場概況如何?",
    "expected_tools": ["get_global_market"],
    "expected_endpoints": ["GET https://api.coingecko.com/api/v3/global"],
    "expected_output_contains": ["總市值", "BTC 市佔率", "交易量", "數據來源", "CoinGecko", "不構成投資建議"],
    "expected_output_not_contains": ["活躍幣種", "17,", "16,", "active_cryptocurrencies", "ICO", "markets: 1", "Alternative.me", "CoinPaprika"],
    "notes": "MUST include CoinGecko attribution (the only source used). MUST NOT display active_cryptocurrencies/markets/ICO (global universe stats unrelated to BitoPro) or falsely list other data sources."