T09 · Insecure Skill Coding Practices
- Location
SKILL.md:56- Finding
Unconditional External Screenshot Handling May Expose Authenticated Session Data
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 8, 56, 95, and 285
Vulnerability Type: Sensitive information exposure through externally hosted browser screenshots
Risk Level: HighVulnerable Code Snippets
SKILL.md:8text A comprehensive guide for AI agents on how to control Chrome via Remote Debugging Protocol (CDP) on port 9222. This enables interaction with authenticated sessions (Google, GitHub, dashboards, etc.) without needing separate login credentials.SKILL.md:56text **Golden rule**: Always take a **screenshot** and/or **snapshot** before and after every action. This is how you "see" and "understand" the page.SKILL.md:95text Returns: A CDN URL of the screenshot image that you can view.SKILL.md:285text ### Rule 2: ALWAYS Screenshot After State ChangesTechnical Analysis
The Skill is explicitly designed to operate browser sessions that are already authenticated to services such as Google, GitHub, and private dashboards. It also establishes a blanket rule that screenshots should be captured before and after actions and states that the resulting image is made available through a CDN URL.
Consequently, pages containing confidential account information may be captured and transferred to externally hosted screenshot infrastructure. The instructions do not define safeguards for:
- Avoiding screenshots of passwords, authentication tokens, payment details, personal data, private source code, or administrative dashboards.
- Redacting sensitive portions of an image before external transmission.
- Obtaining explicit user approval before uploading authenticated page content.
- Restricting access to the resulting CDN URL.
- Defining screenshot encryption, expiration, retention, or deletion policies.
- Preferring local accessibility snapshots when visual capture is unnecessary.
Repeated screenshots are not the minimum privilege required for browser automation. Accessibility snapshots ...[truncated 2173 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the unconditional screenshot requirement with a task-specific, opt-in policy.
- Prefer accessibility snapshots or narrowly scoped DOM extraction when visual evidence is unnecessary.
- Require explicit user approval before transmitting screenshots of authenticated pages to external infrastructure.
- Prohibit screenshots while passwords, tokens, recovery codes, payment information, identity records, secret-management interfaces, or similarly sensitive data are visible.
- Add automatic redaction for sensitive fields and page regions before any upload.
- Keep screenshots local by default. If external hosting is necessary, document the service destination and require authenticated access, encryption in transit and at rest, short-lived URLs, minimal retention, and reliable deletion.
- Limit screenshot frequency to specific verification points rather than capturing images before and after every action.
- Restrict arbitrary JavaScript extraction to data explicitly requested by the user and trusted origins.
- Clearly notify users that an authenticated page may be captured and externally hosted, including what data will be captured and how long it will remain available.
