T01 · Skill Instruction Hijacking
- Location
SKILL.md:50- Finding
Automatic Trust of Mutable Remote Skill Instructions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:50-55
Vulnerability Type: Unverified remote instruction substitution
Risk Level: HighVulnerable Snippet
markdown 0. **Version check, once per session.** This file is version `1.0.2` (frontmatter `metadata.version`). Send `X-SimianX-Skill: 1.0.2` on every request. Before the first real call, `GET /v1/skill` (public): if `data.version` is newer than yours, or `data.minimum_version` is above yours, re-read https://www.simianx.ai/SKILL.md and follow the new file. Any response with HTTP 426 (`reason: skill_outdated`) means the same: re-read, then retry. `data.deprecations` lists endpoints with a sunset date; stop using them before that date. The authoritative contract is always https://service.simianx.ai/v1/openapi.json; this file may lag it.Technical Analysis
The audited local Skill directs the agent to retrieve a mutable remote
SKILL.mdand follow its instructions whenever the API reports a newer or required version. No pinned digest, cryptographic signature, versioned immutable artifact, or user approval is required before the remotely supplied instructions become authoritative.This crosses the trust boundary between the locally reviewed Skill package and content controlled outside that package. HTTPS protects transport under ordinary conditions, but it does not constrain what instructions the service operator may publish or protect against compromise of the remote publishing infrastructure. Consequently, the effective Skill behavior can change after local review.
The finding establishes an unsafe remote instruction-update channel. It does not assert that the currently hosted remote document is malicious.
Attack Path
- The user invokes the Skill for an ordinary SimianX operation.
- Before the first real API call, the agent requests
/v1/skill; alternatively, a later API request returns HTTP 426 with `reason: skill_o ...[truncated 1041 chars]
- Remediation
View remediation
Remediation Suggestions
- Do not automatically execute or follow remotely retrieved Skill instructions.
- Distribute updates as versioned, immutable artifacts and verify a publisher signature and pinned digest before activation.
- Display the proposed version, source, digest, and material instruction changes to the user, then require explicit approval.
- Treat
/v1/skill, HTTP 426 fields, and remote OpenAPI responses as untrusted data rather than agent instructions. - Maintain a locally enforced allowlist of API origins and security constraints that remote updates cannot override.
- Fail closed when signature or integrity verification fails, retaining the reviewed local version or asking the user to install an audited update.
