T09 · Insecure Skill Coding Practices
- Location
SKILL.md:49- Finding
Unverified Remote Persona Content Installed as Trusted Agent Instructions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 49-68
Vulnerability Type: Unvalidated remote content installation
Risk Level: HighVulnerable Code
md Construct the download URL:https://agent-souls.com{url}SOUL.md # Chinese https://agent-souls.com{url}SOUL.en.md # English
text Where `{url}` is the `url` field from search.json (e.g. `/real_world/confucius/`). Use `WebFetch` to download the raw content of the chosen SOUL file. ### Step 4: Backup & Install Before replacing, always back up the existing SOUL.md: 1. Check if `SOUL.md` exists in the current working directory. 2. If it exists, create `.soul_backups/` directory if it doesn't exist, then: - **First time only**: if `.soul_backups/SOUL.md.original` does **not** exist, copy SOUL.md to `.soul_backups/SOUL.md.original`. This preserves the user's original persona and is never overwritten. - **Every time**: copy SOUL.md to `.soul_backups/SOUL.md.<slug>` where `<slug>` is the soul's unique identifier extracted from the `url` field. 3. Write the downloaded content to `SOUL.md` in the current working directory.Technical Analysis
The skill obtains a path from the remotely maintained
search.jsonindex, constructs a download URL from that value, downloads the resulting document, and writes it directly toSOUL.md. The installed file is intended to become trusted agent persona instructions after the user resets the conversation.The workflow does not require:
- Cryptographic signature or checksum verification.
- Pinning to a reviewed, immutable version.
- Validation that the index path has an allowed format.
- Enforcement of the expected origin after URL resolution or redirects.
- Content-size or structure limits.
- Inspection for prompt injection, safety-policy overrides, or sensitive tool requests.
- A preview of the complete document before installation.
HTTPS protects ...[truncated 1847 chars]
- Remediation
View remediation
Remediation Suggestions
- Distribute persona documents through signed, immutable releases and verify a trusted signature before installation.
- Pin each approved persona version to a cryptographic digest and reject content whose digest does not match.
- Validate the index
urlagainst a strict relative-path allowlist, such as an expected category and slug pattern. Reject absolute URLs, traversal sequences, query manipulation, fragments, encoded separators, and unexpected characters. - Enforce HTTPS and the exact
agent-souls.comorigin both before and after redirects. Prefer disabling redirects. - Apply document size limits and validate that the response is a plain Markdown persona document.
- Scan downloaded content for instruction overrides, requests for secrets, unauthorized tool use, external data transmission, and attempts to modify safety constraints.
- Display the complete downloaded content, source URL, version, and verified digest to the user before installation.
- Require explicit confirmation after the preview and immediately before replacing
SOUL.md. - Install first to a temporary file in the same directory, validate it, and then perform an atomic replacement.
- Retain the existing backup and rollback controls, but clearly state that backups provide recovery rather than authenticity or prevention.
