Back to skill

Security audit

Trader Simulator

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent stock-analysis simulator, but it needs review because it auto-installs external finance/search skills and may automatically use broad web or social tools for financial analysis.

Review the dependency list before installing, especially the auto-installed finance/search/monitoring skills. Treat the MX/Eastmoney API key as a secret, avoid pasting it into chat or source files, and use this skill only where automatic web/social lookups and stock-monitor changes are acceptable. It is not safe to treat the generated output as investment advice.

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:6
Finding
Automatic Installation of Unpinned Third-Party Skills<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:6-11` **Corroborating Location**: `README.md:130-135` **Vulnerability Type**: Unpinned automatic third-party dependency installation **Risk Level**: Medium ### Vulnerable Code ```yaml "openclaw": { "requires": { "skills": ["mx-search", "mx-data", "mx-select-stock", "stock-monitor-skill"], "action": "auto-install" }, ``` The installation documentation also uses unversioned dependency identifiers: ```bash clawhub install mx-data mx-search mx-select-stock stock-monitor-skill ``` ### Technical Analysis The Skill declares four external Skills and instructs the OpenClaw environment to install them automatically. None of these dependencies is pinned to a reviewed version or protected by an integrity hash. The configuration also provides no publisher verification, trusted registry restriction, or explicit approval step. Consequently, the effective behavior of this package is not limited to the source code included in the audited project. It also depends on whichever versions of these external Skills the package registry resolves at installation time. A dependency could change after this audit, or its distribution account could be compromised, without requiring any modification to the reviewed project. This creates a supply-chain risk. Because the dependencies provide search, financial-data, stock-selection, and monitoring functionality, they may receive market queries and operate in an environment containing a configured financial-data API key. The exact privileges available to a dependency depend on the OpenClaw runtime, but an affected dependency could potentially misuse any network, tool, environment-variable, or Agent capabilities granted to it. ### Attack Path 1. An attacker compromises the registry account or distribution channel for one of the declared Skills, or publishes an unsafe replacement under a dependency identifier accepted by the resolver. 2. ...[truncated 1532 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove automatic dependency installation and require explicit user approval before installing each external Skill. 2. Pin every dependency to an exact, security-reviewed version rather than resolving the latest available release. 3. Require cryptographic integrity hashes or signed package metadata and reject dependencies that fail verification. 4. Restrict dependency resolution to a trusted registry and verify the publisher identity for every package. 5. Document the permissions, network access, environment variables, and tools required by each dependency. 6. Grant dependencies only the minimum capabilities necessary for their declared functions. 7. Do not expose the financial-data API key globally. Provide it only to the specific component that requires it, preferably through scoped and revocable credentials. 8. Review dependency updates before deployment and use an allowlist of approved package versions and hashes. 9. Record installed versions in a lock file or equivalent manifest so installations are reproducible. 10. Add runtime monitoring for unexpected network destinations, credential access, filesystem access, and tool invocations by third-party Skills. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (17)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README advertises browser, search, and third-party content retrieval capabilities but does not warn users that prompts, stock interests, or other context may be sent to external services. In a financial-analysis skill, such undisclosed network access can expose sensitive trading interests, behavioral patterns, or account-linked context to outside providers.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The phrase "启动 [大师名]" is a common expression pattern and may collide with ordinary requests, especially in chat environments where users discuss starting tasks or personas informally. If mis-triggered, it can silently switch the agent persona and influence downstream financial guidance in ways the user did not intend.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger phrase "退出" is extremely generic and likely to appear in ordinary conversation, which can cause unintended deactivation of the skill or mode switching without clear user intent. In a multi-agent financial assistant, this raises the risk of accidental state changes that alter analysis behavior or suppress expected safeguards during a session.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The command "讨论 [股票]" is broad conversational language rather than a distinct control phrase, so normal discussion about a stock could unintentionally activate the multi-agent workflow. That can trigger unexpected tool use, external lookups, or role changes in a context where the user only intended casual conversation.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README instructs users to obtain and configure an API key but provides no warning that the credential is sensitive or guidance on secure storage. This increases the chance users will paste secrets into chat, commit them to repositories, or expose them in logs, enabling unauthorized access to associated services.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The keyword list contains broad, common terms that can cause accidental or overly eager invocation of the skill in loosely related conversations. Unintended activation is risky here because the skill can trigger external data/search workflows and steer the assistant into finance-specific behavior without clear user intent.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The documented trigger phrases are broad natural-language expressions without clear activation boundaries, which increases the chance that ordinary discussion about a stock unintentionally enters multi-agent mode. In a skill that may call external tools and generate trading recommendations, ambiguous activation increases the likelihood of unrequested actions and misleading context switches.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The skill instructs the agent to automatically inspect whatever tools are available and use arbitrary browser, social-media, search, and data capabilities beyond the narrowly declared stock-simulator dependencies. This creates scope creep and can cause an over-privileged agent to access unrelated external services or sensitive browsing contexts based only on natural-language prompts.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The JSON content uses Chinese-only field values throughout, indicating a fixed language/locale with no visible opt-in, alternative locale, or documented regional justification in this file. The policy requires flagging language or locale constraints when they are imposed without user choice or clear justification.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
This JSON contains natural-language fields, labels, and values presented exclusively in Chinese across the dataset, with no documented user choice or opt-in for language/locale. Under the policy rule, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is justified.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
This code file contains user-facing natural-language descriptions and CLI output exclusively in Chinese, including the module description and later command help/messages. The policy requires flagging language or locale constraints when the skill forces a specific language without user opt-in, and no alternative language option or justification is provided here.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
The skill instructions, examples, commands, and user-facing outputs are written to operate in Chinese, and no section offers an opt-in or alternative language choice. This can be a language-policy issue when skills should not assume a single language unless clearly optional or justified.

Intent-Code Divergence

Low
Confidence
88% confidence
Finding
The example for 股神老徐 states '我从不推荐具体股票', presenting a no-recommendation behavioral intent for that persona. Elsewhere, the documented commands and features include '推荐股票' and say the current master can provide recommendations, creating an internal contradiction about what the persona/skill is intended to do.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
The module docstring and user-facing usage text are entirely in Chinese, and the command interface later relies on Chinese labels such as “模拟” and “列出”. This creates a language-specific experience without any opt-in or documented justification, which matches the locale policy concern for natural-language content.

Natural-Language Policy Violations

Low
Confidence
85% confidence
Finding
The script prints multiple Chinese-only status and help messages to users, including labels for built-in bloggers and analysis actions. Because there is no mechanism to choose language or confirm a China-specific locale constraint, the skill embeds a fixed language policy in natural-language strings.

Description-Behavior Mismatch

Low
Confidence
81% confidence
Finding
The manifest describes a stock trading simulator for learning and multi-agent discussion, which primarily implies generating simulated analysis and recommendations. This file also implements persistent storage of custom master profiles in data/masters.json, which is additional configuration-management behavior not reflected in the manifest description.

Static analysis

No suspicious patterns detected.