T05 · Unauthorized Access and Privilege Escalation
- Location
distribution-manifest.json:2- Finding
Documented Write and Tool-Execution Behavior Exceeds Declared Package Capabilities
- Content
View full analysis
Vulnerability Details
File Location:
distribution-manifest.json:2-6; related operational instructions inSKILL.md:34-36,SKILL.md:66-67, andSKILL.md:72
Vulnerability Type: Capability declaration mismatch and least-privilege violation
Risk Level: MediumVulnerable Code
distribution-manifest.json:2-6:json "capabilities": [ "inline-delivery", "canonical-state-read" ], "capability_ceiling": "lite",SKILL.md:34-36:markdown - **Reads**: exported or pasted comment/DM/mention batches (User-provided — closed platforms have no compliant keyless inbox read); per-channel SLA tiers, cadence commitments, voice-card pointer, and `ugc-permissions.md` status from `memory/channels/` (registry-owned); public-surface replies/mentions via keyless connectors (`bluesky.py`, `fediverse.py`, `discourse.py`, `hn.py`) where a public API exists; prior triage logs in `memory/social/engagement-inbox-manager/`. - **Writes**: the triage report and draft-reply queue to `memory/social/engagement-inbox-manager/`; dated permission entries and intra-day activity lines submitted as proposal events to `memory/events/channels.ndjson` via an authorized `operation: propose` request to `registry-events.py` (never to registry records directly). - **Promotes**: tripped escalation rows and expiring or missing UGC permissions to `memory/open-loops.md` (ask before writing); repeat-offender and advocate patterns as candidates for the registry's advocate path — never directly to `advocate-roster.md`.SKILL.md:66-67:markdown 7. **Run the UGC curation-and-rights mode** — hashtag-consent flow: identify the asset, send the human a ready-to-paste consent ask, capture the explicit yes with an evidence link, then submit the permission entry (creator, content ID, scope organic-vs-paid, channels, duration, compensation, expiry, evidence link) as an authorized `operation: propose` request through `registry-events.py ...[truncated 4070 chars]- Remediation
View remediation
Remediation Suggestions
- Update
distribution-manifest.jsonto declare every required capability explicitly, including persistent state writes and local tool invocation, using capability names supported by the host platform. - If the
litecapability ceiling does not permit these operations, remove the write and script-execution instructions or publish the skill under an appropriate capability profile. - Require explicit user confirmation immediately before each persistent write, including proposal-event submission and open-loop updates.
- Bundle the required tooling in an auditable package, or pin the exact trusted implementation by path, version, and cryptographic digest.
- Configure the host to allow writes only to the documented paths and to deny arbitrary filesystem access.
- Validate and schema-check every event submitted to
registry-events.py; enforce idempotency, authorization, size limits, and safe treatment of user-controlled text. - Add automated release checks that compare manifest capabilities against behavior documented in
SKILL.md, failing publication when undeclared reads, writes, network access, or tool execution are detected. - Preserve the existing prohibition on direct writes to canonical channel records and enforce that restriction at the filesystem or tool-policy layer rather than relying only on instructions.
- Update
