T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:33- Finding
Persistent Storage of Sensitive Contract Data Exceeds Declared Capabilities
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:33-35, 67; related capability declaration indistribution-manifest.json:2-6
Vulnerability Type: Undeclared persistent state mutation and excessive retention of sensitive data
Risk Level: MediumVulnerable Code
SKILL.md:33-35:markdown - **Reads**: campaign brief, agreed deliverables, compensation figure, platform list, usage-rights and exclusivity needs, any pasted incoming agreement. If `memory-management` is active, prior outreach terms and budget caps load from the hot cache. For rostered creators, read `memory/creators/<handle-slug>.md` — the [creator-registry](../../../protocol/creator-registry/SKILL.md) roster record — for existing exclusivity windows, contract status, usage-rights history, and standard-range anchors before drafting or reviewing. - **Writes**: drafted agreement or review memo to `memory/influencer/contract-helper/YYYY-MM-DD-<topic>.md`. Signed terms (usage-rights window, exclusivity scope, final rate) also go as a one-line update to `memory/events/creators.ndjson` via an authorized `operation: propose` request to `registry-events.py` — only `creator-registry` writes canonical roster records. - **Promotes**: durable facts (signed terms, usage-rights window, exclusivity scope, payment schedule) to `memory/hot-cache.md`.SKILL.md:67:markdown Save the drafted agreement or review memo to `memory/influencer/contract-helper/YYYY-MM-DD-<topic>.md`, and promote durable signed terms to the hot cache. Once terms are signed, also submit them (usage-rights window, exclusivity scope, final rate) as a one-line update to `memory/events/creators.ndjson` via an authorized `operation: propose` request to `registry-events.py` for [creator-registry](../../../protocol/creator-registry/SKILL.md) to reconcile into the roster record.The package manifest declares only the following capabilities in `distribution-manifest.json ...[truncated 3264 chars]
- Remediation
View remediation
Remediation Suggestions
- Update the distribution manifest to declare every required persistent state-write capability accurately. Installation should fail closed when the host cannot grant those capabilities.
- Default to inline delivery and make persistence optional. Obtain explicit, informed user consent before saving an agreement or promoting any term into shared memory.
- Apply data minimization:
- Do not place physical addresses, email addresses, signatures, payment instructions, or complete contract text in the hot cache.
- Store only the minimum operational fields needed for an explicitly approved workflow.
- Prefer references or opaque record identifiers over duplicated contract content.
- Separate confidential contract storage from broadly shared agent memory and enforce per-user, per-workspace, and per-skill access controls.
- Encrypt sensitive state at rest and ensure logs and event streams do not contain unnecessary personal or financial information.
- Define retention periods and provide deletion and correction mechanisms that remove all duplicated copies, including archive, cache, event-stream, and registry records.
- Validate authorization at runtime before each write. Text stating that an operation is “authorized” must not substitute for a host-enforced permission check.
- Document exactly which fields are written, where they are stored, which components can read them, and how long they remain available.
- Add automated conformance checks ensuring that instructions cannot request filesystem or canonical-state mutations outside the manifest's declared capability ceiling.
