T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:119
- Finding
- Mutable Remote OpenAPI Schema Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:119-122`; duplicated in `references/usage-patterns.md:5-9` **Vulnerability Type**: Mutable remote dependency without version or integrity pinning **Risk Level**: Medium ### Vulnerable Code `SKILL.md:119-122` ```bash 1. Use the fixed link command by default: - `command -v dingtalk-openapi-cli` - If missing, create it: `uxc link dingtalk-openapi-cli https://api.dingtalk.com/v1.0 --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/dingtalk-openapi-skill/references/dingtalk-messaging.openapi.json` - `dingtalk-openapi-cli -h` ``` `references/usage-patterns.md:5-9` ```bash command -v dingtalk-openapi-cli uxc link dingtalk-openapi-cli https://api.dingtalk.com/v1.0 \ --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/dingtalk-openapi-skill/references/dingtalk-messaging.openapi.json dingtalk-openapi-cli -h ``` ### Technical Analysis The Skill bundles a curated OpenAPI schema locally, but its primary setup instructions direct `uxc link` to retrieve another copy from the mutable GitHub `main` branch. The URL is neither pinned to an immutable commit nor protected by an expected cryptographic digest. An OpenAPI schema controls the operations, parameters, HTTP methods, and paths exposed by the generated CLI. Consequently, the behavior available after installation may differ from the files that were reviewed during this audit. HTTPS protects transport integrity but does not protect against a compromised upstream repository, malicious maintainer change, or accidental modification to the branch. This is narrower than arbitrary remote code execution because the retrieved asset is a declarative API schema and the configured base host remains `https://api.dingtalk.com/v1.0`. Nevertheless, a changed schema could expose additional DingTalk operations or alter request behavior beyond the four operations present in the a ...[truncated 1305 chars]
- Remediation
- ## Remediation Suggestions 1. Use the bundled schema instead of downloading a remote copy during setup. 2. If remote retrieval is necessary, pin the GitHub URL to a reviewed immutable commit SHA rather than `main`. 3. Publish and verify a SHA-256 digest before allowing UXC to consume the schema. 4. Fail closed when the digest or expected schema identity does not match. 5. Validate an explicit allowlist of paths and methods after retrieval. 6. Keep the DingTalk credential binding restricted to HTTPS, `api.dingtalk.com`, and the narrowest viable path prefix. 7. Update both `SKILL.md` and `references/usage-patterns.md` so users cannot inadvertently follow the unsafe mutable-branch workflow.
