Back to skill

Security audit

Icon Generator

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward local icon-generation skill with ordinary dependency and output-file caveats, not evidence of hidden or harmful behavior.

Install it in a virtual environment if possible, expect it to create PNG files in the chosen output directory, and consider pinning Pillow before automated or production use.

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 Pillow Dependency Allows Unreviewed Supply-Chain Changes

Content
View full analysis

Vulnerability Details

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

Vulnerable Code Snippet:

yaml
dependencies: "pip install pillow"

Technical Analysis

The skill instructs users or an automated installer to install Pillow without specifying a reviewed version or verifying an integrity hash. Consequently, the package resolver selects whichever compatible release is available from the configured Python package index at installation time.

This makes the installed code mutable after the skill has been audited. If the package publisher account, package index, configured mirror, or dependency-resolution environment is compromised, a malicious package release could be supplied without requiring any modification to this repository. Package installation may execute build-system or installation logic with the privileges of the user running pip.

No evidence indicates that the current Pillow package is malicious. The vulnerability is the absence of version and integrity controls around executable third-party code.

Attack Path

  1. An attacker compromises the relevant package publication account, package index, or package mirror.
  2. The attacker publishes or serves a malicious release that satisfies the unpinned package name pillow.
  3. A user or agent follows the skill metadata and runs pip install pillow.
  4. The package resolver selects the attacker-controlled release because no approved version or hash is enforced.
  5. Malicious installation or runtime code executes in the installation environment.
  6. The payload gains the permissions of the account that invoked pip and may access resources available to that account.

Impact Assessment

Successful exploitation could permit arbitrary code execution with the privileges of the user or automation account installing the dependency. Depending on that account's permissions, the at ...[truncated 500 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin Pillow to a specifically reviewed version rather than resolving the latest release dynamically.

  2. Move dependency declarations into a lock or requirements file containing cryptographic hashes.

  3. Install with hash verification enabled, for example:

    text
    Pillow==REVIEWED_VERSION --hash=sha256:VERIFIED_DISTRIBUTION_HASH
    
    bash
    python3 -m pip install --require-hashes -r requirements.txt
    
  4. Generate hashes separately for every approved wheel or source distribution required by supported platforms.

  5. Use a trusted, access-controlled package index or internal artifact mirror and restrict fallback to untrusted indexes.

  6. Run dependency installation as an unprivileged user in an isolated virtual environment or container.

  7. Review and deliberately update the pinned version and hashes through a controlled dependency-update process.

  8. Remove the unused numpy import at SKILL.md line 163, or explicitly declare and pin NumPy if it becomes necessary, to prevent dependency ambiguity.

Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (4)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file defines activation triggers, so SQP-1 applies. The phrase "Generate logo" is generic and could match many everyday design requests without clearly constraining when this skill should or should not activate, and the file provides no exclusion examples to narrow scope.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · LICENSE.txt (reported line 12)May include surrounding context.

text
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The notes state that icon generation is done locally with Pillow, which implies Pillow is the relevant implementation dependency. However, create_ios_icon imports numpy even though the manifest only declares Pillow, contradicting the documentation's characterization of the implementation. This is an intent/documentation mismatch rather than a direct security flaw, but it does mean the documented implementation is inaccurate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

For markdown files, SQP-2 applies when the description omits warnings about behaviors affecting user data or system state. The example code creates an output directory and saves many PNG files, but the surrounding documentation does not clearly warn users that running it will write files locally.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.