Back to skill

Security audit

Perler Pattern

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed image-to-bead-pattern generator, but users should be aware it can install Python packages and fetch images from URLs.

Install only if you are comfortable with it installing Python image-processing libraries and fetching any image URL you provide. Prefer local image files or trusted public URLs, and use an isolated environment if package provenance or internal-network request exposure matters.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:37
Finding

Unpinned Runtime Dependency Installation

Content
View full analysis
/dev/null || pip3 install opencv-python-headless --quiet python3 -c "from PIL import Image" 2>/dev/null || pip3 install Pillow --quiet python3 -c "import numpy" 2>/dev/null || pip3 install numpy --quiet ``` ### Technical Analysis The skill directs the runtime to install `opencv-python-headless`, `Pillow`, and `numpy` without pinning reviewed versions or verifying package hashes. Consequently, the code installed during one invocation may differ from the code installed during a later invocation. Package installation can execute package build and installation logic. If the configured package index, dependency resolution process, package publisher account, or an upstream release is compromised, malicious code could execute during installation or when the installed module is imported. The commands also use whichever `pip3` executable and package index configuration are available in the environment, without validating either. This is a supply-chain weakness rather than evidence that the named packages are currently malicious. ### Attack Path 1. A required Python module is absent from the Agent environment. 2. The skill follows its dependency-check instructions and invokes `pip3 install`. 3. The package installer resolves the latest available compatible package from the configured index. 4. A compromised, substituted, or unexpectedly modified package is downloaded. 5. Package installation logic or subsequent module import executes attacker-controlled code with the privileges of the Agent process. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the operating-system account running the Agent. The attacker could access files, environment variables, network resources, and credentials available t ...[truncated 180 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:211
Finding

Predictable Temporary File Creation for Remote Images

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:211
Finding

Unrestricted Retrieval of User-Controlled URLs

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
---
name: perler-pattern
description: Convert any image into a perler/hama/fuse bead pattern with automatic background removal. 把任意图片转换成精美的拼豆图纸,内置自动去背景。Use when the user wants to generate a bead pattern from a photo, image, or URL. Automatically removes background using GrabCut (fully offline, no API), places subject on dark background, then generates: interactive HTML viewer, print-ready SVG with color codes, 3D bead preview PNG, and bead count list. Supports Hama, Artkal, Perler, and universal palettes. Zero API cost — pure Python + OpenCV.
version: 1.2.0
license: MIT-0
metadata:

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill advertises itself as 'fully offline' and 'no API', but it explicitly supports URL input and the Python code later retrieves remote content over the network. This mismatch can mislead users and operators about network behavior, privacy exposure, and trust boundaries, especially in environments that rely on offline-only guarantees.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The inline comment claims the background-removal path is 'fully offline', yet the overall skill flow can download an image from a remote URL before processing. Even if GrabCut itself is local, the comment is security-relevant because it can cause reviewers or users to overlook network access and associated data exposure.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This markdown file contains user-facing natural language content exclusively in Chinese, including headings, guidance, and examples. Under the policy rule for language/locale, forcing a specific language without user opt-in can be a policy violation when no alternative or justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest description presents bilingual output/instructions inline and assumes both English and Chinese, rather than letting the user opt into a preferred language or locale. This can conflict with organizational language-choice policies when a skill imposes a specific locale presentation by default.

Content

No source excerpt is available for this finding.