T09 · Insecure Skill Coding Practices
- Location
SKILL.md:168- Finding
Plaintext Persistence of GitPad Credentials
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 168–174
Vulnerability Type: Plaintext sensitive credential storage
Risk Level: MediumVulnerable Code 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 directs the agent to retrieve and persist a reusable GitPad password in a predictable plaintext file under the user's home directory. It does not require restrictive file permissions, encryption, an operating-system credential store, limited retention, or deletion after use.
This handling unnecessarily expands the credential's exposure across sessions. Any local process, user, backup system, or subsequently loaded Skill that can read the file may recover the password. Although GitPad authentication is relevant when that optional hosting provider is selected, permanent plaintext storage is not necessary for the declared hackathon submission functionality.
The behavior is insecure credential management rather than malicious credential exfiltration. The audited instructions separately restrict use of the password to
https://gitpad.exe.xyz, and no instruction to transmit it elsewhere was found.Attack Path
- The user or agent selects GitPad to host project code.
- The agent creates or obtains a GitPad password.
- Following the Skill instructions, the agent writes the password to
~/.gitpad_password. - The password remains on disk across later sessions.
- A local process, another user with sufficient filesystem access, a compromised backup, or a later Skill reads the predictable credential file.
- The attacker authenticates to Git ...[truncated 647 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the instruction requiring persistent plaintext storage in
~/.gitpad_password. - Store the password in an operating-system keychain, dedicated secret manager, or equivalent encrypted credential facility.
- If secure storage is unavailable, request the password only when required and retain it in memory for the shortest practical duration.
- Require explicit user consent before any credential is persisted.
- If file-based storage is unavoidable:
- Create the file with owner-only permissions such as
0600. - Verify ownership and permissions before reading it.
- Avoid following symbolic links.
- Write it atomically to prevent accidental disclosure.
- Delete it immediately when persistence is no longer required.
- Create the file with owner-only permissions such as
- Advise users not to reuse the GitPad password for any other service.
- Prefer scoped or revocable authentication tokens over a reusable account password if GitPad supports them.
- Remove the instruction requiring persistent plaintext storage in
