T08 · Insecure Dependencies
- Location
README.md:28- Finding
Unpinned Third-Party Dependencies Permit Supply-Chain Substitution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a coherent A-share market-analysis tool that fetches market data, scores short-term signals, and stores local prediction logs, with no evidence of hidden control, exfiltration, or destructive behavior.
Install in a dedicated virtual environment, pin or review akshare and pandas versions, and remember that prediction snapshots are retained locally under data/decision_log.jsonl. Treat generated stock output as research support, not financial advice or automated trading authority.
README.md:28Unpinned Third-Party Dependencies Permit Supply-Chain Substitution
Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.
The reported hidden behavior involving debug toggles, environment-variable resolution, and config-based feature flags is materially outside the declared trading-analysis purpose. Undisclosed debug/config behavior is risky because it can alter runtime output or expose additional internal data paths, especially when environment access is available and no tool scope is declared.
The reported hidden behavior involving debug toggles, environment-variable resolution, and config-based feature flags is materially outside the declared trading-analysis purpose. Undisclosed debug/config behavior is risky because it can alter runtime output or expose additional internal data paths, especially when environment access is available and no tool scope is declared.
The reported hidden behavior involving debug toggles, environment-variable resolution, and config-based feature flags is materially outside the declared trading-analysis purpose. Undisclosed debug/config behavior is risky because it can alter runtime output or expose additional internal data paths, especially when environment access is available and no tool scope is declared.
The skill declares executable workflows and references persistent storage under data/, but does not define any explicit tool scope, permissions, or allowed-tools boundaries despite detected file and environment capabilities. In an agent setting, missing scope constraints increases the chance the skill can read or write files or consume environment-derived configuration beyond what a user reasonably expects.
The configuration sets the market to "CN-A", which constrains the skill to a specific regional market/locale. Under the policy, locale restrictions should either offer user choice or be clearly documented and justified; this file provides neither.
The module docstring states this is a CLI for the "A-share short-term decision skill," which hard-codes a China-market locale focus in user-facing language. The file does not offer any language/locale choice or explain that the locale restriction is a justified region-specific compliance requirement.
The file is written entirely in Chinese and defines the agent prompt and output format only in Chinese, with no indication that users can choose another language or that the locale restriction is optional. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.
The function returns user-facing status messages such as '未找到该日期预测记录,请先运行 run_prediction_for_date。' and 'akshare 或 pandas 不可用,无法做真实市场对比。' entirely in Chinese. This imposes a fixed language on all users without opt-in, which matches the language/locale policy violation criteria.
The function returns several user-facing recommendation messages in Chinese string literals, but the file provides no opt-in, fallback, or documented justification for enforcing that locale. This matches the policy concern for language/locale restrictions in natural-language content within code files.
The generated report is hard-coded in Chinese, including headings, recommendations, and risk text, with no indication that the user can choose another language. This is a natural-language policy concern because it enforces a specific locale in user-facing output without opt-in or justification in the file.
The skill explicitly documents appending decision snapshots to data/decision_log.jsonl and storing generated artifacts under data/ without warning users that persistent files will be created. Persistent storage can accumulate sensitive operational data, create privacy/retention issues, and surprise users who expect a stateless analysis skill.
The manifest text explicitly identifies the skill as 'A股短线交易决策', indicating a Chinese-language/locale-specific skill name, but this file provides no indication that users can opt into that locale or that the restriction is justified as region-specific. Under the policy, forcing a specific language or locale without opt-in can be a natural-language policy violation.
The manifest sets timezone: Asia/Shanghai, which imposes a specific locale context on all scheduled jobs. Under the policy criteria, locale constraints should either be user-selectable or clearly documented as justified for a region-specific skill, and that justification is not present in this file.
The function appends prediction data, including the full signal payload, to decision_log.jsonl via _append_jsonl. While file logging is part of the utility's purpose, there is no print, prompt, or explanatory comment/docstring near the write operation to disclose that user-invoked predictions will be persisted to disk.
The call to ak.stock_zh_a_hist fetches market data from an external library-backed source, which implies network activity, but the function does not log, print, or document that external requests may be made. Users invoking this utility may not realize it contacts remote services during comparison.
No suspicious patterns detected.