T08 · Insecure Dependencies
Error
- Location
- skill.md:66
- Finding
- Unverified Remote Skill Archives Are Installed into a Trusted Skill Directory<![CDATA[ ## Vulnerability Details **File Location**: `skill.md`, lines 66-105 **Vulnerability Type**: Unverified remote dependency retrieval and archive extraction **Risk Level**: High ```bash MX_DATA_DOWNLOAD_URL="https://marketdfs.dfcfw.com/file/download/E220260320DRQ9S9.zip" MX_DATA_TEMP_FILE= "/temp/mx_data.zip" MX_DATA_OUTPUT_PATH="~/.openclaw/skills/mx-skills/mx-data/" curl -fSL MX_DATA_DOWNLOAD_URL -o MX_DATA_TEMP_FILE || { echo "下载 mx_data.zip 失败"; exit 1; } unzip -o MX_DATA_TEMP_FILE -d MX_DATA_OUTPUT_PATH || { echo "解压 mx_data.zip 失败"; exit 1; } rm -f MX_DATA_TEMP_FILE # 下载 妙想资讯搜索skill MX_SEARCH_DOWNLOAD_URL="https://marketdfs.dfcfw.com/file/download/E2202603204ELGGZ.zip" MX_SEARCH_TEMP_FILE="/temp/mx_search.zip" MX_SEARCH_OUTPUT_PATH="~/.openclaw/skills/mx-skills/mx-search/" curl -fSL MX_SEARCH_DOWNLOAD_URL -o MX_SEARCH_TEMP_FILE || { echo "下载 mx_search.zip 失败"; exit 1; } unzip -o MX_SEARCH_TEMP_FILE -d MX_SEARCH_OUTPUT_PATH || { echo "解压 mx_search.zip 失败"; exit 1; } rm -f MX_SEARCH_TEMP_FILE # 下载 妙想智能选股skill MX_SELECT_STOCK_DOWNLOAD_URL="https://marketdfs.dfcfw.com/file/download/E1202603204ETIIS.zip" MX_SELECT_STOCK_TEMP_FILE="/temp/mx_select_stock.zip" MX_SELECT_STOCK_OUTPUT_PATH="~/.openclaw/skills/mx-skills/mx-select-stock/" curl -fSL MX_SELECT_STOCK_DOWNLOAD_URL -o MX_SELECT_STOCK_TEMP_FILE || { echo "下载 mx_select_stock.zip 失败"; exit 1; } unzip -o MX_SELECT_STOCK_TEMP_FILE -d MX_SELECT_STOCK_OUTPUT_PATH || { echo "解压 mx_select_stock.zip 失败"; exit 1; } rm -f MX_SELECT_STOCK_TEMP_FILE # 下载 妙想自选股管理skill MX_SELFSELECT_DOWNLOAD_URL="https://marketdfs.dfcfw.com/file/download/E220260320556PGW.zip" MX_SELFSELECT_TEMP_FILE="/temp/mx_selfselect.zip" MX_SELFSELECT_OUTPUT_PATH="~/.openclaw/skills/mx-skills/mx-selfselect/" curl -fSL MX_SELFSELECT_DOWNLOAD_URL -o MX_SELFSELECT_TEMP_FILE || { echo "下载 mx_selfselect.zip 失败"; exit 1; } unzip -o MX_SELFSELECT_TEMP_FILE -d MX_SELFSELECT_OUTPUT_PATH || { echo "解压 mx_selfselect.zip 失败"; exit 1; } rm -f MX_SELFS ...[truncated 3082 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Publish immutable, versioned artifacts rather than mutable or opaque download references. 2. Provide a trusted manifest containing a SHA-256 or stronger digest for every ZIP. 3. Verify each digest before extraction and terminate installation on any mismatch. 4. Digitally sign the manifest or artifacts and verify signatures against a pinned publisher key. 5. Download to a private directory created with `mktemp -d`, with permissions restricted to the current user. 6. List and validate archive entries before extraction. Reject absolute paths, `..` traversal components, device files, and symbolic or hard links. 7. Extract into a staging directory, validate the expected file set, and atomically move the verified result into the Skill directory. 8. Correct all shell variable expansions and path handling, including using `"${VARIABLE}"` and `"${HOME}/..."`. 9. Review the contents of every downloaded Skill package independently before allowing OpenClaw to load it. ]]>
