T05 · Unauthorized Access and Privilege Escalation
- Location
distribution-manifest.json:2- Finding
Persistent Memory Writes Are Not Declared by the Package Capability Manifest
- Content
View full analysis
Vulnerability Details
File Location:
distribution-manifest.json:2-6; conflicting write behavior inSKILL.md:39-40andSKILL.md:70
Vulnerability Type: Capability declaration mismatch and least-privilege violation
Risk Level: MediumVulnerable Code
distribution-manifest.json:2-6declares only inline delivery and canonical state read capabilities:json "capabilities": [ "inline-delivery", "canonical-state-read" ], "capability_ceiling": "lite",However,
SKILL.md:39-40directs the agent to write to persistent and shared memory:markdown - **Writes**: a user-facing placement + reputation-trend report plus a reusable SEND-`S` placement snapshot to `memory/email/inbox-placement-monitor/`. - **Promotes**: placement regressions (a provider dropping below the inbox threshold, a Postmaster/SNDS reputation downgrade, a spam-complaint rate crossing 0.1%) and the current placement snapshot to `memory/hot-cache.md` and `memory/open-loops.md`; propose durable sending-domain / IP / warming decisions as pending-decision items — do not write `decisions.md` directly.SKILL.md:70further specifies the persistent write workflow:markdown After delivering, ask "Save these results for future sessions?" If yes, write the placement + reputation-trend report and the reusable SEND-`S` placement snapshot to `memory/email/inbox-placement-monitor/YYYY-MM-DD-<domain-or-topic>.md` — see [skill-contract.md §Save Results Template](../../../references/skill-contract.md). Store the current run's placement so it becomes the next run's baseline. Promote placement regressions and the current snapshot to `memory/hot-cache.md` and add unresolved regressions to `memory/open-loops.md`. Do not write memory without asking.Technical Analysis
The package manifest serves as the machine-readable declaration of the privileges a host should grant to the skill. It declares canonical state read access but does not declare persistent state-write a ...[truncated 2949 chars]
- Remediation
View remediation
Remediation Suggestions
- Add the precise persistent state-write capability required by the host's manifest schema. Do not rely solely on prose in
SKILL.mdto disclose write behavior. - Restrict default writes to the skill-specific namespace:
memory/email/inbox-placement-monitor/
- Require separate, explicit consent before promoting content into shared state:
memory/hot-cache.mdmemory/open-loops.md
- Present the exact destination files and a preview of the proposed content before writing.
- Convert imported telemetry into a strict structured schema containing only expected fields, such as provider names, numeric rates, reputation states, timestamps, and source labels.
- Do not copy raw report text, embedded instructions, markup, or unknown fields into persistent memory.
- Treat state-write denial as a supported execution mode: return the report inline and clearly state that no baseline was persisted.
- Add automated validation that compares all documented filesystem and state mutations against the capabilities declared in
distribution-manifest.json. - If the package profile does not permit canonical state writes, remove the write and promotion instructions rather than depending on runtime permission escalation.
- Add the precise persistent state-write capability required by the host's manifest schema. Do not rely solely on prose in
