T09 · Insecure Skill Coding Practices
- Location
scripts/run.py:23- Finding
Untrusted API Base URL Can Exfiltrate Credentials and Submitted Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to perform the advertised article-review task, but users should review it because it sends submitted content and API credentials to a remote service and its runner can be redirected to an arbitrary API endpoint.
Install only if you are comfortable sending article drafts, URLs, uploaded-document references, audience details, goals, and brand constraints to the AI Skills service. Keep AISKILLS_BASE_URL at the default trusted endpoint unless you fully control the replacement service, use HTTPS, and avoid submitting confidential material without approval.
scripts/run.py:23Untrusted API Base URL Can Exfiltrate Credentials and Submitted Content
The skill requires an API key and explicitly calls an external AI Skills API, but it does not declare any tool scope or allowed-tools boundaries. This creates an authorization and transparency gap: a host system or user cannot easily constrain or audit the skill's access to environment variables and network use, increasing the chance of overbroad execution or unintended data handling.
The description uses broad trigger language like questions about whether copy can 'move people' without clear activation boundaries. In systems that auto-select skills from natural-language descriptions, this can cause the skill to trigger on loosely related prompts and route user content to an external API unexpectedly.
The usage guidance lists broad scenarios and input types but does not define exclusion conditions, making accidental activation more likely. Because the skill accepts article text, files, and URLs and sends them to a remote service, ambiguous routing can expose sensitive draft content or internal documents to third parties without clear user intent.
The documentation explains that URLs, files, and text are provided to the runner and sent to the AI Skills API, but it does not clearly warn users that potentially sensitive article drafts and linked content will leave the local environment and be transmitted to an external service. This is a meaningful data-handling weakness because users may submit unpublished copy, confidential marketing plans, or proprietary documents under the assumption the analysis is local.
The display name, short description, and default prompt are entirely in Chinese, which indicates the skill is oriented to a specific language without any visible opt-in or alternative locale handling. Under the policy rule, forcing a language or locale without user choice is a natural-language policy concern.
User-facing labels, placeholders, descriptions, enum values, and validation messages are entirely in Chinese throughout the schema, which effectively enforces a specific language for users. The file does not provide any opt-in, alternative locale, or explanation that this skill is intentionally limited to a Chinese-only context.
The script sends the provided params payload to a remote HTTPS endpoint and includes API and tenant identification headers, but there is no confirmation prompt, print/log disclosure before transmission, or docstring/comment warning users that their input and associated account context will be sent over the network. For a code file, this is a safety-relevant external data transmission lacking visible user disclosure in the file itself.
The billing error message is hard-coded in Chinese, which imposes a specific language on users regardless of their locale or preferences. The file does not provide any opt-in, fallback, or documented justification for this language restriction.