T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:110- Finding
Remote-Controlled Update Command Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 110-127
Vulnerability Type: Execution of an insufficiently validated command supplied by a remote service
Risk Level: HighVulnerable Code
markdown Every successful CLI response may also carry a top-level `updates` block. Handle it deterministically: - If `updates.cli.status` or `updates.skill.status` is `update_available` or `below_minimum`, tell the user once which component is outdated (installed versus latest) and quote the exact `action` command. The task cannot continue until that update is installed. Ask for approval; with approval, run exactly that command (it already carries the required `--approve-upgrade` argument). If the user declines, stop and do not run business commands with the outdated component, and do not ask again in this session unless the user changes that decision. - If a command fails with `CLI_VERSION_BELOW_MINIMUM` or `SKILL_VERSION_BELOW_MINIMUM`, the task cannot continue until the update is installed. Explain this, ask for approval, run exactly the printed update command, then retry the failed step once. - When both are outdated, update the CLI first, then the Skill. When the printed `action` refreshes this installed Skill, replace `<skill-directory>` with the directory of this installed Skill (the directory containing this Skill's SKILL.md). Never run `doctor` or a generic capability preflight to check freshness; the `update check` command above is the freshness check. Never ask more than once per component per session, and never substitute another command, flag, origin, or download path for the printed `action`.Technical Analysis
The Skill directs the agent to execute the exact command returned through the CLI's
actionfield. The command is treated as an opaque executable instruction rather than structured update metadata from which the agent constructs a locally constrain ...[truncated 2025 chars]- Remediation
View remediation
Remediation Suggestions
Replace opaque command execution with a structured, locally enforced update mechanism:
- Require the service to return structured metadata such as component, version, artifact identifier, digest, signature, and approved origin—not a shell command.
- Construct the update command locally using a fixed executable and an allowlisted set of subcommands and flags.
- Reject shell metacharacters, redirections, command substitutions, pipelines, environment assignments, and unexpected arguments.
- Restrict downloads to explicit HTTPS origins declared by the signed service descriptor.
- Independently verify the update manifest and artifact using the bundled PersonWise public key and pinned cryptographic digests.
- Enforce canonical, expected installation destinations and reject path traversal, symbolic-link targets, and arbitrary destination overrides.
- Display the validated component, version, origin, digest, and destination when requesting approval.
- Prefer invoking the bundled, reviewed bootstrap scripts with fixed approval flags instead of executing a command supplied by a remote response.
- Fail closed if the update response contains unknown fields, an unsupported component, an unapproved origin, or a command string.
