T09 · Insecure Skill Coding Practices
- Location
scripts/ghl_api.py:337- Finding
API credential material is disclosed by the health command
- Content
View full analysis
12 else f" API Key: {API_KEY}") print(f" Location: {LOCATION_ID}") ``` ### Technical Analysis The health command prints the first eight and last four characters of a normal API token. If the token is 12 characters or shorter, it prints the complete token. It also prints the GoHighLevel location identifier. Diagnostic output can be retained in shell history captures, CI logs, agent transcripts, monitoring systems, or support bundles. Even partial secret disclosure unnecessarily reduces the effective secrecy of the token and can help correlate it with material obtained from another source. A short token would be exposed completely. Displaying token content is not necessary to verify whether the credential is configured or whether an authenticated API request succeeds. ### Attack Path 1. An operator or automated agent invokes the `health` command. 2. The command writes token material and the location ID to standard output. 3. An execution environment, agent framework, CI system, or logging service retains that output. 4. An attacker with access to the retained logs extracts the disclosed material. 5. If the complete token was printed, the attacker can authenticate directly to GoHighLevel. If only a fragment was printed, it can assist token identification, correlation, or recovery when combined with another disclosure. ### Impact Assessment For ordinary long tokens, this issue discloses 12 token characters and the associated location identifier but does not independently provide complete authentication. For short tokens, it discloses the complete Bearer credential. A complete credential would provide all GoHighLevel permissions granted to the private integration, potentially includ ...[truncated 137 chars]- Remediation
View remediation
