Back to skill

Security audit

Create PPT with Nano Banana Pro

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward presentation-generation helper, with disclosed external tools and a normal dependency install, but users should note its Chinese-first output style and unpinned npm package.

Install in a normal least-privileged project environment, consider pinning pptxgenjs in a package.json/lockfile before repeat use, and expect the skill to produce Chinese-first slide content unless you override that in your request.

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:132
Finding
Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 132–137 **Vulnerability Type**: Supply-chain risk from unpinned third-party dependencies **Risk Level**: Medium ### Vulnerable Code ```bash # Install required packages npm install pptxgenjs # For nano-banana-pro (if using locally) # Ensure uv and nano-banana-pro skill are configured ``` ### Technical Analysis The skill directs users to install `pptxgenjs` without specifying an exact audited version or requiring a lockfile. Consequently, the command resolves mutable package and transitive-dependency versions from the configured npm registry at installation time. The skill also relies on a separately configured `nano-banana-pro` component without documenting a pinned version, verified source, or integrity value. Although the audited project does not contain malicious executable code, these installation and configuration instructions create a supply-chain trust boundary outside the reviewed artifact. A compromised package release, transitive dependency, registry, or package-manager configuration could introduce attacker-controlled code. npm lifecycle scripts may execute during installation under the privileges of the user running npm. ### Attack Path 1. An attacker compromises a referenced package, one of its transitive dependencies, its publishing account, or the configured package registry. 2. The attacker publishes a malicious version or serves modified package content. 3. A user follows the documented `npm install pptxgenjs` instruction without a locked dependency graph or verified integrity metadata. 4. npm resolves and downloads the attacker-controlled package content. 5. Malicious lifecycle code executes during installation, or malicious library behavior runs when the generated presentation script imports `pptxgenjs`. 6. The payload operates with the privileges and accessible resources of the installing or executing user. The same general trust risk applies to the separately configured ...[truncated 704 chars]
Remediation
## Remediation Suggestions 1. Pin `pptxgenjs` to an exact version that has been reviewed, rather than resolving the latest compatible registry release. 2. Commit a package manifest and lockfile, and require reproducible installation with `npm ci`. 3. Verify lockfile integrity metadata and use a trusted, explicitly configured npm registry. 4. Audit direct and transitive dependencies with appropriate software-composition analysis and vulnerability scanning. 5. Disable lifecycle scripts during installation where they are unnecessary, for example with `npm ci --ignore-scripts`, after confirming that this does not break required functionality. 6. Pin `nano-banana-pro` to a reviewed version and document its authoritative source, integrity verification process, permissions, and data-handling behavior. 7. Run dependency installation and presentation generation in a least-privileged, isolated environment without unnecessary credentials or access to sensitive files. 8. Establish a controlled dependency-update process that reviews version changes before updating the lockfile.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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 (2)

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The markdown explicitly states 'Chinese Content First' and requires 'All content in Chinese as primary language.' This is a natural-language locale policy constraint that applies globally to the skill, but the file does not offer opt-in, alternatives, or a documented region-specific justification.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
The template instructs that 'All text in Chinese with English notes in parentheses where appropriate,' which hard-codes a language preference into operational instructions. Because no user choice or justified regional constraint is provided, this conflicts with the policy against forcing a specific language.

Static analysis

No suspicious patterns detected.