T09 · Insecure Skill Coding Practices
- Location
scripts/wechat_articles.py:35- Finding
Unrestricted URL Fetching Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This WeChat article reader is useful but needs review because it can be steered to fetch non-WeChat or internal URLs and write screenshots to arbitrary writable paths.
Install only in an isolated, low-privilege environment with outbound network controls. Prefer a version that validates https://mp.weixin.qq.com URLs, blocks private or localhost destinations and unsafe redirects, confines screenshots to a dedicated output directory, and pins dependencies before using it on sensitive machines or networks.
scripts/wechat_articles.py:35Unrestricted URL Fetching Enables Server-Side Request Forgery
scripts/wechat_articles_playwright.py:35Caller-Controlled Screenshot Path Allows Arbitrary Writable File Overwrite
SKILL.md:25Unpinned Third-Party Dependencies Create a Supply-Chain Exposure
This finding is credible because the manifest claims a complete WeChat article workflow while also exposing an undeclared screenshot option, which expands data collection beyond the stated purpose. Undeclared capabilities and overstated descriptions reduce transparency and can lead to collection of more content than users or the platform expect.
This finding is credible because the manifest claims a complete WeChat article workflow while also exposing an undeclared screenshot option, which expands data collection beyond the stated purpose. Undeclared capabilities and overstated descriptions reduce transparency and can lead to collection of more content than users or the platform expect.
The skill explicitly requires network-capable packages and is designed to fetch external WeChat content, but it does not declare any tool scope or allowed-tools boundary. That creates a governance gap: the runtime may permit outbound requests without clear least-privilege constraints, making misuse or unintended data egress harder to control and audit.
The catch-all language says the skill should trigger even when the user does not explicitly mention WeChat, as long as the request 'involves' public-account content acquisition. In practice, that can hijack unrelated or ambiguous workflows and silently expand use of networked scraping behavior, which is risky because the skill fetches external content and may invoke browser automation.
The activation rule covers vague requests for information from the broader WeChat ecosystem, which can cause the skill to trigger for loosely related prompts rather than only explicit article-reading tasks. Overbroad activation increases the chance of unnecessary browsing, external requests, and data retrieval outside user intent, especially in an agentic environment where skill routing is automatic.
This code file contains natural-language strings entirely in Chinese in the module docstring and CLI usage text, with no indication that the user can choose another language. The policy flags skills that force a specific language or locale without opt-in, and no region-specific justification is provided here.
The module docstring and command help text are written entirely in Chinese, indicating the skill is designed for a single language/locale with no opt-in or alternative. Under the policy, language constraints should either be optional for users or clearly justified as region-specific.
该文件是代码文件,因此只需检查适用于代码的 SQP-2 和所有文件适用的 SQP-3。L044 将语言/区域偏好硬编码为中文,属于自然语言/locale 约束;文件中没有看到用户可选择语言或对该限制作出明确、正当的说明。
No suspicious patterns detected.