Back to skill

Security audit

A股智投大师

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a legitimate A-share research skill, but it needs review because it can auto-install dependencies and change personal watchlist or monitoring data through external APIs without clear confirmation controls.

Before installing, confirm you trust the publisher and every auto-installed dependency, prefer pinned reviewed versions, and use a dedicated East Money API key with limited exposure. Treat self-select and monitoring requests as account-linked changes: require explicit confirmation before adding, deleting, or creating alerts, and avoid sending sensitive investment strategy text unless you are comfortable with it being processed by the remote service.

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
SKILL.md:8
Finding
Unpinned Third-Party Skills Are Installed Automatically## Vulnerability Details **File Location**: `SKILL.md`, lines 8–13 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Complete Code Snippet ```yaml metadata: { "openclaw": { "requires": { "skills": ["mx-data", "mx-search", "mx-select-stock", "mx-selfselect", "stock-monitor-skill"], "action": "auto-install" }, ``` The corresponding installation documentation in `README.md`, lines 137–140, also omits versions and integrity constraints: ```bash clawhub install mx-data mx-search mx-select-stock mx-selfselect stock-monitor-skill ``` ### Technical Analysis The Skill declares five third-party dependencies and instructs OpenClaw to install them automatically. None of these dependencies is pinned to a reviewed immutable version or content digest. Consequently, the code and instructions loaded at installation time can differ from those reviewed during this audit. The effective behavior depends on mutable registry entries and the ongoing security of each dependency publisher and distribution channel. This is a supply-chain weakness rather than evidence that the named dependencies are currently malicious. Exploitation requires one of those dependency sources, publisher accounts, or package-resolution mechanisms to become compromised or attacker-controlled. ### Attack Path 1. An attacker compromises a named dependency's publisher account, registry entry, or distribution channel. 2. The attacker publishes a malicious release under the legitimate dependency name. 3. A user installs or loads this Skill. 4. The `auto-install` action resolves and installs the mutable current release without explicit user approval or integrity verification. 5. OpenClaw loads or invokes the malicious dependency. 6. The dependency executes attacker-controlled instructions or code within the permissions available to the Agent runtime. ### Impact Assessment Successful exploitation could provide t ...[truncated 620 chars]
Remediation
## Remediation Suggestions 1. Pin every dependency to a reviewed, immutable version rather than resolving an unconstrained latest release. 2. Where supported, lock dependencies by cryptographic content digest and verify signatures or checksums before activation. 3. Replace automatic installation with an explicit user-confirmed installation step. 4. Maintain a lock file or equivalent manifest recording exact versions, digests, publishers, and trusted sources. 5. Audit each dependency and its transitive dependencies before approving upgrades. 6. Restrict installed dependencies through least-privilege permissions, including network destinations, environment-variable access, filesystem access, and available Agent tools. 7. Configure update monitoring and require security review whenever a pinned dependency changes. 8. Document the reviewed dependency versions in both `SKILL.md` and `README.md` so the manual and automatic installation paths use identical constraints.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Missing User Warnings

Medium
Confidence
85% confidence
Finding
The API key setup instructions tell users to copy a key into environment-variable configuration but do not warn against exposing it in prompts, logs, screenshots, shared shell history, or repository files. Because this skill depends on financial data services, leaked credentials could enable unauthorized API use, quota exhaustion, or access to account-linked market data features.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The README advertises very broad natural-language trigger phrases such as “分析 [股票]”, “监控 [股票]”, and “最近有什么新闻”, which can overlap with ordinary conversation and cause accidental skill invocation. In an agent environment with tool execution and market-facing actions, ambiguous triggers increase the chance of unintended data access, watchlist changes, or monitoring-rule creation based on casual user text.

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill declares automatic installation of dependent skills and clearly intends to access network-backed APIs and API-key-based integrations, yet it does not declare an explicit permission or allowed-tools scope. That creates an authorization ambiguity where the runtime may grant broader-than-expected network or environment access, reducing user visibility into what the skill can do.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The keyword list contains very broad finance terms like 股票, 投资, 行情, 理财, and 副业, which can cause the skill to activate on generic financial conversations unrelated to this skill's purpose. Unintended invocation is risky here because the skill can trigger downstream actions involving personal watchlists, monitoring rules, or API-backed data access.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The skill describes self-selected stocks and monitoring features but does not clearly warn that these requests may read or modify personal stock-tracking data. Because the skill integrates watchlist and alert-management functions, users may not realize that ordinary-looking requests could expose portfolio preferences or create persistent monitoring rules.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The quick commands are short, underspecified trigger phrases such as 查[股票], 我的自选, and 监控[股票], with no confirmation or boundary conditions. In this context, those commands can lead not only to read operations but also to state-changing actions like creating monitoring rules or accessing a user's personal stock-tracking data based on casual or ambiguous phrasing.

External Transmission

Medium
Category
Data Exfiltration
Content
data = {"toolQuery": query}

        try:
            response = requests.post(url, json=data, headers=self.headers, timeout=30)
            return response.json()
        except Exception as e:
            return {"error": str(e)}
Confidence
80% 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
data = {"toolQuery": query}

        try:
            response = requests.post(url, json=data, headers=self.headers, timeout=30)
            return response.json()
        except Exception as e:
            return {"error": str(e)}
Confidence
80% 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
data = {"toolQuery": query}

        try:
            response = requests.post(url, json=data, headers=self.headers, timeout=30)
            return response.json()
        except Exception as e:
            return {"error": str(e)}
Confidence
80% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill sends user-supplied stock queries and the API key to a third-party remote service without any explicit disclosure, consent flow, or minimization controls. While outbound API use is expected for a market-data skill, this still creates a privacy and transparency risk because user inputs may contain sensitive watchlist, strategy, or proprietary research information.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The self-select management function performs remote state-changing operations based on a free-form query string, but there is no confirmation, authorization check, or user-warning mechanism in the code. In an agent context, this increases the risk of unintended portfolio/watchlist modifications caused by prompt injection, ambiguous language, or accidental invocation.

External Transmission

Medium
Category
Data Exfiltration
Content
data = {"query": query}

        try:
            response = requests.post(url, json=data, headers=self.headers, timeout=30)
            return response.json()
        except Exception as e:
            return {"error": str(e)}
Confidence
86% confidence
Finding
This external POST is tied to a state-changing self-select management endpoint and carries a free-form action query, making it more dangerous than a read-only API call. In an agent-integrated setting, unsanitized or ambiguous action text can trigger unintended remote modifications to the user's watchlist or preferences.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
The skill data is entirely presented in Chinese, including indicator names, descriptions, and analysis text, with no indication that users can select another language or that the skill is intentionally limited to a Chinese-speaking or region-specific context. Under the policy, a locale/language constraint should be opt-in or clearly documented and justified.

Static analysis

No suspicious patterns detected.