T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_article.py:129- Finding
Unrestricted Browser Navigation Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its WeChat article-saving purpose, but it runs a browser against an unchecked URL with the host machine's network access, which needs user review before installation.
Install only if you are comfortable with a skill that launches Chromium and saves fetched article content locally. Use it only with trusted https://mp.weixin.qq.com links, run it in an isolated environment if possible, specify an output directory, and prefer pinned dependency versions before installation.
scripts/fetch_article.py:129Unrestricted Browser Navigation Enables Server-Side Request Forgery
README.md:10Unpinned Third-Party Dependencies and Browser Artifacts
The README describes the skill entirely in Chinese and specifies behavior around fetching WeChat public-account articles, implying a fixed language/locale context without offering any user choice or opt-in. Under the policy, language or locale constraints should be explicit and justified or presented as optional to the user.
The skill performs local file writes by saving fetched article content and images, but it does not declare any tool scope or permissions boundary. This weakens reviewability and increases the chance that an agent invokes file-writing behavior without clear policy constraints or user awareness, especially if output paths or filenames are influenced by external content.
The --no-images flag and related parameter names/documentation imply that the script normally downloads article images. In reality, html_to_markdown only preserves image URLs in Markdown placeholders and save_article merely creates an images directory; there is no network or file logic that fetches image bytes, so the documentation/CLI intent contradicts actual behavior.
The README states that the agent will automatically save the fetched article as a local file, but it does not clearly warn users that local filesystem writes will occur or where files will be created. In an agent environment, implicit file creation can surprise users, clutter the workspace, or overwrite existing content if paths are not made explicit elsewhere.
The skill description explains that it fetches and converts articles, but it does not prominently warn that it will persist downloaded text and images to local storage. This can surprise users and lead to unintended retention of untrusted remote content on disk, which is a meaningful safety and privacy issue even if the behavior is expected by the implementation.
This code creates the output directory, may create an images subdirectory, and writes a Markdown file to disk. Although it prints the saved path after completion, there is no prior disclosure in comments, docstrings, or argument help that running the script will modify the local filesystem.
No suspicious patterns detected.