T09 · Insecure Skill Coding Practices
- Location
SKILL.md:18- Finding
Hardcoded API Credential in Skill Documentation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:18
Vulnerability Type: Hardcoded secret / exposed API credential
Risk Level: HighVulnerable Code Snippet
markdown - **API Key**: `sk_e0c26b0e9826d17c309bd5030cbe95ef04ed33cf4f05c03dae0f23358ee5e956`Technical Analysis
A credential-shaped API key is embedded directly in the distributable Skill documentation. Any user or system with access to the project can read and copy it without authentication.
If the exposed key is active and accepted by SkillPay or an associated API, an attacker could reuse it outside the intended Skill. Secrets committed to project files must be considered compromised because removing them from the current version does not remove copies from package archives, caches, logs, forks, or version-control history.
Attack Path
- An attacker downloads or reads the Skill package.
- The attacker opens
SKILL.mdand extracts the key from line 18. - The attacker identifies the service or API that accepts the credential.
- The attacker submits requests using the exposed key.
- If the key remains valid, requests execute under the associated account's authorization and billing context.
Exploitation depends on the key being active and on its server-side permissions.
Impact Assessment
A valid exposed key may permit unauthorized API use, paid-quota consumption, billing abuse, rate-limit exhaustion, and impersonation of the associated service account. The exact scope is limited to the permissions assigned to the credential and cannot be determined from the available file. No evidence indicates access to host operating-system privileges or cryptocurrency private keys.
- Remediation
View remediation
Remediation Suggestions
- Revoke and rotate the exposed key immediately.
- Remove the credential from
SKILL.mdand replace it with a clearly invalid placeholder such asyour_api_key. - Remove the secret from version-control history, release archives, registries, caches, and published Skill packages where feasible.
- Load operational credentials from environment variables or a managed secret store rather than source files or documentation.
- Apply least-privilege permissions, spending limits, rate limits, expiration, and service restrictions to replacement credentials.
- Review provider access and billing logs for unauthorized use of the exposed key.
- Add automated secret scanning to pre-commit and CI workflows to prevent recurrence.
