Back to skill

Security audit

Image Converter

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward local image conversion helper, with documentation quality issues around SVG support and dependency hygiene but no evidence of hidden, destructive, or data-stealing behavior.

Install this only in a virtual environment or other limited Python environment, and treat it as a raster image converter unless the SVG support is fixed. Users who need SVG conversion should verify or add real CairoSVG-based handling before relying on the advertised SVG features.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:7
Finding
Unpinned Third-Party Python Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 7 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```yaml dependencies: "pip install pillow cairosvg" ``` ### Technical Analysis The skill directs users or agents to install Pillow and CairoSVG without pinning reviewed versions or verifying package integrity with cryptographic hashes. Consequently, pip resolves mutable package releases and their transitive dependencies at installation time. The installed code may differ from the versions originally reviewed. If a package release or transitive dependency is compromised, malicious installation hooks or imported package code could execute with the privileges of the user running pip. CairoSVG is also declared but not imported or used by the provided implementation, unnecessarily increasing supply-chain exposure. No evidence indicates that the named packages or their current releases are malicious. The vulnerability is the unsafe and non-reproducible dependency installation practice. ### Attack Path 1. A user or agent activates the skill and follows its dependency installation instruction. 2. The command invokes pip without version constraints or integrity hashes. 3. Pip resolves the latest available releases and their transitive dependencies from the configured package index. 4. An attacker compromises a future package release, a transitive dependency, or the configured package source. 5. Pip downloads and installs the compromised component. 6. Malicious installation or runtime code executes under the account performing the installation. This exploitation path requires prior compromise or manipulation of a resolved dependency or package source. ### Impact Assessment Successful exploitation could execute arbitrary code with the privileges of the user or service account running pip or importing the dependency. Depending on those privileges, the attacker could access or alter local files, st ...[truncated 249 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin every direct dependency to a reviewed, exact version, for example: ```text Pillow==<reviewed-version> CairoSVG==<reviewed-version> ``` 2. Generate a lock file that also fixes all transitive dependency versions. 3. Require cryptographic hashes during installation, such as through a hash-locked requirements file and `pip install --require-hashes`. 4. Install packages only from an explicitly trusted package index and avoid unreviewed extra indexes. 5. Review dependency releases and run vulnerability scanning before updating the lock file. 6. Remove CairoSVG unless SVG conversion is properly implemented and required, thereby reducing the dependency attack surface. 7. Perform installation and image conversion in a least-privileged virtual environment or isolated container. ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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)

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The manifest and documentation repeatedly state support for PNG, JPG, WEBP, and SVG conversion, including '任意格式互转' and a JPG-to-SVG example. However, the code only uses Pillow-based handling for raster formats and never imports or invokes cairosvg or any SVG-specific logic; batch conversion also excludes .svg inputs entirely. This creates a clear mismatch between the advertised capability and the actual implementation.

Vague Triggers

Medium
Confidence
94% confidence
Finding
This markdown skill description includes broad invocation language such as "Use when user needs to convert image formats" and generic phrases like "图片转换、格式转换". It does not define clear trigger constraints, exclusions, or negative examples, so ordinary conversation about image formats could unintentionally match the skill.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The note 'SVG输出需要cairosvg' tells users that SVG export is supported via cairosvg. In reality, the sample code neither imports cairosvg nor contains any branch for generating SVG output, so the documentation actively misrepresents the implementation rather than merely omitting details.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
The description contains both Chinese and English instructional text, but there is no statement that the skill should adapt to the user's preferred language. This can imply a default locale/language behavior without explicit user opt-in.

Vague Triggers

Low
Confidence
87% confidence
Finding
The usage examples show several natural-language requests that would activate the skill, but they do not state what similar requests should not trigger it. Without explicit boundaries, these examples reinforce a broad activation scope for common image-related requests.

Static analysis

No suspicious patterns detected.