Back to skill

Security audit

股票价值投资分析

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent stock valuation skill with disclosed financial-analysis behavior, with ordinary caution needed for investment advice, local watchlist storage, and unpinned dependencies.

Install this in an isolated environment, verify the pdf-parser skill publisher/version before using it on financial reports, and be aware that watchlist use writes ~/.valuation_watchlist.json. Treat generated investment actions and position sizes as research aids only, cross-check data sources, and do not rely on the output as personalized financial 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 (2)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:5
Finding

Unpinned Python Dependencies Allow Unreviewed Package Updates

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:5-19
Vulnerability Type: Open-ended dependency constraints without integrity verification
Risk Level: Medium

Vulnerable Code

requirements
akshare>=1.15.0
pandas>=2.0.0
numpy>=1.24.0
rich>=13.0.0
tabulate>=0.9.0
requests>=2.31.0
python-dateutil>=2.8.0

Technical Analysis

The project specifies only minimum dependency versions. It does not provide exact version pins, cryptographic hashes, or a lock file. Consequently, each installation may resolve to newer package releases that were not reviewed during this audit.

This is a supply-chain weakness rather than evidence that any currently named package is malicious. If a dependency release, publisher account, or configured package index is compromised, the resolver could install attacker-controlled code. Python packages can execute code during installation, and imported packages execute module initialization code when the scripts start.

Attack Path

  1. An attacker compromises a dependency publisher, release process, or package registry account.
  2. The attacker publishes a malicious version satisfying the open-ended version constraint.
  3. A user installs the project dependencies from the default package index.
  4. The resolver selects the malicious newer version because it satisfies the >= constraint.
  5. Malicious code executes during package installation or when a project script imports the package.

Impact Assessment

Exploited dependency code would normally run with the privileges of the user installing or executing the project. It could access files readable by that user, alter project or user files, inspect process environment data, initiate network connections, or modify generated financial-analysis results.

The scope depends on the execution environment. Running dependency installation as an administrator or privileged service account would significantly increase t ...[truncated 20 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every direct dependency to an exact, reviewed version.
  2. Generate a transitive dependency lock file using a controlled dependency-management tool.
  3. Record cryptographic hashes and install with hash enforcement, such as pip install --require-hashes.
  4. Configure a trusted package index or an internally controlled package mirror.
  5. Review dependency provenance, release signatures, maintainers, and vulnerability advisories before upgrades.
  6. Test dependency updates in an isolated environment before promoting them.
  7. Install and execute the project using a dedicated, non-privileged virtual environment.
  8. Remove dependencies that are not directly required by the scripts to reduce supply-chain exposure.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:33
Finding

External Skill Dependency Is Installed by Mutable Name Without Version or Integrity Pinning

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:33-39; duplicated at README.md:78-84
Vulnerability Type: Unversioned external Skill installation
Risk Level: Medium

Vulnerable Code

bash
clawhub install pdf-parser

Technical Analysis

The project instructs users to install the external pdf-parser Skill using only its mutable registry name. The instruction does not specify an immutable version, content digest, verified publisher identity, signature, or required permission set.

The installed artifact can therefore differ from the version that existed when this project was reviewed. Because the dependency is intended to process uploaded financial-report documents, a compromised or replaced package could receive access to those documents and any capabilities granted by the hosting Agent environment.

No evidence was found that the current project retrieves or executes a malicious payload itself. The risk arises from delegating functionality to an external component whose resolved content is not fixed by the project.

Attack Path

  1. An attacker compromises the external Skill publisher, registry entry, distribution channel, or similarly named package resolution.
  2. The attacker replaces or publishes altered content under the mutable pdf-parser name.
  3. A user follows the documented installation command.
  4. The package manager resolves and installs the altered Skill without an immutable identity check.
  5. The Agent loads or invokes the altered Skill to process a financial report.
  6. The dependency abuses its available permissions to read documents, manipulate extracted results, issue unauthorized tool calls, or transmit accessible data.

Impact Assessment

Potential impact is limited by the permissions granted to the external Skill and Agent runtime. At minimum, a compromised parser could falsify extracted financial data and corrupt subsequent investment analysis.

If granted broade ...[truncated 324 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the external Skill to an immutable reviewed version and, where supported, a content digest.
  2. Require publisher identity and package-signature verification before installation.
  3. Document the expected source repository and verify that its release artifact matches the reviewed source.
  4. Audit the exact pdf-parser release before recommending it.
  5. Document and enforce a minimal permission profile for the parser.
  6. Deny network, shell, persistence, and unrelated filesystem access unless explicitly required.
  7. Process untrusted PDFs in a sandbox with resource limits and isolated storage.
  8. Establish a controlled upgrade process in which new versions are reviewed and tested before changing the pin.
  9. Update both SKILL.md and README.md so the installation instructions remain consistent.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (41)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding notes that the skill's primary behavior is watchlist management and threshold alerts, including local persistence, while the description emphasizes comprehensive investment analysis. Hidden or undocumented persistence combined with misleading capability claims can affect user trust, privacy expectations, and operational safety.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

该技能的全部自然语言说明、示例交互和输出描述均以中文呈现,且未说明支持其他语言或允许用户选择语言。这构成了潜在的语言/locale 强制约束,属于自然语言层面的组织策略风险。

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill advertises scripts and behaviors that imply file read/write capability, but it does not declare any explicit tool scope or permission boundaries. In an agent environment, undocumented filesystem access increases the chance of overbroad execution, unintended local persistence, or unauthorized reads from user-provided files.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill name and description are presented as Chinese-only instructions for an investment-analysis workflow, and the rest of the file consistently mandates Chinese output structure and usage without indicating that users may choose another language. This can violate language/locale policy because the skill appears to enforce a specific language without user opt-in or a clearly documented regional necessity.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The section explicitly says all valuation analysis reports must follow a fixed structure, and all headings are defined in Chinese with no option for alternate languages. That natural-language instruction can amount to a forced language policy rather than a user-selectable presentation preference.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The entire skill is written as Chinese-only operational guidance, and there is no natural-language indication that users may choose another language or that the skill is limited to a Chinese-specific compliance or regional context. Under the policy, a forced language/locale without user opt-in is a reportable natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill provides explicit buy/hold/sell guidance, position sizing, target prices, and sell triggers without any disclaimer that the output is informational only and not financial advice. Users could treat this as actionable investment advice and suffer material financial loss, especially because the framework is presented as authoritative and operationally complete.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file is natural-language guidance, and it presents all instructions, headings, and templates exclusively in Chinese. Under the policy, forcing a specific language without user opt-in or documented justification is a locale/language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file presents all instructions and guidance exclusively in Chinese, and there is no indication that users may choose another language or that the skill is intended only for a Chinese-speaking or region-specific context. Per the policy category, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file contains natural-language strings, help text, prompts, and report output exclusively in Chinese, starting from the module docstring and continuing throughout the CLI UX. Under the policy, forcing a specific language without user opt-in is a locale-policy violation unless the restriction is explicitly justified, which is not stated here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code file contains natural-language instructions, help text, prompts, and reports entirely in Chinese, starting from the module docstring and continuing throughout the CLI experience. Under the language/locale policy, forcing a specific language without user opt-in is a policy concern unless the locale restriction is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file's docstring, CLI descriptions, and report strings are all written in Chinese, effectively constraining user interaction and output language to a single locale. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest describes a stock value-investment analysis system focused on analytical functions such as moat analysis, financial checks, DCF valuation, management evaluation, and integrated investment decisions. This file creates, updates, and deletes a persistent watchlist in ~/.valuation_watchlist.json, which is a stateful portfolio-tracking capability not described in the manifest.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest emphasizes one-off investment analysis workflows, but this code implements ongoing threshold-based monitoring by checking stored watchlist targets against current valuations and producing alerts. That monitoring capability is materially different from the stated analysis framework and is not an obvious implementation detail of DCF or moat analysis.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

L83 将护城河分析描述为“五步检验法”,但 L356-L381 又将同一框架写成“四步检验法”,且报告固定结构 L637 也采用“四步法”。这属于注释/文档对技能核心分析方法的主动冲突,会让使用者误解该技能实际应执行的分析流程。

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

L163-L179 明确定义“十分钟测试”为 9 个问题,且“全部9个问题通过”才进入深度分析;但 L633-L635 的固定报告结构却写成“8项快速筛选测试表格”。这是文档内部对同一功能输出要求的直接矛盾,可能导致实际分析报告遗漏一项测试。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file applies to SQP-3, which covers natural-language policy violations for all file types. The skill presents all instructions, workflow steps, and output templates only in Chinese, with no indication that the user can choose another language or that the locale restriction is intentional and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

Natural-language policy violations include forcing a specific language without user opt-in. This file is wholly Chinese-language and does not state that the skill is China/Chinese-specific or offer an alternative language choice, which can impose a locale constraint implicitly.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This requirements file includes natural-language comments naming the skill in Chinese and giving installation instructions only in Chinese. For a generally applicable skill, forcing a specific language without user opt-in can violate language/locale policy unless the locale restriction is explicitly justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.