T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:65
- Finding
- Mutable Remote OpenAPI Schema Controls Generated CLI Behavior## Vulnerability Details **File Location**: `SKILL.md`, lines 65-69 **Vulnerability Type**: Supply-chain risk through an unpinned remote dependency **Risk Level**: Medium ```bash command -v whatsapp-openapi-cli # If missing, create it: uxc link whatsapp-openapi-cli https://graph.facebook.com/v25.0 --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/whatsapp-openapi-skill/references/whatsapp-cloud.openapi.json whatsapp-openapi-cli -h ``` ### Technical Analysis The documented setup command instructs UXC to generate or link the WhatsApp CLI using an OpenAPI schema retrieved from the mutable `main` branch of an external GitHub repository. The URL is not pinned to a reviewed commit, release artifact, or cryptographic digest. Although the project includes a local audited schema at `references/whatsapp-cloud.openapi.json`, the default setup does not use it. Consequently, the effective API definition consumed at installation time may differ from the version reviewed with this package. An upstream repository compromise or unauthorized schema change could modify server metadata, exposed operations, parameters, or request construction. The bearer credential is bound to `graph.facebook.com` and `/v25.0`, which limits some credential-redirection scenarios. However, this binding does not preserve the integrity of operations generated from the remote schema. The same vulnerable pattern also appears in `references/usage-patterns.md`, lines 5-7: ```bash uxc link whatsapp-openapi-cli https://graph.facebook.com/v25.0 \ --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/whatsapp-openapi-skill/references/whatsapp-cloud.openapi.json ``` ### Attack Path 1. An attacker compromises the referenced upstream repository or obtains permission to modify its `main` branch. 2. The attacker changes `whatsapp-cloud.openapi.json`, altering API operations, parameters, request bodies, or server-related metadata. 3. A user follows the documented ...[truncated 1186 chars]
- Remediation
- ## Remediation Suggestions 1. Use the schema bundled with the reviewed skill package instead of retrieving it from a remote branch: ```bash uxc link whatsapp-openapi-cli https://graph.facebook.com/v25.0 \ --schema-url ./references/whatsapp-cloud.openapi.json ``` If UXC requires an absolute path or file URI, resolve the package directory and supply the corresponding local URI. 2. If remote retrieval is operationally required, pin the URL to an immutable reviewed commit rather than `main`: ```text https://raw.githubusercontent.com/holon-run/uxc/<reviewed-commit>/skills/whatsapp-openapi-skill/references/whatsapp-cloud.openapi.json ``` 3. Publish and verify a SHA-256 digest before passing the downloaded schema to UXC. Abort setup if verification fails. 4. Update both `SKILL.md` and `references/usage-patterns.md` so all installation examples use the same pinned or local schema. 5. Extend `scripts/validate.sh` to reject schema URLs containing mutable branch names such as `main` and to verify that documentation references either the bundled schema or an approved immutable commit. 6. Retain the existing host, HTTPS scheme, and `/v25.0` path credential binding as defense in depth.
