T09 · Insecure Skill Coding Practices
- Location
cmd/config.go:24- Finding
API credentials and OAuth tokens are exposed through command-line arguments and plaintext configuration storage
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent hotel-search CLI, but it under-discloses and weakly protects Amadeus API secrets and cached OAuth tokens.
Review this skill before installing. It appears intended to search hotels through Amadeus rather than steal data, but you should avoid entering real secrets as command-line arguments, prefer a user-local install path over sudo, inspect or restrict permissions on ~/.config/hotel-pricer/config.yaml, and rotate Amadeus credentials if they may have been exposed through shell history or plaintext config backups.
cmd/config.go:24API credentials and OAuth tokens are exposed through command-line arguments and plaintext configuration storage
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
const (
// APIBaseURL is the base URL for the Amadeus test environment.
APIBaseURL = "https://test.api.amadeus.com"
// tokenURL is the endpoint for obtaining an OAuth2 access token.
tokenURL = APIBaseURL + "/v1/security/oauth2/token"
)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
const (
// APIBaseURL is the base URL for the Amadeus test environment.
APIBaseURL = "https://test.api.amadeus.com"
// tokenURL is the endpoint for obtaining an OAuth2 access token.
tokenURL = APIBaseURL + "/v1/security/oauth2/token"
)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
const (
// APIBaseURL is the base URL for the Amadeus test environment.
APIBaseURL = "https://test.api.amadeus.com"
// tokenURL is the endpoint for obtaining an OAuth2 access token.
tokenURL = APIBaseURL + "/v1/security/oauth2/token"
)
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
3. **Move the binary to your PATH:**
```bash
sudo mv hotel-pricer /usr/local/bin/
```
## Configuration
The installation instructions tell the user to run sudo mv hotel-pricer /usr/local/bin/, which requires elevated privileges and normalizes root-assisted manual installation of an unverified compiled binary. While moving a binary into a system path is common, encouraging sudo in skill documentation increases the blast radius of mistakes or a compromised build artifact because the action is performed with administrative privileges.
# From the hotel-pricer source directory
go build
sudo mv hotel-pricer /usr/local/bin/
The documentation instructs users to set an API key and secret but does not warn about secure handling, storage location, shell history exposure, or least-privilege treatment of those credentials. In a skill that manages third-party API secrets, omission of credential-safety guidance increases the chance that users will expose secrets in terminal history, logs, screenshots, or insecure local config files.
No suspicious patterns detected.