Back to skill

Security audit

Website Screenshot API - Full-Page PNG of Any URL

Security checks for vulnerabilities and agentic risk

Overview

This skill is a clearly disclosed helper for sending a user-specified public URL to Scavio to receive a screenshot, with no hidden code, persistence, or unrelated access.

Install only if you are comfortable using Scavio as a third-party screenshot service. Treat SCAVIO_API_KEY as a secret, expect requested URLs to be sent to Scavio, and be aware that successful captures consume credits, especially ultra mode.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1. Capture a full-page screenshot (normal tier, 1 credit)
shot = requests.post(f"{BASE}/api/v1/extract/screenshot", headers=HEADERS,
    json={"url": "https://example.com"}).json()

data = shot["data"]

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1. Capture a full-page screenshot (normal tier, 1 credit)
shot = requests.post(f"{BASE}/api/v1/extract/screenshot", headers=HEADERS,
    json={"url": "https://example.com"}).json()

data = shot["data"]

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

curl:

bash
curl -s https://api.scavio.dev/api/v1/extract/screenshot \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","mode":"normal"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

curl:

bash
curl -s https://api.scavio.dev/api/v1/extract/screenshot \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","mode":"normal"}'