T05 · Unauthorized Access and Privilege Escalation
- Location
skills/image-grid-split/SKILL.md:5- Finding
Atomic media skills request shared visual workspace privileges beyond functional requirements
- Content
View full analysis
Vulnerability Details
File Location:
skills/image-grid-split/SKILL.md:5
Vulnerability Type: Excessive filesystem permissions
Risk Level: HighVulnerable Configuration
yaml metadata: {"openclaw":{"requires":{"bins":["meitu"],"env":["MEITU_OPENAPI_ACCESS_KEY","MEITU_OPENAPI_SECRET_KEY","MEITU_OPENAPI_TOOL_TASK_MODE"],"paths":{"read":["~/.meitu/credentials.json","~/.meitu/tool-registry.json","~/.openclaw/workspace/visual/","./openclaw.yaml"],"write":["~/.openclaw/workspace/visual/","./output/"]}},"primaryEnv":"MEITU_OPENAPI_ACCESS_KEY"}}Equivalent broad read/write declarations occur across many narrowly scoped atomic image, video, audio, and text skills.
Technical Analysis
The grid-splitting operation only requires access to:
- The input image supplied by the user.
- Meitu authentication material needed by the CLI.
- The
meituexecutable. - A dedicated output directory.
It does not need general read/write access to
~/.openclaw/workspace/visual/or read access to project-wide./openclaw.yaml. The shared visual workspace may contain user profiles, references, preferences, rules, observations, memories, and outputs from unrelated sessions.Requesting directory-wide read and write privileges violates least privilege. If the runtime enforces the frontmatter declarations as capability grants, any behavior executed under this skill receives access to data unrelated to grid splitting. The same pattern materially increases the blast radius of prompt injection, workflow errors, or compromise of the external CLI.
Credential-file access is legitimate for authenticated CLI calls. The excessive portion is the shared-memory and project-context access granted to a narrow transformation skill.
Attack Path
- A user invokes the grid-splitting skill with an attacker-influenced image URL or task description.
- The runtime grants the permissions declared in the skill metadata.
- The skill ...[truncated 899 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove
~/.openclaw/workspace/visual/and./openclaw.yamlfrom atomic skills that do not explicitly use profile or project context. - Restrict output writes to a skill-specific directory such as
./output/image-grid-split/. - Grant access to the user-selected input file or URL only, rather than a shared directory.
- Separate authentication from skill filesystem permissions by allowing the trusted CLI or runtime credential broker to load credentials.
- Generate each skill's permission manifest from an explicit per-workflow data-flow definition.
- Add automated checks that reject unrelated workspace permissions for stateless media transformations.
- Apply the same least-privilege review to all atomic skills containing the equivalent metadata pattern.
- Remove
