T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:361
- Finding
- Unpinned Third-Party Skills Are Installed and Subsequently Executed## Vulnerability Details **File Location**: `SKILL.md:361-369`; related instructions at `SKILL.md:54`, `SKILL.md:112-113`, `README.md:151`, and `README.md:161` **Vulnerability Type**: Supply-chain exposure through mutable third-party dependencies **Risk Level**: Medium ### Vulnerable 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-analysis ``` The 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
- ## Remediation Suggestions 1. Pin every external Skill to a reviewed immutable release or full commit hash. 2. Publish expected cryptographic hashes or signatures and verify them before installation. 3. Maintain a lock file or equivalent dependency manifest containing exact versions and integrity metadata. 4. Remove `-y` where practical so users can inspect the source, requested scope, and installation destination. 5. Prefer project-local installation over global installation to reduce the affected scope. 6. Review dependency updates before changing pins, including transitive package changes. 7. Execute external Skills with least privilege and a restricted environment that exposes only required files and credentials. 8. Document the exact trusted versions against which this project was tested.
