Back to skill

Security audit

超级股票操盘 Skill

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed A-share trading assistant, but it needs Review because installation imports unpinned third-party agent skills, API key handling is weak, and the workflow implies order execution despite saying it has no direct order channel.

Install only in an isolated environment after reviewing and pinning every third-party repository and package. Do not run the curl-to-bash recommendation, do not store real API keys in config.json, and treat all order-routing or execution language as advisory drafts that require a separate manual broker confirmation.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/install.sh:181
Finding

Remote Script Execution Recommended Through a curl-to-shell Pipeline

Content
View full analysis
/dev/null; then log_ok "npx: $(npx --version 2>&1)" else log_warn "未找到 npx,Wind AIFin Market Skill 将跳过。安装: curl -fsSL https://fnm.vercel.app/install | bash" fi ``` ### Technical Analysis The installer recommends downloading a mutable remote script and piping it directly into `bash`. Although this command is printed as an installation instruction rather than automatically executed by `install.sh`, following the documented instruction executes whatever content the remote endpoint serves at that moment. There is no version pinning, cryptographic checksum, signature verification, local review step, or immutable artifact reference. The effective payload can therefore change after this Skill has been audited. HTTPS protects transport under normal conditions but does not protect against compromise of the upstream site, its hosting account, its release process, or a trusted certificate authority. This behavior is not necessary for the Skill's stock-analysis and report-generation functions. Node.js installation should remain a separately controlled prerequisite. ### Attack Path 1. An attacker compromises the remote installer endpoint, its hosting infrastructure, or its deployment credentials. 2. The attacker replaces the expected installer with a malicious shell payload. 3. A user runs `scripts/install.sh` on a system without `npx`. 4. The installer prints the `curl -fsSL ... | bash` command as the recommended remediation. 5. The user follows that instruction. 6. The malicious response is executed immediately by `bash` with the user's privileges. 7. The payload can access user-readable files, alter shell configuration, install persistence, or compromise the Agent environment. ### Impact Assessment Successful exploitation provides ...[truncated 518 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
scripts/install.sh:131
Finding

Default Installer Imports Numerous Unpinned Third-Party Skills and Dependencies

Content
View full analysis
Remediation
View remediation
/dev/null`; preserve logs so users can identify unexpected build behavior. 10. Separate the minimal local pipeline installation from optional ecosystem integrations. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/install.sh:393
Finding

API Credentials Are Collected Visibly and Persisted in Plaintext Project Configuration

Content
View full analysis
/dev/null; then python3 - "$CONFIG_FILE" "$cfg_wind" "$cfg_tushare" "$cfg_alpha" <<'PYEOF' 2>/dev/null && log_ok "API Key 已写入 config.json" || log_warn "config.json 写入失败(可手动编辑)" import json, sys cfg_path, wind, tushare, alpha = sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4] with open(cfg_path, "r", encoding="utf-8") as f: cfg = json.load(f) cfg.setdefault("api_keys", {}) cfg["api_keys"]["wind_api_key"] = wind cfg["api_keys"]["tushare_token"] = tushare cfg["api_keys"]["alphavantage_api_key"] = alpha with open(cfg_path, "w", encoding="utf-8") as f: json.dump(cfg, f, ensure_ascii=False, indent=2) PYEOF fi ...[truncated 2047 chars]
Remediation
View remediation
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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (54)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill describes itself as analysis-only and says it does not provide direct order placement, but the detected behavior includes cloning third-party repositories, installing packages via shell/npx, modifying environment variables, and reading/writing API-bearing config files. That mismatch is dangerous because users and hosting systems may grant trust based on the stated purpose while the skill performs privileged setup and integration actions outside that expectation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill describes itself as analysis-only and says it does not provide direct order placement, but the detected behavior includes cloning third-party repositories, installing packages via shell/npx, modifying environment variables, and reading/writing API-bearing config files. That mismatch is dangerous because users and hosting systems may grant trust based on the stated purpose while the skill performs privileged setup and integration actions outside that expectation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill states there is no direct order-placement channel, but the document explicitly lists a '交易执行' category and names an 'order-routing-skill' in the timed workflow. In a financial skill, that contradiction is especially risky because users may treat it as advisory-only while the package appears capable of facilitating or automating trade execution paths.

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 · assets/config_template.env (reported line 3)May include surrounding context.

text
# =============================================================================
# Super Stock Trading Skill - 环境变量配置模板
# 复制本文件为 .env 并填入真实凭证后使用
# 注意:切勿将含有真实密钥的 .env 文件提交到版本控制系统
# =============================================================================

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 · assets/config_template.env (reported line 4)May include surrounding context.

text
# =============================================================================
# Super Stock Trading Skill - 环境变量配置模板
# 复制本文件为 .env 并填入真实凭证后使用
# 注意:切勿将含有真实密钥的 .env 文件提交到版本控制系统
# =============================================================================

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow explicitly includes order-routing-skill in盘中“执行交易动作” and produces a '尾盘交易动作清单', which conflicts with the declared boundary that the skill does not provide a direct order placement channel. This mismatch is dangerous because downstream orchestrators or integrators may treat the document as authorization to automate trades, causing unauthorized or insufficiently confirmed asset-moving actions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The end-of-day section describes '收盘集合竞价委托' and records '收盘委托记录', directly implying placement of exchange entrust orders despite the manifest claiming no direct execution channel. In a trading skill, this context makes the issue more dangerous because users and host agents are primed to operationalize these steps, increasing the chance of real-money trades being routed without a strong interactive consent boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest explicitly says the package does not provide direct order channels, yet the registry includes skills such as order routing, batch order execution, and execution-oriented trading functions. This creates a dangerous capability/description mismatch: an orchestrator or downstream system may enable autonomous trading behaviors that users were told would not exist, increasing the risk of unauthorized or insufficiently supervised financial actions.

Content

No source excerpt is available for this finding.

External Script Fetching

High
Category
Supply Chain
Confidence
99% confidence
Finding

The script recommends curl -fsSL https://fnm.vercel.app/install | bash, a classic remote-script execution pattern. Piping network content directly into a shell bypasses integrity review and enables full code execution if the host, transport, or upstream content is compromised.

Content

Scanner excerpt · scripts/install.sh (reported line 185)May include surrounding context.

sh
if command -v npx &>/dev/null; then
    log_ok "npx: $(npx --version 2>&1)"
  else
    log_warn "未找到 npx,Wind AIFin Market Skill 将跳过。安装: curl -fsSL https://fnm.vercel.app/install | bash"
  fi

  # clawhub(可选)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script prints persistence commands containing the live API key values, exposing secrets on screen, in terminal scrollback, logging systems, screenshots, and shell history if copied. This materially increases the likelihood of credential leakage beyond the local config file itself.

Content

No source excerpt is available for this finding.

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 · scripts/install.sh (reported line 446)May include surrounding context.

sh
ey"] = alpha
with open(cfg_path, "w", encoding="utf-8") as f:
    json.dump(cfg, f, ensure_ascii=False, indent=2)
PYEOF
  fi

  # 同时导出到当前 shell 环境(便于后续脚本读取)
  export WIND_API_KEY="$cfg_wind"
  export TUSHARE_TOKEN="$cfg_tushare"
  export ALPHAVANTAGE_API_KEY="$cfg_alpha"

  # 提示如何持久化
  cat << EOF

  持久化 API Key(可选,写入 shell 配置):
    echo 'export WIND_API_KEY="$cfg_wind"'           >> ~/.bashrc
    echo 'export TUSHARE_TOKEN="$cfg_tushare"'       >> ~/.bashrc
    echo 'export ALPHAVANTAGE_API_KEY="$cfg_alpha"'  >> ~/.bashrc
EOF
  echo ""
}

#=============================================================================
# 安装验证
#=============================================================================
verify_installation() {
  log_step "=== [7/7] 安装验证 ==="
  local found=0

  if [[ "$SKIP_GITHUB" = false ]]; then
    for entry in "${GITHUB_SKILLS[@]}"; do
      IFS='|' read -r name _ _ _ <<< "$entry"

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger list is extremely broad and includes generic investment-related phrases that can cause the skill to activate in contexts where the user did not intend full trading workflow orchestration. In a finance skill, unintended invocation is more dangerous because it can bias conversations toward trading decisions, expose configured portfolio context, or cause unnecessary data access and analysis in response to casual mentions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The manifest does not declare any tool restrictions, yet the skill is documented and statically inferred to rely on powerful capabilities including environment access, file I/O, network, and shell. In a skill that orchestrates external data sources, installs dependencies, and writes logs/configuration, missing scope declarations creates an overly broad trust boundary and raises the risk of unintended command execution, data exfiltration, or local file modification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest sets language: zh-CN, which indicates a fixed language/locale preference. The file does not offer the user a language choice or state that Chinese output is optional, so this can violate language-choice policy if applied to users who did not opt in.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger description activates the skill when the user mentions a long list of common investing terms such as '估值', '护城河', '资金面', and '公告解读', or whenever they 'need to systematically' do A-share research/trading/risk-control/review work. This scope is very broad and lacks exclusion conditions or negative examples, so ordinary discussion about stocks could unintentionally match and invoke the skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The documentation says every trading action must pass seven risk gates before execution, yet the daily schedule includes order routing as a fixed time-based step without showing that gating is mandatory at that point. In a trading context, this inconsistency can lead to unsafe automation assumptions, where execution-related logic runs by default even during abnormal market conditions or before event review completes.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This manifest-style environment template includes user-facing instructions entirely in Chinese, such as setup and credential-handling guidance. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is clearly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This JSON template uses Chinese-language defaults and a CNY locale-specific base currency throughout the natural-language fields, which effectively forces a specific language/locale in the skill artifact. The file does not offer any user choice, opt-in, or documented justification that this template is only for a China-specific workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest sets the skill language to "zh-CN" as a fixed configuration value. Under the policy, forcing a specific language or locale without offering user choice or documenting a justified regional constraint is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest scopes the skill to A-share and related trading research, decision support, risk control, and review workflows. This configuration adds auto-referenced reports about global wealth, real estate, luxury investment, and ultra-high-net-worth topics, which are materially outside the described stock-trading assistant purpose and could influence outputs with unrelated content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The workflow describes executing trades and writing logs/records as if they are routine automated steps, but it does not place an immediate, explicit warning at those action points that they can affect assets and persistent records. Even though the broader metadata says users must manually confirm, the per-step operational text is strong enough to encourage unsafe automation or hide the significance of state-changing actions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Broad trigger phrases can cause the skill to activate in contexts the user did not intend, especially because this package covers high-impact financial decision support. Misrouting a conversation into trading, risk, or wealth-planning subskills could generate irrelevant or overly forceful financial guidance, increasing the chance of unsafe recommendations or unintended data sharing with internal subcomponents.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest says the skill primarily serves A-share research and decision support, with related HK Stock Connect, ETFs, convertible bonds, and options. This registry includes experts for broader '财富规划', banking wealth management, and insurance planning, which are not presented as part of the stock-trading-focused scope and go beyond the stated investment-research boundary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest describes a closed loop around A-share investment research, trading support, risk control, and review, but this entry introduces an '保险规划顾问' focused on insurance, protection, and asset isolation. That is a materially different advisory domain from stock operation support and is not clearly justified by the manifest text.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document title and the entire skill reference are written in Chinese, and no alternative language option or user opt-in is provided. Under the policy, forcing a specific language without user choice is a natural-language locale violation unless the constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
assets/config_template.env:10

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/install.sh:362