T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:24- Finding
Persistent State Writes Exceed Declared Skill Capabilities
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:24-25andSKILL.md:77; capability declaration indistribution-manifest.json:2-6
Vulnerability Type: Capability declaration mismatch and unauthorized persistent-state modification
Risk Level: MediumEvidence
SKILL.md:24-25:markdown - **Writes**: a finished report in the audience-appropriate template, saved to `memory/influencer/report-generator/YYYY-MM-DD-<topic>.md`. - **Promotes**: durable verdicts (final ROI/ROAS, top performers, renew/drop calls, headline learnings) to `memory/hot-cache.md`.SKILL.md:77:markdown 5. **Save and promote** — write the finished report to `memory/influencer/report-generator/YYYY-MM-DD-<topic>.md` (paid runs to `memory/ad/report-generator/`). Promote durable verdicts (final ROI/ROAS, top performers, renew/drop calls, headline learnings) to `memory/hot-cache.md`.distribution-manifest.json:2-6:json "capabilities": [ "inline-delivery", "canonical-state-read" ], "capability_ceiling": "lite",Technical Analysis
The manifest declares only inline delivery and canonical-state reading, while the skill instructions explicitly require writing reports and derived judgments to persistent memory. This creates a least-privilege and capability-transparency mismatch: a host or reviewer evaluating the package from its manifest would not expect the skill to modify persistent state.
The report inputs can include campaign spend, revenue, customer counts, creator performance, and other business-sensitive information. The skill also directs the agent to promote generated judgments into the shared
memory/hot-cache.mdstate. If the runtime follows these instructions and provides write-capable tools despite the manifest, user-controlled inputs and model-derived conclusions can persist beyond the current task and become available to later workflows.This is not evidence of exec ...[truncated 1770 chars]
- Remediation
View remediation
Remediation Suggestions
- Update the distribution manifest to declare a narrowly scoped persistent-state write capability if writing reports is required for normal operation.
- If the
liteprofile does not permit state writes, remove the mandatory save-and-promote instructions and return reports through inline delivery only. - Require explicit user consent before persisting campaign data, especially financial, customer, creator, or client information.
- Make hot-cache promotion opt-in rather than automatic, and restrict it to a validated allowlist of non-sensitive fields.
- Isolate stored reports by tenant, user, and campaign to prevent unrelated sessions from reading or modifying them.
- Sanitize user-controlled campaign names before using them in paths, enforce a fixed base directory, and reject traversal sequences or unexpected path separators.
- Define retention and deletion controls for generated reports and cached verdicts.
- Add automated validation ensuring that documented reads and writes do not exceed the capabilities declared in
distribution-manifest.json.
