T08 · Insecure Dependencies
- Location
scripts/zt_pool.py:1- Finding
Unpinned Third-Party Dependency Installation Guidance
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a public A-share market-data tool, but its position guidance can be based on failed or stale data despite documentation claiming that issue was fixed.
Install only if you are comfortable with a Chinese A-share research tool that contacts public market-data providers and gives non-binding position suggestions. Treat its trading guidance as unreliable unless the maintainer fixes the sentiment data freshness/error handling and pins dependencies in a controlled environment.
scripts/zt_pool.py:1Unpinned Third-Party Dependency Installation Guidance
scripts/sentiment_snapshot.py:49Data Retrieval Failures Are Converted into Valid Zero Counts and Used for Position Recommendations
The declared description presents a full-featured A-share monitoring and analysis skill with market breadth, sector activity, capital flow, sentiment analysis, decision framework outputs, and trading/position guidance. The supplied code chunk only retrieves major index spot data from two public market data sources and formats simple price/change strings. While index monitoring is a supporting subset of the declared purpose, the actual code lacks the core analytical, decision, and advisory capabilities described. Therefore the description materially overstates what this code chunk actually does.
The supplied code chunk is a focused macro data snapshot script, not a full A-share comprehensive monitoring and decision-support tool as described. While it does cover part of the declared scope—specifically macro snapshot elements and northbound funds—it lacks most of the headline functionality in the description, including real-time market overview, sector activity,涨跌情况, emotional indicators, decision framework outputs, and position/trading recommendations. There is no evidence of undeclared harmful behavior, but there is a clear description-versus-behavior mismatch because the primary purpose in this code chunk is much narrower than the declared skill.
The declared description promises a broad A-share analysis and decision-support tool covering many market dimensions and actionable guidance. The supplied code only retrieves sector涨跌排行 for industry/concept boards from Eastmoney and prints top/bottom performers. There is no evidence of broader market monitoring, macro analysis, sentiment modeling, capital flow analysis, decision framework output, or trading advice generation. While '哪些板块在动' is partially consistent with sector ranking, the actual code is materially narrower than the declared primary purpose, so this is a mismatch.
The declared description presents a high-level A-share market analysis and decision-support tool with multiple analytical dimensions and advisory outputs. The supplied code does not implement those functions. It only queries Sina Finance for one or more explicitly provided stock symbols and formats basic quote information. While real-time quote retrieval is loosely related to stock monitoring, the actual code is far narrower than the declared purpose and lacks nearly all of the described analytical, advisory, and market-wide capabilities.
The supplied code is narrowly focused on querying and displaying涨停池/跌停池 data. While this is one small subset of the declared scope ('涨停/跌停'), the description presents the skill as a broad A-share analysis and decision-support tool with multiple analytics and advisory features that are not present in this code chunk. There is no evidence here of macro analysis, market-wide monitoring, sector tracking, northbound capital flow analysis, sentiment framework, or position recommendations. Therefore the code behavior is materially narrower than the declared purpose.
The skill advertises multiple external-data capabilities and references scripts that would require network and likely shell/code execution, but it does not declare any explicit tool scope such as allowed tools or permissions. This weakens least-privilege controls and can let the runtime grant broader access than reviewers or policy expect, increasing the risk of unintended network or command execution paths.
The trigger list includes very broad natural-language phrases such as generic market questions and action-oriented prompts like buy/sell or position-sizing advice. Overbroad activation can cause the skill to be invoked in contexts the user did not intend, increasing the chance of unnecessary tool use, incorrect delegation, or finance advice being produced from weak context.
The default request headers hard-code "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8", which imposes a locale preference regardless of user settings. This is a natural-language/locale policy concern because the skill does not offer a language choice or document a justified region-specific constraint.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 1. 主要指数
print("\n>>> 主要指数")
subprocess.run([sys.executable, os.path.join(base, "index_spot.py")])
# 2. 宏观快照
print("\n>>> 宏观快照")
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 2. 宏观快照
print("\n>>> 宏观快照")
subprocess.run([sys.executable, os.path.join(base, "macro_snapshot.py")])
# 3. 核心企业
print("\n>>> A股核心企业")
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 3. 核心企业
print("\n>>> A股核心企业")
subprocess.run([sys.executable, os.path.join(base, "core_companies.py")])
# 4. 行业板块
print("\n>>> 行业涨幅榜TOP10")
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 4. 行业板块
print("\n>>> 行业涨幅榜TOP10")
result = subprocess.run([sys.executable, os.path.join(base, "sector_ranking.py"), "行业板块"], capture_output=True, text=True)
if "暂时不可用" in result.stdout:
print("(行业板块数据暂时不可用,请稍后重试)")
else:
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
# 5. 短线情绪
print("\n>>> 短线情绪")
result2 = subprocess.run([sys.executable, os.path.join(base, "sentiment_snapshot.py")], capture_output=True, text=True)
print(result2.stdout, end="")
The module description and all user-facing output strings are in Chinese, indicating the skill is designed to respond in a fixed language/locale. There is no indication that the user can opt into this language or that the locale restriction is explicitly documented as a justified regional constraint.
The module docstring and all user-facing output strings are written only in Chinese, and the skill does not provide any opt-in or alternative language handling. This can violate a language/locale policy when a skill is expected to be usable without forcing a specific language.
The module docstrings, parameter values, status messages, and CLI output are all hard-coded in Chinese, and the script defaults to Chinese market labels such as '行业板块'. There is no user opt-in, language selection, or documented justification that this skill must operate only in Chinese, which creates a language/locale policy concern.
The module description and runtime output are entirely in Chinese, and the script does not provide any option for users to select another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly documented and justified.
The module docstring and all user-facing messages are written only in Chinese, which imposes a specific language on users without any opt-in or stated region-specific justification. Under the policy rule, locale or language constraints should either be optional or explicitly documented as intentional and scoped.
This code performs a network request using a caller-provided URL and request headers, which can transmit user or system-derived data to external services. While the function has a technical docstring, there is no user-facing warning, logging, or explicit disclosure about outbound network access in the code shown.
This code fetches remote macro/market data via AkShare calls, which are network operations that transmit system-originated requests, but the implementation provides no user-facing notice, confirmation, or inline warning about contacting external data sources. The helper also suppresses stdout/stderr, reducing visibility into these external calls.
Natural-language strings throughout the file, including the module description, notes, labels, and CLI output, are fixed in Chinese. This can violate language/locale policy when the skill does not document that it is region-specific or provide a user-selectable language option.
This code automatically calls AkShare data APIs to retrieve live market sentiment inputs, which implies outbound network access. Although comments describe data fetching, there is no confirmation prompt or user-facing disclosure in the code about contacting external data sources when the snapshot is built.
This code builds an HTTP request from command-line input and sends it to a third-party Sina Finance endpoint. While the script's purpose is to fetch quotes, there is no explicit user-facing warning, log message, or comment disclosing that supplied codes will be transmitted over the network to an external service.