Back to skill

Security audit

crypto-research

Security checks for vulnerabilities and agentic risk

Overview

This crypto research skill mostly matches its stated purpose, but it publishes a plaintext ARKM API key and leaves proactive monitoring/tool use loosely scoped.

Review before installing. Do not use the published ARKM key; treat it as compromised and require your own credential via a protected secret mechanism. Only allow the skill to fetch market data from expected providers, and enable monitoring or proactive alerts only when you explicitly want that behavior.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:25
Finding
Hard-Coded API Credential in Skill Documentation## Vulnerability Details **File Location**: `SKILL.md:25` **Vulnerability Type**: Plaintext hard-coded API credential **Risk Level**: High ### Vulnerable Code ```markdown | 机构资金 | ARKM API | API key: e77c4a5d-f752-4a49-a49e-503970893e37 | ``` ### Technical Analysis The skill package embeds an ARKM API key directly in its documentation. Anyone who can download, inspect, log, or otherwise access the package can recover the credential without authentication. Embedding a credential in skill content prevents effective access control and secret lifecycle management. The key may also be exposed through source repositories, package archives, backups, model context, generated logs, or copied documentation. The project contains no code that exfiltrates this credential, and the audit could not independently establish whether the key remains active or what permissions it has. Nevertheless, publishing an API credential is an insecure coding and configuration practice. ### Attack Path 1. An attacker obtains or inspects the skill package. 2. The attacker opens `SKILL.md` and copies the plaintext ARKM API key from line 25. 3. If the credential is active, the attacker submits requests to the corresponding ARKM API using the exposed key. 4. The attacker consumes any permissions, quota, or billable capacity assigned to that credential until it is revoked, expires, or is otherwise restricted. ### Impact Assessment If active, the exposed credential may permit unauthorized access to the API capabilities granted to it. Potential consequences include: - Unauthorized API requests. - Consumption or exhaustion of API quotas. - Financial costs if usage is billable. - Access to data available under the credential's assigned permissions. - Service disruption caused by rate-limit exhaustion or provider revocation. - Loss of accountability because legitimate and unauthorized requests use the same identity. The impact is limited to the privileges assigned to the exposed API key. Th ...[truncated 157 chars]
Remediation
## Remediation Suggestions 1. Revoke the exposed API key immediately and issue a replacement only if the integration still requires it. 2. Remove the credential from `SKILL.md` and from all package versions, repository history, release archives, logs, and cached artifacts where feasible. 3. Require users or deployment operators to supply the credential through an approved secret manager or protected environment variable. 4. Apply least privilege to the replacement key, restricting accessible endpoints, operations, quotas, source addresses, and expiration time where supported. 5. Ensure scripts and agent instructions never print, interpolate into reports, or persist the replacement credential. 6. Add secret scanning to development and release pipelines to block future publication of API keys. 7. Document only a placeholder, such as `ARKM_API_KEY`, rather than a real credential.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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 (17)

Ssd 3

High
Confidence
99% confidence
Finding
A plaintext API key is directly embedded in the skill content, making credential disclosure trivial during ordinary inspection or model use. In this context, the skill is specifically designed to fetch external market intelligence, so the secret is operationally valuable and could be abused for unauthorized access, quota exhaustion, attribution risk, or pivoting into connected systems if the key has broader permissions.

External Script Fetching

High
Category
Supply Chain
Content
fi

echo "=== $SYMBOL 7天数据 ==="
curl -s "https://api.binance.com/api/v3/klines?symbol=$SYMBOL&interval=1d&limit=8" | python3 -c "
import sys, json
data = json.load(sys.stdin)
prices = [float(k[4]) for k in data]
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
# 获取BTC/ETH价格数据

echo "=== BTC价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
echo ""
echo "=== ETH价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=ETHUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
echo ""
echo "=== 资金费率 ==="
echo "BTC:"
curl -s "https://fapi.binance.com/fapi/v1/premiumIndex?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"资金费率: {float(d['lastFundingRate'])*100:.4f}%\")
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
print(f\"资金费率: {float(d['lastFundingRate'])*100:.4f}%\")
"
echo "ETH:"
curl -s "https://fapi.binance.com/fapi/v1/premiumIndex?symbol=ETHUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"资金费率: {float(d['lastFundingRate'])*100:.4f}%\")
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Lp3

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding
The skill documents shell-based data retrieval via curl but does not declare any tool scope or allowed-tools restrictions. This creates an unnecessary capability gap where an agent may infer permission to use shell broadly, increasing the chance of unintended command execution or misuse beyond the stated market-data workflow.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The manifest description advertises broad usage for reports, trend analysis, monitoring, and trade planning without defining activation limits. This can cause the agent to invoke the skill too aggressively in borderline contexts, especially because the skill also references external APIs and proactive alerting.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The entire skill is written to operate in Chinese and presents no option for the user to choose another language or locale. Under the policy, forcing a specific language without explicit user opt-in is a natural-language policy violation.

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
The file contains a hard-coded ARKM API key in plaintext, which is exposed to anyone who can read or invoke the skill. Embedded credentials can be copied, abused for unauthorized API usage, and may also leak into logs, prompts, version control history, or downstream model outputs.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger conditions are broad enough that the skill may activate for loosely related requests such as general BTC/ETH analysis or monitoring, without clear boundaries or user confirmation. In a skill that encourages real-time data access and external lookups, overbroad activation raises the risk of unnecessary external requests, unintended tool use, or the agent applying domain-specific instructions when not appropriate.

External Transmission

Medium
Category
Data Exfiltration
Content
# 获取BTC/ETH价格数据

echo "=== BTC价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# 获取BTC/ETH价格数据

echo "=== BTC价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# 获取BTC/ETH价格数据

echo "=== BTC价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# 获取BTC/ETH价格数据

echo "=== BTC价格 ==="
curl -s "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT" | python3 -c "
import sys, json
d = json.load(sys.stdin)
print(f\"价格: \${d['lastPrice']}\")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The description is written entirely in Chinese, which signals a language-specific skill experience without indicating that users can choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, language constraints should be optional or clearly justified.

Natural-Language Policy Violations

Low
Confidence
97% confidence
Finding
This shell script contains natural-language comments and user-facing output in Chinese only, such as the header comment and labels printed to the terminal. For a general-purpose skill, forcing a single language without opt-in or documented region-specific scope is a language/locale policy issue under SQP-3.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:25