T08 · Insecure Dependencies
- Location
SKILL.md:133- Finding
Unpinned Third-Party Dependencies Permit Uncontrolled Package Resolution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a straightforward Chinese-language stock data downloader that writes CSV files, with documentation and dependency hygiene issues but no hidden or destructive behavior found.
Install dependencies in a dedicated virtual environment and consider pinning package versions. Be aware that the minute-level period options are not actually implemented correctly, so use daily, weekly, or monthly unless the skill is fixed.
SKILL.md:133Unpinned Third-Party Dependencies Permit Uncontrolled Package Resolution
整体来看,代码的主要目的与声明基本一致:它确实是一个面向A股/港股的批量历史数据采集脚本,支持从文件或命令行传入多只股票,并调用单只股票采集模块执行抓取。不存在明显的越权行为、无关触发器或与股票采集无关的能力。 但声明中明确写了支持“分钟线”,而此代码片段中 --period 的 choices 仅为 ["daily", "weekly", "monthly"],没有分钟级周期选项,因此描述比实际实现更宽,构成能力层面的不一致。至于“导出为CSV”,该片段没有直接展示导出逻辑,但返回文件路径并调用 fetch_stock_data,不能据此认定明显不符;真正明确可判定的不一致点是分钟线支持缺失。
代码的核心目的与声明大体相关,确实是在采集A股/港股历史数据并导出CSV,没有发现明显越权或无关的额外危险能力。但声明中的关键能力有实质性夸大:一是“多股票批量采集”完全未实现;二是“分钟线”虽然出现在 argparse choices 中,但底层数据获取逻辑没有对应处理,实际只支持日/周/月;三是描述给出的若干使用场景依赖批量/全历史等能力,而代码并不完整满足。因此属于描述与实际行为不一致。
Without declared permissions the skill's intent is opaque and cannot be validated.
The module docstring, CLI description, help text, and runtime messages are all written in Chinese, which forces a specific language for interaction. There is no user opt-in, language selection mechanism, or documented justification that this skill is intended only for a Chinese-language audience.
The argument help and choices claim support for "1min", "5min", "15min", "30min", and "60min", but the code paths in fetch_stock_data only map periods to daily/weekly/monthly for both AkShare and yfinance. Unsupported minute values silently fall back to daily or 1d behavior, which contradicts the documented interface and can mislead users about what data is being collected.
This markdown file presents all user-facing instructions in a single language and locale context, which can be a natural-language policy issue when no opt-in or alternative language is provided. There is no indication that the user can select another language or that the Chinese-only scope is explicitly justified.
Natural-language policy issues apply to all file types, and this file presents all user-facing instructions in Chinese without indicating user opt-in or a justified locale restriction. That can amount to forcing a specific language for interaction or documentation without offering alternatives.
This markdown file documents a data-collection skill that exports results as CSV files and defaults output to ./stock_data, but it does not explicitly warn users that executing the skill will create files on disk. For markdown files, user-facing documentation should disclose behaviors that affect user data or filesystem state.
This code orchestrates repeated calls to fetch_stock_data for multiple stocks and passes an output directory for saving results, which implies network retrieval and file creation as part of the batch operation. While progress is printed, there is no explicit disclosure that running the command will contact external data sources and write files in bulk to the specified directory.
The file's natural-language comments and labels are entirely in Chinese, including the format and market descriptions. Because SQP-3 applies to all file types and flags language policy violations when a skill forces a specific language without user opt-in, this presents a potential locale-policy issue absent any documented justification.
No suspicious patterns detected.