Back to skill

Security audit

Giggle Generation Drama

Security checks for vulnerabilities and agentic risk

Overview

This video-generation skill is mostly purpose-aligned, but it can automatically spend Giggle account credits without a transaction-specific user confirmation.

Review before installing. Only use this skill if you are comfortable giving it a Giggle API key and allowing the workflow to create projects and automatically pay for them with the account's available credits. Prefer a version that requires explicit approval with price and limits before every payment, and consider pinning dependencies.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/trustee_api.py:503
Finding

Automatic Payment Without Transaction-Specific User Approval

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
scripts/requirements.txt:1
Finding

Unbounded Third-Party Dependency Version

Content
View full analysis
=2.31.0 ``` ### Technical Analysis The dependency specification accepts version `2.31.0` and every later release without an upper bound, exact version lock, or package hash. Consequently, installations performed at different times may resolve to dependency versions that were not reviewed with the skill. The `requests` package executes in the same Python process as the skill and therefore has access to process memory and the `GIGGLE_API_KEY` used to create the authenticated HTTP session. An unexpectedly compromised or incompatible future release would execute with the same operating-system privileges as the skill. The package name itself is legitimate, and the audited files do not demonstrate dependency confusion or a currently malicious dependency. The risk arises from accepting unreviewed future releases and lacking integrity verification. ### Attack Path 1. The skill is installed or its dependencies are refreshed at a later date. 2. The package resolver selects a future `requests` release satisfying `>=2.31.0`. 3. That release has not been reviewed as part of this skill audit. 4. If the selected release or its resolved dependency chain is compromised, malicious package initialization code executes when `requests` is imported. 5. The code runs inside the process that reads `GIGGLE_API_KEY` and performs authenticated API requests. Exploitation depends on a compromised package release, package index, dependency chain, or build environment; the version constraint alone does not prove that such a compromise currently exists. ### Impact Assessment A compromised resolved dependency would run with the same local privileges as the Python process. It could potentially access environment variables, including `GIGGLE_API_KEY`, inspect ...[truncated 220 chars]
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The workflow explicitly states it may 'auto-pay' when pending payment is detected, but the install/review warning mentions only network use and omits billing risk. This is dangerous because users may authorize the skill expecting API usage only, while the workflow can trigger real charges without a distinct, informed confirmation step.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The workflow automatically invokes the payment endpoint when it detects a pending payment state, without requiring explicit user approval at the moment of charge. In a skill whose advertised purpose is content generation, this can lead to unexpected spending and removes an important transactional safety boundary.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill requires environment access and performs networked API operations, but it does not declare explicit tool scope such as permissions or allowed-tools. This weakens reviewability and containment, increasing the chance the agent invokes capabilities the user did not clearly authorize.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad enough to activate on many ordinary requests related to videos, narration, or cinematic content, even when the user may not intend to use this external paid service. Over-broad activation can route users into a workflow that sends data to a third party and may incur charges without sufficiently specific consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill manifest describes video generation and style viewing, but the code includes a payment-capable API method. That scope expansion is security-relevant because a caller can trigger billing-related actions that are not clearly disclosed by the skill's stated purpose, increasing the risk of unauthorized or surprising charges.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The workflow hard-codes language = "zh", overriding the language choice available in other commands and forcing a specific locale. This is a natural-language policy issue because the user is not offered a language choice or asked to opt in to Chinese output.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency is specified as requests>=2.31.0, which allows any newer release to be installed and makes builds non-reproducible. This can unintentionally pull in a vulnerable or behavior-changing version later, increasing supply-chain risk even if no immediate exploit is present in this file.

Content

Scanner excerpt · scripts/requirements.txt (reported line 1)May include surrounding context.

text
requests>=2.31.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
95% confidence
Finding

Because requests is not pinned, it is impossible to verify from this manifest whether the installed version includes fixes for known advisories affecting some releases. This ambiguity creates avoidable exposure to publicly known vulnerabilities in a widely used HTTP client library.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The manifest frames the skill as a user-facing video generation and style browsing tool, but the implementation independently reads GIGGLE_API_KEY from the host environment and uses it for authenticated remote actions. Accessing host environment credentials is an infrastructure capability that is not described in the stated purpose.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.