T09 · Insecure Skill Coding Practices
- Location
config.json:1- Finding
Plaintext API Credential Packaged in Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a clear image-analysis purpose, but it ships a plaintext API key and can send images plus credentials to a configurable endpoint.
Review before installing. Only use this with images you are comfortable uploading to a third-party service, remove the packaged config.json key, rotate that exposed credential, and avoid custom endpoints unless they are explicitly trusted and use HTTPS.
config.json:1Plaintext API Credential Packaged in Configuration
agnes_vision.py:77Arbitrary Endpoint Selection Forwards API Credentials and Image Data
The script performs outbound network requests to a remote endpoint and uploads user-provided image data, but the capability is not covered by declared permissions. In a permissioned skill framework this is a real security issue because it bypasses transparency and prevents users or the platform from making an informed trust decision about remote data exfiltration.
The script performs outbound network requests to a remote endpoint and uploads user-provided image data, but the capability is not covered by declared permissions. In a permissioned skill framework this is a real security issue because it bypasses transparency and prevents users or the platform from making an informed trust decision about remote data exfiltration.
The code base64-encodes local images and sends them to a third-party API endpoint without any explicit runtime warning or consent flow. This can leak sensitive visual data, embedded personal information, documents, screenshots, or metadata-bearing content to an external provider, especially if users assume processing is local.
The natural-language instructions, defaults, and user-facing messages are all in Chinese, including the default prompt requesting a Chinese description, with no indication that the user can select another language. This can violate a language/locale policy when a skill imposes one language without opt-in.