T09 · Insecure Skill Coding Practices
- Location
SKILL.md:11- Finding
Potentially Sensitive Task Parameters Stored in a Plaintext Local Cache
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 11-20
Vulnerability Type: Plaintext storage of potentially sensitive task parameters
Risk Level: MediumRelevant Code Snippet:
yaml cachePath: ~/.openclaw/workspace/.path-evolver/workflow-cache.json network: required: true endpoints: - https://clawhub.ai - https://api.github.com security: dataStorage: "Local JSON cache only, no external uploads" sensitiveData: "Cache may contain task parameters; user should review cache contents" networkUsage: "Search queries only send task TYPE (e.g., 'web-search'), NOT task parameters or user data"Technical Analysis
The Skill declares that workflow data is stored in a local JSON file and explicitly acknowledges that the cache may contain task parameters. Task parameters can include access tokens, personal information, private URLs, filesystem paths, account identifiers, message contents, or other confidential values.
The documented design does not define parameter minimization, secret detection, field-level redaction, encryption, restrictive file permissions, or a denylist for sensitive values. Although outbound search queries are described as sanitized, that protection does not address exposure through the local cache.
The project contains no executable implementation, so the actual file permissions and runtime serialization behavior cannot be verified. The vulnerability applies when an Agent or implementation follows the documented persistence behavior and writes raw task parameters to the stated cache.
Attack Path
- A user invokes a tool or workflow using a sensitive parameter, such as a token, private URL, recipient identifier, or confidential task argument.
- Path Evolver records the workflow and its task parameters in
~/.openclaw/workspace/.path-evolver/workflow-cache.json. - The data remains in plaintext for the cache lifetime.
...[truncated 915 chars]
- Remediation
View remediation
Remediation Suggestions
- Store only the minimum required metadata: task category, tool identifier, aggregate success and failure counts, timestamps, and non-sensitive outcome status.
- Do not persist raw prompts, task parameters, command arguments, file contents, URLs containing query secrets, authorization headers, cookies, tokens, or credentials.
- Add a sanitization layer before serialization that detects and removes common secret formats and sensitive field names.
- Use an explicit allowlist of cacheable fields rather than attempting to denylist every possible secret.
- Create the cache directory and file with owner-only permissions, such as directory mode
0700and file mode0600. - Apply the documented expiry policy during both cache reads and writes, and securely remove expired records.
- Provide commands or documented controls allowing users to inspect, disable, clear, or relocate the cache.
- If sensitive values are operationally necessary, store references rather than values or use an operating-system-backed credential store.
- Add automated tests confirming that representative tokens, passwords, authorization headers, private URLs, and personal data are never written to the cache.
