T09 · Insecure Skill Coding Practices
- Location
index.js:85- Finding
Configured API Credentials Are Exposed in Policy Query Results
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a mock policy-query helper, but its documented API-key setup can cause configured secrets to be returned and cached in query results.
Review before installing. Do not configure real API keys as dataSources unless the implementation is fixed to keep credentials out of returned objects and caches. Treat the package as mock/demo quality: it does not actually fetch live policy data despite claiming real-time/API-backed collection.
index.js:85Configured API Credentials Are Exposed in Policy Query Results
The README states that the skill performs real-time policy data collection and supports configurable external APIs, but it does not warn users that queries, prompts, or related metadata may be transmitted to third-party services. This omission can lead users to unintentionally send sensitive business questions or operational context to external providers without informed consent.
The README encourages invocation through broad natural-language prompts like asking the agent to analyze markets or monitor policy changes without defining scope, data boundaries, or required confirmation steps. In agent ecosystems, overly broad triggers can cause unintended tool use, excessive data access, or action on ambiguous requests, especially when combined with external data retrieval and analysis capabilities.
The top-level documentation says the skill supports six languages: zh-CN, en-US, fr-FR, de-DE, it-IT, and es-ES. However, the translation table and language switch logic only implement zh-CN and en-US, so the documentation actively overstates actual behavior rather than merely omitting detail.
Line L010 sets the default language to 'zh-CN' whenever the caller does not explicitly provide a language. The policy requires avoiding forced language or locale selection unless the user is given a choice or the constraint is clearly justified, and this file applies Chinese by default rather than prompting or negotiating language preference.
The document is written entirely in Chinese and the language section lists only Simplified Chinese and US English, with 'automatic language detection and switching' but no explicit user choice or opt-in flow. This can conflict with a language/locale policy if the skill implicitly determines or constrains user language rather than clearly offering a selection.
Line L004 claims support for zh-CN, en-US, fr-FR, de-DE, it-IT, and es-ES, but the translation table and supported language list only implement zh-CN and en-US later in the file. This mismatch can mislead users about locale availability and may result in fallback behavior that does not respect the user's chosen language.
The manifest description at L04 is entirely in Chinese and does not indicate that users can choose another language. Under the policy rule, forcing a specific language without opt-in can be a natural-language policy violation unless the locale restriction is clearly documented and justified.
This test file includes user-facing console output and comments primarily in Chinese, while also explicitly switching the skill between zh-CN and en-US. For a general-purpose skill, embedding a fixed language in visible messaging can violate locale-choice policy unless the language constraint is clearly justified or user-selected.