T09 · Insecure Skill Coding Practices
- Location
main.py:8- Finding
Unvalidated API Base URL Enables SSRF and AccessKey Disclosure
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears intended for Lingxing ERP order lookup, but its configurable API host can send ERP authentication data to an arbitrary URL if misconfigured or tampered with.
Review before installing. Use only trusted, least-privilege Lingxing API keys, store them in a secret manager or protected environment configuration, and keep BASE_URL fixed to the legitimate Lingxing API host unless you fully trust the configuration source. This does not show malicious behavior, but the endpoint configurability creates a real credential-disclosure and SSRF risk if someone can alter the skill configuration.
main.py:8Unvalidated API Base URL Enables SSRF and AccessKey Disclosure
The skill documentation explicitly requires sensitive API credentials (ACCESS_KEY and SECRET_KEY) but provides no guidance on secure storage, redaction, least-privilege use, or avoiding disclosure in prompts/logs. In an agent ecosystem, this can lead users to paste long-lived secrets directly into insecure configuration, chat history, or shared environments, increasing the chance of credential leakage and downstream API compromise.
The code reads ACCESS_KEY and SECRET_KEY from configuration, which are sensitive credentials, but the file provides no user-facing comment, docstring, prompt, or logging explaining that the skill requires and uses these secrets. Under the code-file criteria, sensitive credential access should have at least some disclosure unless clearly covered by the skill description.
The skill sends access_key, timestamp, pagination parameters, and a derived signature to an external API via requests.get, but there is no confirmation prompt, logging, print statement, or explanatory docstring/comment warning the user that data is being transmitted off-system. For a code file, outbound network transmission is safety-relevant and should include some form of visible disclosure unless clearly documented elsewhere.
The file presents all user-facing documentation exclusively in Chinese and does not indicate that the skill is region-specific or provide any language choice. Under the policy rule, forcing a specific language without opt-in can be a natural-language policy violation.
The manifest uses Chinese-only natural-language descriptions such as "领星 ERP 数据查询" and "查询今日订单" without stating that the skill is intended only for Chinese-speaking users or a China-specific deployment. Under the policy rule, forcing a specific language without opt-in or clear justification is a natural-language locale constraint.
No suspicious patterns detected.