T08 · Insecure Dependencies
- Location
SKILL.md:361- Finding
Unpinned Third-Party Skills Are Installed and Subsequently Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:361-369; related instructions atSKILL.md:54,SKILL.md:112-113,README.md:151, andREADME.md:161
Vulnerability Type: Supply-chain exposure through mutable third-party dependencies
Risk Level: MediumVulnerable Code
bash # ftshare announcement data npx openclaw skills install shawn92/ftshare-announcement-data # Wind financial data npx skills add https://gitee.com/wind_info/wind-skills.git --skill wind-mcp-skill -g -y npx skills add https://gitee.com/wind_info/wind-skills.git --skill wind-find-finance-skill -g -y # Other recommended Skills npx openclaw skills install openclaw/skills/tencent-finance npx openclaw skills install sugarforever/01coder-agent-skills/china-stock-analysisThe installed Wind component is executed by
data_router.py:250-257:python cli = cls.WIND_SKILL_DIR / "scripts" / "cli.mjs" params_json = json.dumps({"windcode": code, "indexes": indexes}, ensure_ascii=False) cmd = ["node", str(cli), "call", "stock_data", "get_stock_price_indicators", params_json] proc = subprocess.run( cmd, capture_output=True, text=True, timeout=timeout, cwd=str(cls.WIND_SKILL_DIR) )The installed FTShare component is executed by
data_router.py:347-354:python cmd = [ sys.executable, str(cls.FTSHARE_DIR / "run.py"), "stock-announcements-single-stock-all-periods", "--stock-code", stock_code, "--page", str(page), "--page-size", str(page_size) ] proc = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout)Technical Analysis
The installation commands refer to mutable repository or package identifiers without an immutable commit, reviewed version, checksum, or signature. As a result, the effective code installed by these commands can change after this project has been audited.
The Wind command additionally uses global installation and automatic ...[truncated 1835 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every external Skill to a reviewed immutable release or full commit hash.
- Publish expected cryptographic hashes or signatures and verify them before installation.
- Maintain a lock file or equivalent dependency manifest containing exact versions and integrity metadata.
- Remove
-ywhere practical so users can inspect the source, requested scope, and installation destination. - Prefer project-local installation over global installation to reduce the affected scope.
- Review dependency updates before changing pins, including transitive package changes.
- Execute external Skills with least privilege and a restricted environment that exposes only required files and credentials.
- Document the exact trusted versions against which this project was tested.
