Back to skill

Security audit

小智A股分析引擎

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a real stock-analysis tool, but it needs Review because it stores portfolio/watchlist data and describes automatic external notifications while parts of the README claim it is read-only.

Install only if you are comfortable with a stock-analysis skill that fetches public market data, writes local watchlist/cost/report/alert files, and may be used for scheduled or external notifications. Review or disable notification flows unless recipients and schedules are explicit, and do not treat its trading signals as personalized financial advice.

Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Tainted flow: 'LOG_FILE' from os.environ.get (line 40, credential/environment) → open (file write)

Medium
Category
Data Flow
Content
def log_event(event: dict):
    event["ts"] = datetime.now().isoformat()
    with open(LOG_FILE, "a", encoding="utf-8") as f:
        f.write(json.dumps(event, ensure_ascii=False) + "\n")

# ========================================
Confidence
84% confidence
Finding
The log file path is derived from OPENCLAW_WORKSPACE and then used for appending without validating or constraining the resolved location. If an attacker can influence that environment variable, they can redirect writes to unintended files or locations, causing unauthorized file creation/modification or data leakage via logs. In this skill context the writes are limited to JSONL logging, so this is not arbitrary code execution, but it is a real filesystem integrity issue.

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill documentation shows capabilities to read/write local files, access environment-dependent tooling, and perform network operations, but it declares no permissions. This creates a transparency and policy-enforcement gap: users and the host may not realize the skill can persist data, fetch external content, and mutate workspace state. In this context, the capability set is consistent with a stock-analysis tool, but the absence of explicit permission declarations still makes unintended data access and persistence harder to audit.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
The stated purpose centers on analysis, quotes, and recommendations, but the skill also persists monitoring config, watchlists, costs, reports, and alert logs, and supports CLI mutations of tracked assets. That behavior materially changes the trust boundary from stateless analysis to local state management, which can expose sensitive portfolio information, create unwanted retention, and enable silent modification of user tracking data.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The skill includes outbound push-notification behavior through WeChat, DingTalk, and a message tool, which goes beyond simple user-invoked analysis. External messaging can leak portfolio positions, alerts, and market activity to third-party channels or misconfigured recipients, especially when triggered automatically or at high frequency.

Description-Behavior Mismatch

Medium
Confidence
87% confidence
Finding
The documentation claims automatic WeChat push of daily reports, expanding the skill from an interactive analysis assistant into an autonomous notifier. Autonomous outbound delivery increases the chance of unnoticed data disclosure, spammy behavior, or persistence of generated content without the user's immediate awareness.

Vague Triggers

Medium
Confidence
85% confidence
Finding
The trigger phrases are very broad and cover common stock-related requests such as price checks, analysis, and recommendations, without clear scope limits or activation guards. In an agent environment, this can cause the skill to activate unexpectedly on ordinary financial conversation, increasing the chance of unintended tool use, overconfident investment guidance, or bypass of more appropriate routing logic.

Vague Triggers

High
Confidence
95% confidence
Finding
The trigger policy is extremely broad, covering common requests like stock analysis, operation suggestions, and recommendations at high priority. Over-broad activation can cause the skill to engage in ordinary conversation unexpectedly, leading to unnecessary network access, state changes, report generation, or persistent tracking actions when the user did not intend to invoke this skill.

Vague Triggers

High
Confidence
94% confidence
Finding
The example trigger phrases include highly ambiguous everyday language such as '怎么看', '怎么样', and '查一下xx', which can overlap with casual discussion. In a skill that can fetch remote data, write local files, and configure monitoring, ambiguous triggers increase accidental invocation risk and can expose user context or initiate side effects without clear consent.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
This content gives explicit buy, hold, reduce, and exit signals, plus short-term entry guidance, without any accompanying warning that it is informational only, may be inaccurate, and should not be treated as personalized investment advice. In a stock-analysis skill whose stated purpose is to provide trading strategy output and timing recommendations, users are likely to rely on these signals for real financial decisions, increasing the risk of harmful or non-compliant advice.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The prompt "今天大盘怎么样" is broad, conversational language that can cause the skill to activate on loosely related market commentary requests without clear scope boundaries. In a financial-advice skill, overbroad triggering is risky because it can produce unsolicited trading analysis or recommendations in contexts where the user did not explicitly request this specialized behavior.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger "推荐几只股票" is especially sensitive because it invites direct stock recommendations using a very generic phrase with no suitability, jurisdiction, or risk-tolerance constraints. If broadly matched, the skill could deliver actionable investment advice too readily, increasing the chance of inappropriate financial guidance or accidental invocation in adjacent conversations.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The phrase "帮我看看我的股票池" is ambiguous and can overlap with general help-oriented requests about lists, holdings, or planning, making unintended activation plausible. In this skill, unintended activation matters because the resulting output includes position-style guidance and risk categorization, which can be mistaken for tailored portfolio advice.

Static analysis

No suspicious patterns detected.