T08 · Insecure Dependencies
- Location
SKILL.md:123- Finding
Runtime Use of a Mutable Remote OpenAPI Schema
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:123-127
Additional Location:references/usage-patterns.md:5-9
Vulnerability Type: Supply-chain risk from an unpinned remote schema
Risk Level: MediumVulnerable Code:
markdown 1. Use the fixed link command by default: - `command -v slack-openapi-cli` - If missing, create it: `uxc link slack-openapi-cli https://slack.com/api --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/slack-openapi-skill/references/slack-web.openapi.json` - `slack-openapi-cli -h`The corresponding usage example is:
bash command -v slack-openapi-cli uxc link slack-openapi-cli https://slack.com/api \ --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/slack-openapi-skill/references/slack-web.openapi.json slack-openapi-cli -hTechnical Analysis
The project includes a local, auditable OpenAPI schema, but the documented setup retrieves the effective schema from the mutable
mainbranch of a GitHub repository. The URL is neither pinned to an immutable commit nor protected by a documented integrity digest.The schema defines the available API paths, methods, request parameters, server configuration, and bearer authentication requirements. Consequently, the behavior used at runtime can change after this version of the Skill has been reviewed. Compromise of the upstream repository, its maintainer account, or its publishing workflow could cause users to receive a schema that differs from the audited local file.
This does not directly retrieve and execute native code, so it is best classified as an insecure dependency rather than remote payload execution. Whether a malicious schema could redirect bearer credentials depends on UXC's independent enforcement of the command's Slack base URL and authentication binding. That enforcement is not implemented or verifiable within this project, so credential ...[truncated 1681 chars]
- Remediation
View remediation
Remediation Suggestions
- Use the bundled
references/slack-web.openapi.jsonfile as the default schema source. - If remote retrieval is necessary, pin the URL to an immutable Git commit rather than the
mainbranch. - Publish and verify a SHA-256 digest before accepting the downloaded schema.
- Configure UXC to enforce
https://slack.com/apiindependently of anyserversvalue contained in the schema. - Prevent schemas from changing credential hosts, authentication bindings, or transport destinations.
- Validate the exact permitted operation allowlist after retrieval:
/auth.test/conversations.list/conversations.info/conversations.history/conversations.replies/chat.postMessage/reactions.add
- Fail closed when the schema digest, server origin, security definition, or operation allowlist differs from the reviewed version.
- Use the bundled
