T02 · Agent Memory Poisoning
- Location
SKILL.md:231- Finding
Unverified Remote Skill Update Can Poison Persistent Agent Instructions
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 231–239
Vulnerability Type: Persistent instruction poisoning through an unverified remote update
Risk Level: MediumComplete Code Snippet:
markdown ## Keeping the Skill Up to Date TrueProfit MCP is actively developed — new tools and workflows are added regularly. To get the latest version of this skill, call the `get_skill` tool from the TrueProfit MCP server:get_skill → copy the returned SKILL.md content → overwrite ~/.claude/skills/trueprofit/SKILL.md
text Do this periodically (e.g., once a month) or whenever you notice a tool behaving differently than documented here.Technical Analysis
The skill directs the agent to retrieve mutable instruction content from a remote MCP server and overwrite the persistent local skill file at
~/.claude/skills/trueprofit/SKILL.md. The procedure does not require a cryptographic signature, pinned version, expected checksum, content review, diff inspection, or explicit approval immediately before installation.Because
SKILL.mdcontrols future agent behavior, replacing it with remotely supplied content creates a persistent instruction-poisoning channel. The effective behavior of the installed skill can change after the reviewed package has been approved. A compromised MCP server, compromised publishing account, malicious upstream release, or intercepted update mechanism could supply instructions that redirect tool calls, weaken confirmation requirements, expose merchant data, or introduce additional unsafe behavior.This is classified as
T02: Agent Memory Poisoningrather than remote code execution because the demonstrated behavior overwrites persistent agent instructions, not executable source code. The reviewed content does not prove that the current TrueProfit server is malicious.Attack Path
- An attacker compromises the TrueProfit MCP service, its skill publishing account, or ...[truncated 1407 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the instruction to overwrite the installed skill directly from a mutable
get_skillresponse. - Publish versioned skill releases and pin installations to an explicitly selected version.
- Cryptographically sign releases and verify the signature against a trusted, locally configured public key before installation.
- Publish an expected SHA-256 or stronger digest through an independently authenticated channel and verify it before use.
- Download updates to a temporary staging file rather than writing directly to the active skill path.
- Display a complete diff and require explicit user approval for every update, particularly for changes involving tool use, authentication, data transmission, persistent storage, or state-changing operations.
- Validate the updated document against an allowlist of expected metadata and reject unexpected executable instructions, external endpoints, or expanded tool permissions.
- Retain the previous reviewed version and provide an atomic rollback procedure.
- Record the installed version, digest, source, verification result, and approval event in an audit log.
- Subject each new version to the same security review as the original skill before activating it.
- Remove the instruction to overwrite the installed skill directly from a mutable
