Back to skill

Security audit

独孤九剑V2

Security checks for vulnerabilities and agentic risk

Overview

This stock-analysis skill is coherent and purpose-aligned, but users should understand that it contacts public market-data providers and may create local chart files.

Install only if you are comfortable with the skill contacting external Chinese market-data/news providers for requested tickers and saving generated chart PNGs locally. Prefer a virtual environment with pinned dependencies, and treat the trading output as analysis support rather than financial advice.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (11)

Lp3

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding
The skill clearly instructs the agent to fetch live stock, capital-flow, and potentially news data from external services, yet no permissions are declared. This creates an undeclared network capability that can surprise hosts, bypass expected consent boundaries, and expose user queries or usage metadata to third-party endpoints.

Tp4

High
Category
MCP Tool Poisoning
Confidence
81% confidence
Finding
The advertised purpose is stock analysis, but the skill also exposes standalone framework-retrieval and chart-generation/file-writing capabilities. This widens the attack surface beyond the stated function, making it easier for users or other agents to invoke unintended behaviors and increasing the risk of unauthorized local file creation or capability misuse.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The code explicitly implements anti-blocking measures such as randomized delays, User-Agent rotation, retries, and '防御层' logic to sustain access to third-party data sources. In a skill context, this crosses from ordinary API consumption into stealthy scraping behavior that can evade provider controls and may violate service terms, increasing legal, operational, and abuse risk.

Missing User Warnings

Low
Confidence
78% confidence
Finding
The description omits a warning that the skill will fetch stock and possibly news data from external providers. Users may assume analysis is local, causing uninformed disclosure of requested tickers, timing, and related prompts to third parties, which is a transparency and privacy issue.

Unpinned Dependencies

Low
Category
Supply Chain
Content
akshare>=1.12.0
pandas>=1.5.0
numpy>=1.24.0
mplfinance>=0.12.10
Confidence
96% confidence
Finding
The dependency is specified with only a lower bound, which allows future unreviewed versions to be installed. This creates supply-chain and reproducibility risk because builds may silently pick up breaking or compromised releases.

Unpinned Dependencies

Low
Category
Supply Chain
Content
akshare>=1.12.0
pandas>=1.5.0
numpy>=1.24.0
mplfinance>=0.12.10
matplotlib>=3.7.0
Confidence
96% confidence
Finding
Using pandas with a >= constraint permits installation of any newer release, including versions not validated by the skill author. That weakens reproducibility and increases exposure to accidental breakage or supply-chain compromise.

Unpinned Dependencies

Low
Category
Supply Chain
Content
akshare>=1.12.0
pandas>=1.5.0
numpy>=1.24.0
mplfinance>=0.12.10
matplotlib>=3.7.0
requests>=2.28.0
Confidence
96% confidence
Finding
An unpinned numpy dependency allows dependency resolution to select newer unvalidated versions over time. This is dangerous from a supply-chain perspective because security posture and behavior can change without code changes in the skill.

Unpinned Dependencies

Low
Category
Supply Chain
Content
akshare>=1.12.0
pandas>=1.5.0
numpy>=1.24.0
mplfinance>=0.12.10
matplotlib>=3.7.0
requests>=2.28.0
Confidence
95% confidence
Finding
The mplfinance package is not pinned to a specific reviewed release, so future installations may resolve to different code than expected. That introduces modest but real supply-chain and operational risk.

Unpinned Dependencies

Low
Category
Supply Chain
Content
pandas>=1.5.0
numpy>=1.24.0
mplfinance>=0.12.10
matplotlib>=3.7.0
requests>=2.28.0
Confidence
95% confidence
Finding
Matplotlib is allowed to float to any later version, which undermines deterministic builds and can introduce unreviewed code. While common in development, this remains a genuine dependency-management weakness.

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy>=1.24.0
mplfinance>=0.12.10
matplotlib>=3.7.0
requests>=2.28.0
Confidence
93% confidence
Finding
The requests dependency is unpinned, allowing installation of arbitrary newer versions that may introduce regressions or vulnerabilities. Because this skill automatically fetches external stock data, network-facing libraries deserve stricter version control.

Known Vulnerable Dependency: requests==2.28.0 — 8 advisory(ies): CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi); CVE-2026-25645 (Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility func) +5 more

High
Category
Supply Chain
Confidence
90% confidence
Finding
The file permits requests>=2.28.0, and static analysis notes that requests 2.28.0 has multiple advisories. Because this skill fetches remote data, use of a vulnerable HTTP client can expose credential leakage, TLS/session verification flaws, or other network-originated attacks if the vulnerable version is resolved in deployment.

Static analysis

No suspicious patterns detected.