Back to skill

Security audit

CamScanner Detect AI Generated

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims: it sends a user-selected image to CamScanner to check whether it appears AI-generated.

Install only if you are comfortable sending the images you choose to CamScanner for analysis. Avoid using it on highly sensitive personal, legal, medical, or confidential business images unless that external processing is acceptable to you.

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
96% confidence
Finding

This step uploads a user-provided image to an external third-party service, which is a real data egress/privacy risk. Even though the skill discloses the transfer and the transfer is necessary for the feature, the image may contain sensitive personal or confidential content and leaves the local trust boundary.

Content

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

bash
BASE="https://ai-tools.camscanner.com"

IN_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/upload_file/execute" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@/path/to/image.jpg" | jq -r '.tool_result.data.file_id')

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This request sends the uploaded file identifier to the external CamScanner API for analysis, continuing the third-party processing workflow. By itself the file_id is less sensitive than the raw image, but it still represents externally delegated processing and can expose metadata or enable access to previously uploaded content depending on server-side controls.

Content

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

Step 2: Validate Image (Detect AIGC)

bash
curl -sS -X POST "$BASE/v1/tools/validate_image/execute" \
  -H "Content-Type: application/json" \
  -d "{\"file_id\":\"$IN_FILE_ID\",\"validate_mode\":2}"

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This is a second example of the same behavior: transmitting a local image file to a remote service. The core risk is untrusted external handling of potentially sensitive user images, not code execution; the skill context makes this expected but does not eliminate the privacy concern.

Content

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

md
INPUT_IMAGE="/path/to/image.jpg"

# Upload
IN_FILE_ID=$(curl -sS -X POST "$BASE/v1/tools/upload_file/execute" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@$INPUT_IMAGE" | jq -r '.tool_result.data.file_id')

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This validation request transmits the file reference to the third-party service and retrieves analysis results, which is part of the same external data flow. While lower impact than raw file upload, it still confirms that user content is being processed off-platform and may expose workflow metadata.

Content

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

md
--data-binary "@$INPUT_IMAGE" | jq -r '.tool_result.data.file_id')

# Validate and extract key fields
RESULT=$(curl -sS -X POST "$BASE/v1/tools/validate_image/execute" \
  -H "Content-Type: application/json" \
  -d "{\"file_id\":\"$IN_FILE_ID\",\"validate_mode\":2}")

Static analysis

No suspicious patterns detected.