T08 · Insecure Dependencies
- Location
SKILL.md:301- Finding
Unpinned Third-Party Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This stock-analysis skill is coherent in purpose, but it can produce actionable trading and position guidance from incomplete or unverified financial data.
Review carefully before installing. Use this only as a research aid, not as personalized financial advice, and verify all figures independently. Avoid following its position sizing, buy, or sell guidance when any data source fails or financial verification is incomplete. Install dependencies only in an isolated environment with pinned, reviewed package versions.
SKILL.md:301Unpinned Third-Party Dependency Installation
scripts/screen_stocks.py:221Stock Screening Fails Open When Mandatory Criteria Are Unavailable
scripts/analyze_stock.py:319Unverified Financial Figures Remain in the Analysis Report
scripts/judge_market.py:345Complete Market-Data Failure Produces Positive Allocation Guidance
描述涵盖多个高层能力:筛选、深度分析、市场阶段判断、仓位策略、建仓/卖出计划制定。当前代码块只对应其中一部分——“七标准筛选小盘成长股”的执行脚本,且是CLI筛选器,不包含八步分析流程、市场季节识别逻辑、仓位建议、建仓计划或卖出计划生成。因此,虽然数据源说明与选股部分基本一致,但整体声明明显宽于该代码的实际功能,构成描述与行为不一致。
The skill explicitly instructs the agent to run shell commands and install packages, but it does not declare any tool scope, permissions, or allowed-tools boundary. In an agent environment, this creates an authority gap where broad shell execution may be available without least-privilege constraints, increasing the chance of unintended command execution, package installation, or network access.
The skill is designed to influence stock selection, market timing, and position sizing, yet it lacks a prominent upfront warning about financial risk and decision impact. In this context, omission of such a warning is dangerous because users may treat the output as authoritative trading advice, especially when the skill presents structured scoring, buy plans, and sell ladders.
The trigger conditions are broad enough to match ordinary investing conversations, which can cause the skill to activate in contexts where the user did not intend portfolio-influencing analysis or tool-backed data collection. In agent systems, overly broad activation increases the risk of unnecessary tool use, inadvertent execution of shell-backed workflows, and unrequested financial guidance affecting user decisions.
The document defines criterion 7 earlier as a mandatory exclusion check that adds no points, but the summary table later relabels it as 'valuation' and assigns 10 points. In a trading-analysis skill, this inconsistency can cause the agent or user to score and rank stocks incorrectly, potentially admitting disallowed securities or overweighting a factor that was supposed to be a hard gate.
The module docstring and usage/output description are written entirely in Chinese and state that the output is a Markdown analysis report, while the report body later also emits Chinese-only content. For a generally usable analysis script, this constitutes a language-policy issue because it hard-codes a specific locale without any opt-in or alternative language selection.
The generated Markdown report, ratings, warnings, and disclaimer are all emitted in Chinese string literals, with no mechanism for the user to choose another language. This is a natural-language policy concern because the script enforces a single locale across all user-facing output.
This code file contains natural-language documentation and output messages entirely in Chinese, including the module title and operational guidance, with no indication that the user can choose another language. Under the policy rule, forcing a specific language without user opt-in is a locale/language policy violation.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
"""通过curl获取JSON,带重试"""
for attempt in range(retries):
try:
result = subprocess.run(
['curl', '-sL', '--connect-timeout', '10', '--max-time', str(timeout), url],
capture_output=True, text=True, timeout=timeout + 5
)
This code file contains natural-language strings that define the skill’s purpose, usage, and output expectations exclusively in Chinese. Under the policy, a skill should not force a specific language or locale unless it offers opt-in or clearly documents a justified regional constraint; neither is present here.
The file is entirely written as a Chinese report template and instructs the agent to produce the final analysis in that format, including a colloquial prose summary. There is no indication that the user can choose another language or that the Chinese-only output is limited to a justified region-specific context, which can violate language/locale policy requirements.
This markdown file contains user-facing natural-language instructions exclusively in Chinese, and there is no indication that the skill is region-specific or that users can opt into another language. Under the language/locale policy, forcing a specific language without user choice can be a policy violation.
The top-level documentation describes a broader 'four-layer' data-source architecture and names Tushare MCP as part of it, while the actual functions in this file only attempt akshare, baostock, and Eastmoney-based retrieval. Although line 5 notes Tushare is called directly by the agent and not in this module, the docstring still overstates what this file itself does, creating a mild documentation-to-code mismatch.
This is a code file, so natural-language policy checks apply to docstrings and user-facing strings. The header, CLI description, help text, errors, and progress messages are all Chinese-only, which can violate a language/locale policy when no user opt-in or documented region-specific justification is provided.
No suspicious patterns detected.