Back to skill

Security audit

Website Screenshot (By ScreenshotOne)

Security checks for vulnerabilities and agentic risk

Overview

The skill does take screenshots as advertised, but it can send private pages, cookies, headers, authorization data, and captures to ScreenshotOne without adequate warnings or explicit controls.

Review this skill before installing. Use it only for public or approved targets by default, avoid passing production cookies, authorization headers, custom headers, or internal URLs, and treat ScreenshotOne and any configured storage bucket as recipients of the captured content and request context. Disable implicit invocation or require explicit confirmation if your environment handles sensitive sites.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:91
Finding

ScreenshotOne API Key Exposed Through Process Arguments and URL Query Parameters

Content
View full analysis
" \ --data-urlencode "url=" \ --data-urlencode "access_key=${SCREENSHOTONE_ACCESS_KEY}" \ --data-urlencode "format=png" \ --data-urlencode "=" \ "https://api.screenshotone.com/take" ``` The same credential-handling pattern also appears in the examples at lines 43–46, 54–61, and 70–77. ### Technical Analysis The command expands `SCREENSHOTONE_ACCESS_KEY` directly inside a command-line argument. The expanded plaintext credential can consequently be exposed to local users or processes that are permitted to inspect process command lines. The use of `curl --get` additionally causes all `--data-urlencode` fields, including `access_key`, to be appended to the request URL as query parameters. Although the request is transmitted over HTTPS, query strings can still be recorded by URL-aware components such as API gateway logs, reverse-proxy logs, monitoring systems, debugging output, shell tracing facilities, or provider-side request telemetry. This is an insecure credential-handling pattern because possession of the access key may be sufficient to authenticate ScreenshotOne API requests. No hardcoded credential was found in the repository; the risk arises when the documented command is executed with a real environment variable. ### Attack Path 1. A user exports a valid ScreenshotOne credential in `SCREENSHOTONE_ACCESS_KEY`. 2. The agent executes the documented `curl` command. 3. The shell expands the environment variable into the plaintext `--data-urlencode` process argument. 4. A local attacker with sufficient process-inspection access reads the active curl command line, or an operator retrieves a logged request URL co ...[truncated 1136 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs users to send arbitrary target URLs and optional request context such as cookies, headers, authorization, and proxy settings to ScreenshotOne, a third-party API, but never warns that page content and sensitive request data may be transmitted off-platform. In an agent context, this omission can cause unintentional disclosure of internal URLs, authenticated content, or secrets when users apply the examples to non-public sites.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This example explicitly sends a user-supplied URL and the access key to ScreenshotOne's external API. External transmission is expected for the skill's purpose, but in this context it is still a real security concern because the skill lacks guardrails warning against use with confidential or internal targets.

Content

Scanner excerpt · SKILL.md (reported line 48)May include surrounding context.

--data-urlencode "url=https://example.com"
--data-urlencode "access_key=${SCREENSHOTONE_ACCESS_KEY}"
--data-urlencode "format=png"
"https://api.screenshotone.com/take"

text

Take a full-page screenshot with a larger viewport:

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This full-page screenshot example transmits target page data to an external provider, potentially increasing exposure because full-page captures can include more sensitive on-screen information than viewport-only screenshots. The surrounding skill context makes this more dangerous because it normalizes sending arbitrary sites to the API without a privacy or data-handling warning.

Content

Scanner excerpt · SKILL.md (reported line 62)May include surrounding context.

--data-urlencode "full_page=true"
--data-urlencode "viewport_width=1440"
--data-urlencode "viewport_height=2200"
"https://api.screenshotone.com/take"

text

Wait for content and hide UI noise before capture:

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This example sends a target URL plus content-manipulation parameters to a third-party screenshot service. Although the call is intentional, the skill context increases risk because options like hidden selectors and delayed capture may be used on logged-in or sensitive pages, yet the skill provides no warning about externalizing that content.

Content

Scanner excerpt · SKILL.md (reported line 77)May include surrounding context.

--data-urlencode "delay=2"
--data-urlencode "block_cookie_banners=true"
--data-urlencode "hide_selectors=.chat-widget,.newsletter-modal"
"https://api.screenshotone.com/take"

text

## Workflow

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

The generic template is more dangerous than the concrete examples because it invites arbitrary option insertion and the skill later highlights sensitive parameters including cookies, headers, authorization, and proxy. That creates a clear path for agents or users to exfiltrate authenticated request context and protected page content to ScreenshotOne without any cautionary language.

Content

Scanner excerpt · SKILL.md (reported line 99)May include surrounding context.

--data-urlencode "access_key=${SCREENSHOTONE_ACCESS_KEY}"
--data-urlencode "format=png"
--data-urlencode "="
"https://api.screenshotone.com/take"

text

## Option Selection

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill enables allow_implicit_invocation without any visible trigger narrowing, approval gate, or scoping constraints. That increases the chance the agent will invoke an external screenshot-taking capability automatically on loosely related prompts, which can lead to unintended outbound requests, capture of sensitive internal URLs, or unreviewed handling of user-supplied targets.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The reference explicitly promotes active-page modification through injected JavaScript (scripts=<js>) and user-like interactions (click, hover) without warning that these actions can change application state, trigger purchases or submissions, or execute arbitrary code in the page context. In a screenshot-taking skill, these capabilities go beyond passive capture and can lead users to perform unintended actions against third-party sites.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The reference lists authorization, cookies, headers, proxying, and external storage options without warning that these may transmit secrets, session tokens, or captured content to a third-party service and optionally onward to S3-compatible storage. In practice, this can cause credential leakage, unauthorized session replay, or unintentional persistence of sensitive screenshots and metadata outside the local environment.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.