T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_weixin.py:50- Finding
Unrestricted Browser Navigation Enables Internal Resource Retrieval
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This WeChat article fetcher mostly matches its stated purpose, but it needs review because its script can browse and save content from any supplied URL, not only WeChat links.
Use this only with trusted mp.weixin.qq.com article URLs, preferably in an isolated browser/network environment. Expect it to install browser automation dependencies and to save both article text and a full-page screenshot in the chosen output directory or current working directory.
scripts/fetch_weixin.py:50Unrestricted Browser Navigation Enables Internal Resource Retrieval
scripts/requirements.txt:1Unpinned Third-Party Dependency and Mutable Driver Acquisition
The skill invokes a script that writes extracted article content and screenshots to disk, but the manifest declares no explicit tool scope or permissions. This weakens containment and review because consumers cannot easily tell that local file writes are part of the skill's behavior, increasing the chance of unintended data persistence or misuse in broader execution contexts.
The skill’s stated purpose is extracting WeChat article text, but it also captures and saves a full-page browser screenshot. Screenshots can include more data than the article body alone, such as account state, recommendations, popups, QR codes, or other rendered content, creating unnecessary data collection and persistence beyond the declared function.
The skill description explains the outputs but does not clearly warn users that article text and screenshots will be saved as local files. This can cause accidental storage of potentially sensitive content on the host system, especially if users assume the action is transient or view-only.
The skill description suggests transient content extraction, but the implementation persistently writes the fetched article to a local Markdown file. This creates unexpected local data retention, which can expose fetched content to other processes or users on the host and may violate least-surprise or data-minimization expectations.
The dependency is specified with a lower bound only (DrissionPage>=4.0.0), which allows future major or minor releases to be installed without review. This creates supply-chain and stability risk because a malicious or compromised upstream release, or an incompatible breaking change, could be pulled into the skill automatically.
DrissionPage>=4.0.0
No suspicious patterns detected.