T09 · Insecure Skill Coding Practices
- Location
scripts/run.py:25- Finding
Unrestricted API Base URL Override Can Expose Credentials and Request Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill’s Douyin hotlist purpose is coherent, but its runner can send the API key and request data to any AISKILLS_BASE_URL value without validating the destination.
Install only if you intend to use the AI Skills hosted API for Douyin hotlist lookup. Keep AISKILLS_BASE_URL unset or set only to the trusted https://ai-skills.ai service, and treat AISKILLS_API_KEY as a paid credential because a bad base URL configuration could expose it.
scripts/run.py:25Unrestricted API Base URL Override Can Expose Credentials and Request Data
The skill requires an API key and invokes a remote API, which means it uses both environment access and network access, yet it does not declare any explicit tool scope such as permissions or allowed-tools. This creates an authorization gap: a host may permit broader execution than intended, making secret access and outbound requests less transparent and harder to govern.
The listed usage scenarios include generic phrases like '现在最热门的是什么' and '今天大家都在关注什么', which are common conversational requests and not narrowly scoped triggers. The file does not provide exclusion conditions or more specific invocation boundaries, increasing the risk of unintended activation.
The skill enables implicit invocation without any visible trigger constraints or narrowing conditions, so the platform may auto-select it in broader contexts than intended. For a skill that surfaces real-time hot topics, ambiguous activation can cause unnecessary data access, unexpected tool use, or prompt-routing into this skill when user intent is not sufficiently clear.
This manifest file uses the question "现在最热门的是什么?" as an invocation phrase, which is broad and could match everyday conversation rather than a narrowly scoped skill request. The file does not provide explicit trigger constraints, exclusions, or negative examples to clarify when this skill should activate versus when it should not.
The visible natural-language fields are presented only in Chinese, including the user-facing question and skill name, with no indication that the user can choose another language or that the skill is intentionally limited to a Chinese-language audience. This may violate language/locale policy expectations when no opt-in or justification is documented.
The billing error path returns a hard-coded Chinese message regardless of the user's language preference. This imposes a specific locale without opt-in and may violate language/locale policy expectations for a general-purpose skill runner.
This code sends the provided params payload to a remote API endpoint and includes tenant identification and API-key-based authentication headers. There is no confirmation prompt, user-facing log, or inline warning in this file that user input and environment-derived metadata will be transmitted over the network.
No suspicious patterns detected.