T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:50
- Finding
- Documentation Instructs Users to Print Stored Asana Credentials## Vulnerability Details **File Location**: `SKILL.md:50-56` **Vulnerability Type**: Credential exposure through unsafe configuration-verification instructions **Risk Level**: Medium ### Vulnerable Code Snippet ```bash **Verify what is stored:** ```bash openclaw config get skills.entries.asana openclaw config get skills.entries.asana.enabled openclaw config get skills.entries.asana.apiKey ``` ``` The same unsafe instructions also appear in `README.md:49-55`: ```bash **Verify what is stored:** ```bash openclaw config get skills.entries.asana openclaw config get skills.entries.asana.enabled openclaw config get skills.entries.asana.apiKey ``` ``` ### Technical Analysis The instructions explicitly tell users to retrieve the entire skill configuration and the `apiKey` field after storing an Asana Personal Access Token there. Unless the OpenClaw CLI independently redacts these values, these commands can print the PAT to standard output. Terminal output may be retained in shell transcripts, CI logs, support recordings, agent conversation context, or other monitoring systems. This undermines the documentation's stated goal of keeping secrets out of prompts and ad hoc shell history. The PAT transmission performed by `scripts/asana.mjs` is otherwise restricted to the fixed official Asana API endpoint and is necessary for the declared functionality. ### Attack Path 1. A user stores an Asana PAT in `skills.entries.asana.apiKey` as documented. 2. The user follows the documented verification procedure. 3. `openclaw config get skills.entries.asana` or `openclaw config get skills.entries.asana.apiKey` returns the stored credential if the CLI does not redact it. 4. The credential becomes part of terminal output, an agent transcript, CI logs, or captured session data. 5. A party with access to that output extracts the PAT. 6. The exposed PAT is submitted as a Bearer token to the Asana API. ### Impact Assessment An attacker obtaining the PAT can act with the Asana pe ...[truncated 494 chars]
- Remediation
- ## Remediation Suggestions 1. Remove instructions that retrieve the full skill configuration or the `apiKey` value. 2. Retain only non-sensitive verification, such as: ```bash openclaw config get skills.entries.asana.enabled ``` 3. If credential-presence verification is required, provide a command that reports only whether a credential is configured, never its value. 4. Add an explicit warning that generic configuration reads may reveal stored secrets in terminal output, logs, or agent transcripts. 5. Ensure OpenClaw redacts `apiKey`, `ASANA_PAT`, `ASANA_TOKEN`, and equivalent secret fields from all configuration output. 6. Update both `SKILL.md:50-56` and the duplicate instructions in `README.md:49-55`. 7. Advise users who have already printed a PAT into retained output to revoke it, create a replacement token, and remove the exposed logs where feasible.
