T09 · Insecure Skill Coding Practices
- Location
SKILL.md:31- Finding
Auth0 Client Secrets Exposed Through Command-Line Arguments
- Content
View full analysis
.auth0.com --client-id --client-secret # CI/CD ``` Related patterns also occur in `references/cli.md:42-48`, while `tests/evals.json:187-192` explicitly expects a supplied client secret to be inserted into the generated command. ### Technical Analysis The documented machine-login workflow passes the Auth0 client secret directly as a command-line argument. Depending on the execution environment, this can expose the secret through: - Shell history files. - CI/CD command logs. - Agent conversation transcripts and tool-call records. - Process inspection interfaces available to other local users or monitoring agents. - Terminal scrollback, debugging output, or copied command examples. The same general pattern is used for initial user passwords in `SKILL.md:112-113` and private-key content in `references/cli.md:46-48`. Although these are legitimate Auth0 CLI options, presenting direct command-line insertion as the default pattern lacks safeguards against credential persistence and disclosure. ### Attack Path 1. A user supplies an Auth0 client secret to the agent or substitutes it for the documented placeholder. 2. The agent generates or executes an `auth0 login` command containing the plaintext secret. 3. The command is retained in shell history, a CI log, process telemetry, or an agent transcript. 4. An attacker with access to the affected history, log, telemetry system, or transcript extracts the secret. 5. The attacker authenticates as the associated machine-to-machine application. 6. The attacker exercises the Auth0 Management API permissions granted to ...[truncated 586 chars]- Remediation
View remediation
`. - Warn users that command-line arguments may be recorded in shell history, process telemetry, and logs. - Where supported, prefer a protected credential file or private-key path over inline secret or key content. - Recommend restrictive file permissions for credential files and temporary disabling of shell history when no safer input mechanism exists. - Add explicit cleanup and secret-rotation guidance if a credential has already appeared in a transcript or log. - Update evaluation cases so they verify placeholders or secure secret injection rather than requiring literal secret values in commands. ]]>
