T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/web_screenshot.py:29- Finding
Unrestricted URL Access Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent webpage screenshot skill, but it gives users unrestricted network fetch and file-write control without enough scoping or safety disclosure.
Install only if you are comfortable with the skill making outbound requests from the agent environment and saving screenshots to caller-selected paths. Avoid using it on internal, localhost, metadata, authenticated, or confidential URLs, and prefer running it in an isolated environment with a restricted output directory and pinned dependencies.
scripts/web_screenshot.py:29Unrestricted URL Access Enables Server-Side Request Forgery
scripts/web_screenshot.py:42Caller-Controlled Screenshot Path Permits Arbitrary File Overwrite
SKILL.md:8Unpinned Playwright and Chromium Dependencies Create Supply-Chain Risk
The trigger phrases are broad and include common user language such as '帮我截图' and generic requests to capture a page, which can cause the skill to activate in contexts the user did not clearly intend. In a tool that performs outbound web requests and captures rendered page content, unintended invocation can lead to accidental access to sensitive internal URLs or screenshots of confidential pages.
The skill documentation does not warn users that taking a screenshot causes the local environment to make a request to the supplied URL and render its contents, which may expose internal endpoints, authenticated pages, or sensitive on-screen data in the resulting image. This omission is especially relevant because the skill supports arbitrary URLs and saving screenshots to disk, increasing the chance of capturing confidential content without informed consent.
The file's title, docstring, and user-facing error text are written only in Chinese, which imposes a specific language on users. Under the stated policy, forcing a specific language without offering user choice is a natural-language policy violation.
This Python code file performs a network operation via page.goto(url, ...), which causes the local environment to contact a remote host. Aside from the terse Chinese docstring saying it captures a webpage screenshot, there is no confirmation prompt, logging, or explicit warning to the user that executing the skill will connect to the provided URL.