T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:64
- Finding
- Mutable Remote OpenAPI Schema Controls Privileged LINE API Operations## Vulnerability Details **File Location**: `SKILL.md:16-17`, `SKILL.md:64-67`, and `references/usage-patterns.md:5-9` **Vulnerability Type**: Mutable remote dependency without version or integrity pinning **Risk Level**: Medium ### Vulnerable Code `SKILL.md:14-18`: ```markdown - `uxc` is installed and available in `PATH`. - Network access to `https://api.line.me`. - Access to the curated OpenAPI schema URL: - `https://raw.githubusercontent.com/holon-run/uxc/main/skills/line-openapi-skill/references/line-messaging.openapi.json` - A LINE Messaging API channel access token. ``` `SKILL.md:64-68`: ```markdown 1. Use the fixed link command by default: - `command -v line-openapi-cli` - If missing, create it: `uxc link line-openapi-cli https://api.line.me --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/line-openapi-skill/references/line-messaging.openapi.json` - `line-openapi-cli -h` ``` `references/usage-patterns.md:5-9`: ```bash command -v line-openapi-cli uxc link line-openapi-cli https://api.line.me \ --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/line-openapi-skill/references/line-messaging.openapi.json line-openapi-cli -h ``` ### Technical Analysis The skill includes a locally reviewable OpenAPI document, but its installation workflow instead instructs UXC to retrieve the schema from the mutable GitHub `main` branch. The URL is not pinned to an immutable commit, release artifact, or verified content digest. The retrieved schema defines the methods, paths, parameters, and request bodies exposed through `line-openapi-cli`. Consequently, changes made upstream after this skill has been reviewed can alter the effective API command surface without changing the audited package. Because the generated client operates with a LINE channel bearer token, an unauthorized or compromised upstream schema could expose unexpected operations agai ...[truncated 2029 chars]
- Remediation
- ## Remediation Suggestions 1. Use the bundled, reviewed schema at `references/line-messaging.openapi.json` instead of retrieving a remote copy during setup. 2. If remote retrieval is required, replace the `main`-branch URL with a URL pinned to a specific reviewed Git commit. 3. Publish and verify a SHA-256 or stronger cryptographic digest before allowing UXC to consume the downloaded schema. 4. Store the verified schema locally and configure the generated client from that immutable local copy. 5. Add validation that rejects schema changes to the expected server host, path allowlist, HTTP methods, and security scheme. 6. Extend `scripts/validate.sh` to fail when documentation contains schema URLs referencing mutable branches such as `main` or `master`. 7. Require explicit user confirmation for every state-changing operation, including webhook endpoint updates and tests, not only message push and reply operations. 8. Re-review and rotate the pinned schema version through a controlled release process whenever new API operations are needed.
