T09 · Insecure Skill Coding Practices
- Location
README.md:11- Finding
WorldQuant Credentials Stored in an Unprotected Plaintext File
- Content
View full analysis
Vulnerability Details
File Location:
README.md:11-13
Additional Locations:SKILL.md:44-47,references/README_en.md:145-150
Vulnerability Type: Plaintext sensitive-data storage
Risk Level: MediumVulnerable Code Snippet:
bash # Configure credentials echo '["email", "password"]' > credential.txtThe equivalent instructions in
SKILL.mdare:bash # Create credential file echo '["your.email@worldquant.com", "your_password"]' > credential.txtThe reference documentation also directs users to create the following file:
json ["your.email@worldquant.com", "your_password"]Technical Analysis
The documented setup procedure writes a WorldQuant email address and password directly into an unencrypted file. It does not instruct the user to restrict file permissions, exclude the file from source control, use a secret manager, or remove the file after use.
The network use of these credentials for authentication with the WorldQuant platform is consistent with the Skill's declared simulation and submission functionality. No evidence was found that the credentials are deliberately transmitted to an unrelated third party. The vulnerability instead concerns excessive local exposure before the legitimate authentication request occurs.
A plaintext credential file may be accessible to other local users or processes depending on the working directory and process umask. It can also be captured by source-control commits, backups, support bundles, container build contexts, or broadly mounted Docker volumes.
Attack Path
- A user follows the documented setup procedure and creates
credential.txt. - The password remains stored as plaintext in the project directory.
- The file is exposed through permissive filesystem permissions, a repository commit, a backup, a container build context, a shared volume, or another local process.
- An attacker reads the email ...[truncated 791 chars]
- A user follows the documented setup procedure and creates
- Remediation
View remediation
Remediation Suggestions
- Do not instruct users to store account passwords directly in the project directory.
- Prefer an operating-system credential store, a dedicated secret manager, or Docker secrets.
- If file-based credentials are unavoidable:
- Create the file with permissions limited to its owner, such as mode
0600. - Store it outside the source tree.
- Mount it read-only into the container.
- Ensure it is never copied into an image layer.
- Create the file with permissions limited to its owner, such as mode
- Add
credential.txtand equivalent secret files to.gitignoreand.dockerignore. - Document credential rotation and immediate revocation procedures.
- Avoid examples that place real secrets directly in shell commands, since shell history may retain the command.
- Prefer short-lived tokens or narrowly scoped platform credentials if WorldQuant supports them.
