T03 · Remote Payload Retrieval and Execution
- Location
skill.md:32- Finding
Mutable Remote Skill Installed Without Integrity Verification
- Content
View full analysis
Vulnerability Details
File Location:
skill.md:32-55
Vulnerability Type: Remote payload retrieval through an unpinned, mutable URL
Risk Level: HighVulnerable Code
bash set -e SKILL_NAME="openqbook-agent" SKILL_URL="https://www.openqbook.com/skill.md" if [ -n "${OPENQBOOK_SKILL_DIR:-}" ]; then BASE_DIR="$OPENQBOOK_SKILL_DIR" elif [ -n "${AGENT_SKILLS_DIR:-}" ]; then BASE_DIR="$AGENT_SKILLS_DIR" elif [ -n "${XDG_DATA_HOME:-}" ]; then BASE_DIR="$XDG_DATA_HOME/agent-skills" elif [ -d ".agent-skills" ]; then BASE_DIR=".agent-skills" elif [ -d ".skills" ]; then BASE_DIR=".skills" else BASE_DIR="$HOME/.agent-skills" fi TARGET_DIR="$BASE_DIR/$SKILL_NAME" mkdir -p "$TARGET_DIR" curl -fsSL "$SKILL_URL" -o "$TARGET_DIR/SKILL.md"Technical Analysis
The installation procedure downloads a Skill definition from a mutable remote URL and writes it directly into the Agent's active skill directory. It does not pin a release version, validate a cryptographic signature, or compare the downloaded file against an expected digest.
Although HTTPS protects the connection in transit under normal conditions, it does not ensure that the content currently hosted at the URL is identical to the version that was audited. The effective payload can change after review. Because the instructions tell the user to reload the Agent runtime's skill registry, a subsequently modified file can become trusted Agent instructions or executable Skill code.
Attack Path
- An attacker compromises the OpenQBook website, DNS path, TLS infrastructure, publishing account, or content deployment system.
- The attacker replaces
https://www.openqbook.com/skill.mdwith a malicious Skill definition. - A user executes the documented installation procedure.
curlwrites the attacker-controlled content directly to the runtime's Skill directory asSKILL.md.- The user reloads the Agent run ...[truncated 597 chars]
- Remediation
View remediation
Remediation Suggestions
- Distribute the audited Skill inside a versioned package rather than retrieving the current file from a mutable URL.
- Pin downloads to an immutable, version-specific release artifact.
- Publish a SHA-256 digest through a separately protected channel and verify it before installation.
- Prefer a cryptographic signature tied to a documented publisher key.
- Download into a temporary file, validate it, set restrictive permissions, and atomically move it into place only after successful verification.
- Refuse installation if signature or digest verification fails.
- Avoid automatically replacing an existing installed Skill without explicit user confirmation and a reviewable change summary.
