T09 · Insecure Skill Coding Practices
- Location
SKILL.md:168- Finding
GitPad Password Stored in a Predictable Plaintext File
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 168–174
Vulnerability Type: Plaintext credential storage
Risk Level: MediumVulnerable Snippet:
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. **WARNING:** GitPad passwords cannot be recovered. If you lose your password, you lose access to your repos.Technical Analysis
The Skill instructs the agent to persist a reusable GitPad password in the predictable
~/.gitpad_passwordfile and to read that file during later sessions. It does not require an operating-system credential store, encryption, restrictive file permissions, ownership validation, or safeguards against logging and unintended disclosure.A plaintext credential in a known location can be recovered by another process or local user capable of reading the agent's home directory. It may also be exposed through insecure backups, diagnostic bundles, home-directory synchronization, or accidental collection. Because the credential protects code repositories and is described as non-recoverable, disclosure can facilitate repository takeover and downstream supply-chain abuse.
This persistent file is intended to retain a credential, not attacker-controlled behavioral instructions; therefore, it is classified as insecure credential handling rather than agent memory poisoning or system persistence.
Attack Path
- The agent creates or obtains a GitPad password.
- Following the Skill instructions, it writes the password to
~/.gitpad_password. - The credential remains at this predictable path across sessions.
- A malicious local process, another user with sufficient file access, or a system collecting home-directory files reads the plainte ...[truncated 965 chars]
- Remediation
View remediation
Remediation Suggestions
- Store the GitPad credential in an operating-system keychain, agent secret store, or dedicated secrets manager instead of a plaintext home-directory file.
- Retrieve the credential only when GitPad authentication is required, and never include it in logs, prompts, command histories, repository content, or submission posts.
- If file-based storage is unavoidable:
- Create the file atomically with permissions limited to its owner, such as mode
0600. - Ensure the containing directory is not accessible to unrelated users.
- Verify the file is a regular file owned by the expected user before reading it.
- Reject symbolic links and files with unsafe ownership or permissions.
- Exclude the file from backups, synchronization, diagnostics, and source control.
- Create the file atomically with permissions limited to its owner, such as mode
- Prefer scoped and revocable access tokens over a reusable account password if GitPad supports them.
- Document a credential revocation or account-recovery procedure for suspected exposure.
- Remove the instruction to “immediately save” the password unless secure storage and permission checks are guaranteed.
