Back to skill

Security audit

CoinAPI OpenAPI Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for read-only CoinAPI market data, but its default setup trusts a changeable remote API schema while using your CoinAPI key.

Review the UXC link command before installing. Prefer using the bundled local OpenAPI schema or an immutable, hash-verified schema URL, keep CoinAPI limits narrow, and monitor API quota or billing. Remove the UXC credential, binding, and CLI link if you no longer use the skill.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:64
Finding
Mutable Remote OpenAPI Schema Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md:16-17`, `SKILL.md:64-68`, `SKILL.md:97`, `references/usage-patterns.md:5-9`, and `references/usage-patterns.md:62-65` **Vulnerability Type**: Mutable, unverified remote dependency **Risk Level**: Medium ### Vulnerable Code `SKILL.md:16-17`: ```markdown - Access to the curated OpenAPI schema URL: - `https://raw.githubusercontent.com/holon-run/uxc/main/skills/coinapi-openapi-skill/references/coinapi-market.openapi.json` ``` `SKILL.md:64-68`: ```markdown 1. Use the fixed link command by default: - `command -v coinapi-openapi-cli` - If missing, create it: `uxc link coinapi-openapi-cli https://rest.coinapi.io --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/coinapi-openapi-skill/references/coinapi-market.openapi.json` - `coinapi-openapi-cli -h` ``` `SKILL.md:97`: ```markdown - `coinapi-openapi-cli <operation> ...` is equivalent to `uxc https://rest.coinapi.io --schema-url <coinapi_openapi_schema> <operation> ...`. ``` `references/usage-patterns.md:5-9`: ```bash command -v coinapi-openapi-cli uxc link coinapi-openapi-cli https://rest.coinapi.io \ --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/coinapi-openapi-skill/references/coinapi-market.openapi.json coinapi-openapi-cli -h ``` `references/usage-patterns.md:62-65`: ```markdown ## Fallback Equivalence - `coinapi-openapi-cli <operation> ...` is equivalent to `uxc https://rest.coinapi.io --schema-url <coinapi_openapi_schema> <operation> ...`. ``` ### Technical Analysis The documented setup retrieves the OpenAPI schema from the mutable GitHub `main` branch. No immutable commit identifier, release tag, content digest, or signature verification is specified. Consequently, the schema consumed when a user creates the CLI may differ from the local schema that was included in and revie ...[truncated 2398 chars]
Remediation
## Remediation Suggestions 1. Use the bundled schema by default: ```bash uxc link coinapi-openapi-cli https://rest.coinapi.io \ --schema-url ./references/coinapi-market.openapi.json ``` If UXC requires a different syntax for local files, use the corresponding local-file option and document the exact command. 2. If remote retrieval is operationally necessary, replace the `main` branch URL with a URL pinned to an immutable Git commit. 3. Publish the expected SHA-256 digest and verify the downloaded schema before passing it to UXC. Abort setup if verification fails. 4. Validate the schema after retrieval using an allowlist that enforces: - The server URL is exactly `https://rest.coinapi.io`. - Only the five documented paths are present. - Only the `GET` method is allowed. - Authentication uses the `X-CoinAPI-Key` header. - No external references or unexpected server overrides are present. 5. Update `scripts/validate.sh` to verify that documentation uses either the local schema or an immutable, integrity-checked remote source. 6. Review and rotate the pinned schema through an explicit release process rather than automatically trusting changes made to a mutable branch.
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The declared description says the skill operates CoinAPI market-data reads through UXC with authentication and read-oriented guardrails. The actual code chunk only validates that the skill package is correctly structured and documented: it checks required files, verifies schema JSON contents, and searches SKILL/openai/usage files for required strings such as link commands, auth header setup, and read-only language. This is a materially different primary purpose. While the script supports the claimed skill by enforcing its packaging and guardrails, the code itself does not implement CoinAPI reads, authentication behavior, or API access.

Static analysis

No suspicious patterns detected.