Back to skill

Security audit

Blender Render

Security checks for vulnerabilities and agentic risk

Overview

This is a local Blender rendering helper with ordinary file-output and dependency-install risks, not hidden malicious behavior.

Install only if you need local Blender previews. Use it on copies or fresh headless Blender sessions, choose output paths that can be overwritten, and install Pillow in a virtual environment with a pinned version if the contact-sheet feature is needed.

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:49
Finding

Unpinned Third-Party Package Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 49
Vulnerability Type: Unpinned third-party dependency installation
Risk Level: Medium

Vulnerable Code:

bash
python3 -m pip install pillow

Technical Analysis

The skill recommends installing Pillow directly from the package source configured for pip, without specifying a reviewed version, package hash, lockfile, or trusted index. Consequently, the installed artifact depends on mutable package-index state and the user's local pip configuration.

Package installation may execute third-party installation or build logic with the privileges of the user running pip. Exploitation would require compromise of the legitimate package distribution channel, a malicious package source configured in the environment, or another supply-chain manipulation that causes pip to resolve an attacker-controlled artifact. The audited project does not itself configure a malicious index or contain a remote payload.

Attack Path

  1. A user requests contact-sheet generation.
  2. Pillow is unavailable in the active Python environment.
  3. The user or agent follows the documented pip install pillow instruction.
  4. pip resolves the dependency through its currently configured package index without a version or hash constraint.
  5. If that source or the resolved distribution is compromised, attacker-controlled installation logic executes.
  6. Malicious code then runs with the permissions of the account performing the installation and may modify resources accessible to that account.

Impact Assessment

Successful exploitation could permit arbitrary code execution with the privileges of the user running pip. The potential scope includes that user's readable files, writable files, environment variables, credentials available to the process, and network access allowed by the host. This instruction does not independently grant administrative privileges; elevated impact would require the installati ...[truncated 63 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin Pillow to a reviewed, compatible version rather than installing an unconstrained latest release.
  • Require hashes for downloaded artifacts, preferably through a locked requirements file generated and reviewed for the supported platforms.
  • Use a trusted, explicitly configured package index and disallow unexpected extra indexes.
  • Install the dependency inside an isolated virtual environment with least-privilege permissions.
  • Require explicit user approval before performing dependency installation.
  • Prefer documenting dependency verification separately from normal skill execution. For example:
text
Pillow==<reviewed-version> --hash=sha256:<verified-distribution-hash>

Then install using hash enforcement:

bash
python3 -m pip install --require-hashes -r requirements.txt
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broader multi-format preview pipeline with several preview modes and model-assembly features. The supplied code is much narrower: it only supports STL, OBJ, and PLY import, renders simple Cycles images from three viewpoints, and applies a single procedural material to every mesh. It lacks the declared FBX/BIM support, Workbench orthographic preview path, exploded views, contact sheets, and BIM fallback behavior. While 'simple Cycles beauty renders' is consistent with part of the description, the overall declared purpose materially overstates and misrepresents the implemented capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The code is clearly related to the declared domain of headless Blender preview rendering, so the overall theme matches. However, the description materially overstates supported formats and features. The implementation only imports .stl, .obj, and .ply, not FBX or BIM formats. It only configures the Workbench engine and renders separate orthographic view images; there is no Cycles render path, no contact-sheet composition, and no BIM fallback logic. The code does implement stable part colors, local-path import, exploded views, and Workbench orthographic previews, but the missing advertised capabilities are significant enough to make the description inaccurate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script unconditionally selects and deletes all objects in the currently opened Blender scene before importing the target model. In a headless automation context this can destroy unrelated user work or assets if run against the wrong .blend/session, creating an integrity and data-loss risk even though it is not directly exploitable for code execution.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The manifest emphasizes previews, stable part colors, and simple beauty renders, but this script unconditionally replaces object materials with a synthetic wood shader before rendering. That changes the appearance of imported models rather than previewing them as-is, which can misrepresent model color/material information.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The markdown includes example command labels 正面预览 and 透视预览, which prescribe a specific language in user-facing output. The file does not state that the skill is intended only for Chinese-language output or offer an opt-in/alternative locale, so this conflicts with the language/locale policy criteria.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes headless previews for STL/OBJ/FBX/BIM and multi-part 3D-print models, but this script also imports and renders .ply files. That is a concrete capability mismatch between the declared scope and implemented behavior, even though it is low risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The script sets an output filepath and writes PNG renders to disk via write_still=True. While the output path is user-supplied, the code does not clearly disclose in comments or messaging before execution that multiple files will be created or overwritten at the specified prefix.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.