T09 · Insecure Skill Coding Practices
- Location
scripts/freshrss.sh:27- Finding
FreshRSS API credentials exposed through an unencrypted and unencoded authentication URL
- Content
View full analysis
- Remediation
View remediation
&2 exit 1 ;; esac ``` 2. Use the authentication endpoint's POST capability, if supported by the deployed FreshRSS version, instead of placing credentials in the query string. 3. Apply proper form encoding to both the username and password. Use `curl` facilities such as `--data-urlencode` rather than manually concatenating values. 4. Avoid exposing secrets in process arguments. Supply sensitive request data through standard input, a protected file descriptor, or another mechanism that does not place the expanded password in the command line. If a temporary credential file is unavoidable, create it with restrictive permissions, ensure reliable cleanup with `trap`, and never place it in a shared predictable path. 5. Add transport and HTTP error handling, for example `--fail-with-body --show-error --silent`, and configure reasonable connection and request timeouts. 6. Ensure reverse proxies and FreshRSS access logs do not record authentication request bodies or sensitive query parameters. Rotate the API password if URLs containing it may already have been logged. 7. Consider validating `FRESHRSS_URL` to reject embedded credentials, fragments, control characters, and unexpected URL forms before constructing `API_BASE`. ]]>
