T09 · Insecure Skill Coding Practices
- Location
scripts/screenshot.py:24- Finding
Arbitrary URL Navigation Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent screenshot tool, but its helper can open arbitrary URLs and file URLs in Chromium without safeguards, which deserves review before use on untrusted input.
Review this skill before installing in environments with access to private networks, local admin consoles, metadata services, or sensitive local files. Use it only with trusted HTML and trusted URLs, preferably in an isolated browser/container with network restrictions, and pin Playwright dependencies if you adopt it.
scripts/screenshot.py:24Arbitrary URL Navigation Enables Server-Side Request Forgery
scripts/screenshot.py:61Unpinned Playwright and Chromium Installation Guidance Creates Supply-Chain Risk
The skill explicitly supports rendering an HTML file path or URL and recommends Playwright navigation with network access, but it does not warn users that rendering may fetch remote resources or access arbitrary URLs. In an agent setting, this can lead to unintended outbound requests, privacy leakage, or access to internal-only endpoints if user-supplied HTML/URLs are rendered without restrictions.
The script accepts arbitrary http/https URLs and loads them in a real Chromium instance, despite being presented primarily as an HTML-to-screenshot utility. This expands the trust boundary from local rendering to live remote content fetching, which can trigger server-side request forgery behavior, unexpected network access, and rendering of attacker-controlled pages in environments that may have access to internal services or metadata endpoints.
The top-level usage string documents the positional input as <html_file>, suggesting local file rendering only. In contrast, the implementation accepts http:// and https:// inputs and navigates to them with Playwright, which is broader behavior than the documented interface describes.
No suspicious patterns detected.