Back to skill

Security audit

Xiaodi Financial Team

Security checks for vulnerabilities and agentic risk

Overview

This finance skill is not visibly malicious, but it requests command execution, broad file access, and memory use around sensitive portfolio data without enough limits.

Treat this as a review item before installing. Prefer a version that removes exec, limits file access to a dedicated report/output area, disables or scopes memory by default, and clearly asks before using or retaining portfolio, trading-history, or risk-profile details. The skill also retrieves live market data from third-party finance sources and produces investment-style suggestions, so users should verify outputs independently and avoid entering sensitive account data.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
architecture.json:106
Finding
Unnecessary Local Command-Execution Capability## Vulnerability Details **File Location**: `_meta.json:13`; `architecture.json:106` **Vulnerability Type**: Excessive command-execution permission **Risk Level**: High ### Vulnerable Code `_meta.json:13` ```json "tools": ["web_search", "web_fetch", "memory_search", "exec"] ``` `architecture.json:106` ```json "allowlist": ["web_search", "web_fetch", "read", "write", "exec"] ``` ### Technical Analysis The package grants the `exec` tool globally in its metadata and specifically to the business-opportunity analyst. The documented purpose of this agent is to retrieve public market information, perform technical analysis, and produce trading signals. These operations do not inherently require unrestricted local command execution. This violates the principle of least privilege. Because the analyst also consumes user input and untrusted external financial data, prompt injection or manipulated input could influence the arguments supplied to `exec`. The project does not define command restrictions, an executable allowlist, argument validation, shell isolation, or a constrained calculation interface. The metadata references `stock_analysis.py` and `scripts/stock_analysis.py`, but that script is absent from the audited package. Consequently, there is no bundled implementation that justifies or constrains the requested execution capability. ### Attack Path 1. An attacker supplies crafted content through a user request or a financial-data source consumed by the analyst. 2. The content attempts to convince the business-opportunity analyst that a local shell command is necessary to complete the analysis. 3. The analyst invokes the granted `exec` capability with attacker-influenced arguments. 4. The command executes with the privileges of the host agent process. 5. Depending on host sandboxing, the command could read or alter files, launch processes, or make additional network requests. No actual malicious command or con ...[truncated 580 chars]
Remediation
## Remediation Suggestions 1. Remove `exec` from `_meta.json` and the business-opportunity analyst allowlist in `architecture.json`. 2. Perform ordinary market-data retrieval exclusively through `web_search` and `web_fetch`. 3. If local financial calculations are required, include the exact audited implementation in the package. 4. Expose calculations through a fixed-schema tool rather than a general shell. 5. Enforce an executable allowlist, fixed arguments, strict input validation, timeouts, resource limits, and network isolation. 6. Never concatenate user input or fetched market content into shell commands. 7. Fail closed if the referenced calculation script is missing or its integrity check fails.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
architecture.json:19
Finding
Overly Broad Filesystem Permissions for Analysis Agents## Vulnerability Details **File Location**: `architecture.json:19-22, 38, 56, 74, 91, 106, 124` **Vulnerability Type**: Unnecessary local read and write access **Risk Level**: Medium ### Vulnerable Code `architecture.json:19-22` ```json "allowlist": [ "read", "write", "web_search", "web_fetch", "memory_search", "memory_get", "message" ] ``` Representative worker configuration from `architecture.json:38`: ```json "allowlist": ["web_search", "web_fetch", "read", "write"] ``` The same local read and write capabilities are granted to the industry researcher, investment banker, market-cap manager, wealth advisor, business-opportunity analyst, and corporate-sentiment analyst. ### Technical Analysis The documented workflows require public-data retrieval, financial analysis, inter-agent collaboration, and report generation. They do not establish a legitimate need for every worker to read arbitrary local files or modify the host filesystem. No path restrictions, dedicated report directory, file-type constraints, overwrite protections, or per-agent filesystem boundaries are defined. This expands the impact of compromised instructions or prompt injection from external market and news sources. A worker that only needs web access can potentially interact with unrelated host data. ### Attack Path 1. A worker retrieves attacker-controlled or manipulated content from a public web source, or receives crafted user input. 2. The content contains instructions directing the worker to inspect or modify a local path under the pretext of completing financial analysis. 3. The worker invokes `read` or `write` because those tools are present in its allowlist. 4. If the host tool layer does not enforce a separate sandbox, unrelated files become readable or modifiable. 5. Retrieved local content may be included in a report or passed to another agent, while writes may corrupt configuration or other accessible files. No direc ...[truncated 572 chars]
Remediation
## Remediation Suggestions 1. Remove `read` and `write` from workers that only consume public data and return analysis. 2. Pass task inputs and outputs through structured inter-agent messages rather than shared files. 3. If report persistence is required, grant write-only access to a dedicated output directory. 4. Restrict reads to explicitly packaged resources and deny absolute paths, traversal sequences, symbolic-link escapes, and access outside the project sandbox. 5. Prevent overwriting existing configuration, executable, credential, and system files. 6. Apply separate tool policies to each role instead of sharing a broad default permission set. 7. Treat web content as untrusted data and prohibit it from authorizing filesystem operations.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
agents/business-opportunity-analyst/config.json:9
Finding
Unscoped Memory Access for Sensitive Financial Profiles## Vulnerability Details **File Location**: `SKILL.md:11`; `architecture.json:20-21`; `agents/business-opportunity-analyst/config.json:9-12`; equivalent memory settings in all other agent configurations **Vulnerability Type**: Excessive persistent-state access and retention **Risk Level**: Medium ### Vulnerable Code `SKILL.md:11` ```yaml tools: ["web_search", "web_fetch", "memory_search"] ``` `architecture.json:20-21` ```json "read", "write", "web_search", "web_fetch", "memory_search", "memory_get", "message" ``` `agents/business-opportunity-analyst/config.json:9-12` ```json "capabilities": { "voice": true, "memory": true } ``` The `memory` capability is also enabled in the configurations of the corporate-sentiment analyst, industry researcher, investment advisor, investment banker, market-cap manager, and wealth advisor. ### Technical Analysis The Skill processes holdings, invested capital, risk tolerance, investment preferences, and historical trading behavior. These data elements can constitute a sensitive financial profile. Nevertheless, all seven agents enable memory, and the coordinator receives both `memory_search` and `memory_get`. The project does not define user consent, purpose limitation, per-user isolation, per-agent namespaces, retention periods, deletion procedures, field minimization, or restrictions preventing unrelated memories from being returned. Broad memory retrieval is not required for most worker tasks because the coordinator can pass only the information necessary for each analysis. This finding does not establish agent-memory poisoning: the audited prompts do not instruct agents to write attacker-controlled rules into long-term memory. The issue is excessive access and unspecified retention boundaries. ### Attack Path 1. A user submits portfolio holdings, capital amounts, trading history, or risk preferences. 2. Memory-enabled agents process that information durin ...[truncated 927 chars]
Remediation
## Remediation Suggestions 1. Disable memory by default for worker agents and pass only task-specific fields through structured messages. 2. Require explicit user consent before persisting holdings, capital amounts, preferences, or trading history. 3. Isolate memory by user, Skill, agent, and conversation purpose. 4. Define retention periods and provide deletion and export controls. 5. Minimize stored fields and avoid retaining raw portfolio or transaction records when derived risk attributes are sufficient. 6. Restrict `memory_search` and `memory_get` to narrowly scoped queries and filter results before delegation. 7. Prevent untrusted web content and user-supplied instructions from being stored as persistent behavioral rules. 8. Document whether `memory: true` implies persistence; if it does not, replace the ambiguous capability declaration with an explicit session-only state policy.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (34)

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The skill definition is entirely in Chinese and establishes a Chinese-first interaction style without stating any locale constraint or offering fallback behavior. This can cause unsafe or misleading operation when users interact in another language, especially in a financial-advice context where misunderstanding recommendations, risk disclosures, or stop-loss instructions could materially affect decisions.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The slash-command and natural-language invocation examples are entirely in Chinese, and the document does not state that the skill is region-specific or that users may choose another language. This can violate language/locale policy expectations when a skill implicitly forces one language without opt-in.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The README provides broad natural-language triggers such as analyzing an investment target or diagnosing a portfolio without clearly constraining when the skill should activate. In an agent environment, this can cause unintended invocation on loosely related financial conversations, leading to inappropriate collection or processing of sensitive portfolio information and execution in contexts the user did not explicitly intend.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
Natural-language content throughout the file, including the description, examples, workflow, and disclaimer, is exclusively in Chinese. Because no user opt-in, alternative language option, or documented region/language constraint is provided, the skill appears to force a specific language by default.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The skill exposes very broad example prompts such as stock analysis, portfolio diagnosis, industry research, and asset allocation without defining when the skill should or should not activate. In an agentic environment, this can cause over-invocation on loosely related finance terms, leading to inappropriate financial-analysis behavior, unnecessary tool usage, or handling of sensitive portfolio data when the user did not explicitly request this skill.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The manifest requests the 'exec' capability even though the declared purpose is financial analysis, which can ordinarily be fulfilled with search, fetch, and memory tools rather than arbitrary code execution. Granting shell or code-execution access to a finance-focused skill materially expands the attack surface: a compromised or adversarial prompt flow could run local commands, access sensitive files, or stage further abuse unrelated to investment analysis.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The description is broad and action-oriented, stating the skill can quickly provide next-step operational advice based on market changes and customer behavior. In a financial assistant context, this can cause over-invocation in ambiguous situations and lead users to receive trading guidance without clear scope boundaries, increasing the risk of unsuitable or unintended financial recommendations.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The entire system prompt is written as a Chinese-only instruction set and does not indicate that users may choose another language. Under the language/locale policy, forcing a specific language without opt-in is a natural-language policy concern unless the locale restriction is explicitly justified.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The manifest describes a broader financial analyst team focused on stock analysis, fund recommendation, portfolio review, and investment decision support. This prompt instead defines a 'market opportunity analyst' centered on short-term market monitoring, technical signals, capital-flow tracking, and concrete trading advice such as buy/sell points and position adjustments, which is materially narrower and different in intent.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The prompt instructs the agent to analyze customers' historical trading records and detect behavioral patterns without any privacy, consent, minimization, or handling restrictions. In a financial context, this can lead to over-collection, inappropriate inference from sensitive financial behavior, or processing of regulated personal data without adequate safeguards.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The manifest describes a financial analyst team centered on securities analysis and investment support. This file instead specifies an enterprise public-opinion analyst for news monitoring, crisis warning, disclosure/PR response, and trading-halt clarification advice, which is a materially different function rather than an implementation detail.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire system prompt is written as a Chinese-only role and instruction set, with no indication that users may choose another language or that the skill is restricted to a Chinese-language/regional compliance context. This creates a natural-language locale policy concern because the skill effectively mandates a specific language without opt-in.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The description text specifies the skill in Chinese and does not offer any language or locale choice. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly documented and justified.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The entire system prompt is written as a Chinese-only role and output specification, with no indication that the user may choose another language or that the skill is region-specific. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The natural-language description is entirely in Chinese and presents the skill as a Chinese-language investment advisor, but the manifest does not indicate that this locale restriction is optional or region-specific. Under the policy, forcing a specific language without user opt-in is a language/locale policy concern.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The entire system prompt is written to operate in Chinese and does not indicate that users may choose another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The prompt requires fetching real-time market data from named third-party financial APIs but does not disclose to users that their queries, ticker interests, or portfolio-related inputs may be transmitted to external services. In a financial advisory context, this can expose sensitive investment interests or holdings metadata and creates consent, privacy, and compliance risks, especially when users may assume analysis is performed locally.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The manifest describes a financial analyst team focused on stock analysis, fund recommendations, portfolio review, and investment decision support. This config instead defines an 'Investment Banker' specializing in M&A, IPOs, bond issuance, and private financing, which are investment banking services rather than the stated investment advisory/analysis scope.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The natural-language description is written entirely in Chinese and presents the skill persona and scope only in that language, which indicates a language-specific constraint without offering the user any language or locale choice. Under the policy, forcing a specific language without opt-in is a reportable natural-language policy violation unless clearly justified as region-specific, which is not documented here.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The manifest describes a financial analyst team focused on stock analysis, fund recommendations, portfolio review, and investment decision support. This prompt instead defines an investment banker role centered on IPOs, M&A restructuring, bond issuance, and private financing, which are materially different services from the manifest’s retail/investment-analysis scope.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire system prompt is written in Chinese and defines the assistant role and output expectations only in that language, without offering the user a language choice or stating that the skill is intentionally limited to a Chinese-speaking/regional context. This creates a natural-language locale policy issue because it implicitly enforces a specific language without user opt-in.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The system prompt is written as a Chinese-only role definition and does not indicate that users may choose another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This prompt enables investment analysis, fund recommendations, portfolio review, and decision support, but it does not clearly warn users that AI-generated financial advice can be inaccurate, incomplete, outdated, or unsuitable for their personal circumstances. In a wealth-management context, users may over-rely on the model’s outputs and make real financial decisions without appropriate human review, increasing the risk of monetary loss or unsuitable recommendations.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This manifest uses Chinese as the mandated natural-language interface for the architecture description, coordinator name, and role text, and the rest of the file continues that pattern without offering a language or locale option. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly documented and justified.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The business-opportunity-analyst is a financial analysis role, but it is granted the exec tool, which enables arbitrary shell/script execution beyond the stated business need. In an LLM-agent setting, this materially increases the blast radius of prompt injection, malicious task content, or unsafe script usage, potentially leading to local command execution, data exfiltration, or environment compromise.

Static analysis

No suspicious patterns detected.