T09 · Insecure Skill Coding Practices
- Location
SKILL.md:168- Finding
Predictable Plaintext Storage of a GitPad Password
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 168–172
Vulnerability Type: Plaintext credential storage and unnecessary credential access
Risk Level: MediumVulnerable Code
markdown **FIRST**, check for existing credentials at `~/.gitpad_password`. **IF credentials exist:** Use the saved password when authenticating with GitPad. **IF no credentials exist:** After creating a password on GitPad, immediately save it to `~/.gitpad_password` for future sessions.Technical Analysis
The Skill directs the agent to discover, read, and persist a GitPad authentication password in the predictable plaintext file
~/.gitpad_password. It does not require an operating-system credential manager, encryption, restrictive file permissions, ownership validation, redaction from logs, or explicit user approval before accessing an existing credential.A password is a long-lived authentication secret. Storing it at a known path without defined access controls can expose it to other local users, compromised processes, malicious Skills, insecure backups, or diagnostic tooling. Automatically checking the file also grants the Skill access to an existing secret when merely explaining GitPad setup would not require that access, exceeding minimum privilege.
Attack Path
- A user or agent follows the GitPad setup instructions.
- The GitPad password is saved in plaintext at
~/.gitpad_password. - Because secure creation and permission requirements are unspecified, the file may be created with access broader than the account owner.
- A malicious or compromised local process, another Skill, backup collector, or diagnostic tool reads the predictable file.
- The attacker uses the recovered password to authenticate to GitPad.
- The attacker accesses or modifies repositories available to that GitPad identity.
This path requires local filesystem access under an identity able to read the credential file; t ...[truncated 734 chars]
- Remediation
View remediation
Remediation Suggestions
- Store the password in an operating-system credential manager or another encrypted secret store instead of a plaintext file.
- Prefer a scoped, revocable, short-lived token if GitPad supports one.
- Obtain explicit user consent before reading or storing an existing credential.
- If file storage is unavoidable, create the file atomically with owner-only mode
0600, verify its owner and permissions before every read, and reject symbolic links or unexpected file types. - Never print the password or include it in shell history, logs, prompts, generated repositories, submission posts, or error output.
- Document credential rotation, secure deletion, and account-recovery procedures.
- Limit credential access to the authentication operation itself and avoid reading the file during unrelated Skill operations.
