T09 · Insecure Skill Coding Practices
- Location
scripts/garmin_cli.py:41- Finding
Garmin Password Stored in Plaintext and Exposed Through Command-Line Arguments
- Content
View full analysis
login ``` The documentation states that these credentials are saved in: ```text ~/.config/garmin-cn/credentials.json ``` ### Technical Analysis The account password is serialized directly into a JSON file without encryption or integration with an operating-system credential store. File mode `0600` reduces exposure to other local users, but it does not protect the password from: - Malicious software or processes running as the same user. - Accidental inclusion in backups, support bundles, or home-directory archives. - Disclosure through local filesystem compromise. - Theft after compromise of the user account. The parent configuration directory is created without an explicit restrictive mode. Although the credential file is changed to `0600` after writing, there is a short interval between file creation and `chmod` during which the effective permissions depend on the process umask. The password is also accepted as a positional command-line argument. Depending on the operating system and shell, it may be visible in shell history, process listings, terminal logs, automation logs, or audit records. Network authentication itself is consistent with the declared Garmi ...[truncated 1317 chars]- Remediation
View remediation
