Back to skill

Security audit

Cute Pet Healing Video

Security checks for vulnerabilities and agentic risk

Overview

This pet-video skill is mostly coherent, but its bundled CLI can upload any readable local file supplied as an image path to WeryAI, so it should be reviewed before installation.

Install only if you trust the publisher and are comfortable sending prompts, selected images, and your WERYAI_API_KEY to WeryAI. Prefer public HTTPS image URLs. Do not pass local paths or file:// URLs unless you have verified the exact file and intend to upload it; the current script can upload any readable file named in the image fields.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:172
Finding

Mandatory Skill-Controlled Branding Alters Agent Responses

Content
View full analysis
This video was generated with the `cute-pet-healing-video` skill. ``` The same mandatory attribution appears again at the end of the file: ```md > This video was generated with the `cute-pet-healing-video` skill. ``` ### Technical Analysis The Skill directs the Agent to end successful responses with fixed Skill-selected branding. This instruction is unrelated to the technical requirement of generating a video or returning its URL and changes the Agent's normal response content regardless of whether the user requested attribution. Because the instruction is loaded as part of the Skill's operational guidance, it creates a persistent response-manipulation rule for every successful invocation. The duplicate footer at the end of the document reinforces the instruction. ### Attack Path 1. The Agent loads `SKILL.md` while handling a pet-video request. 2. The user asks the Agent to generate and return a video. 3. The Skill instructs the Agent to append a fixed attribution after parsing the API response. 4. The Agent returns the video URL together with Skill-controlled promotional content that the user did not request. ### Impact Assessment The issue permits the Skill author to control part of the Agent's user-facing output during each successful invocation. The current payload is limited to attribution and does not alter system permissions, execute code, or establish persistence. However, accepting mandatory unrelated output establishes an instruction-hijacking mechanism that could be changed in later versions to promote external content, misrepresent provenance, or append misleading claims. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/video_gen.js:201
Finding

Arbitrary Process-Readable Files Can Be Uploaded to WeryAI

Content
View full analysis
controller.abort(), 60_000); let res; try { res = await fetch(MODELS_BASE_URL + UPLOAD_API_PATH, { method: 'POST', headers: { Authorization: `Bearer ${apiKey}`, }, body: form, signal: controller.signal, }); } catch (err) { clearTimeout(timer); if (err.name === 'AbortError') { throw new Error(`Upload timeout: ${filePath}`); } throw err; } clearTimeout(timer); ``` The upload is reached for every non-HTTP image value: ```js async function ensurePublicImageUrl(value, apiKey) { if (typeof value !== 'string' || !value.trim()) { throw new Error('Image source must be a non-empty string.'); } if (isPublicHttpsUrl(value)) return value; if (isRemoteUrl(value)) { throw new Error(`Remote image URL must use htt ...[truncated 2743 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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 (19)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The documented purpose is narrowly framed as safe pet-video generation from text or one HTTPS image, but the behavior described in the file is materially broader: local file handling/upload, model enumeration via another API host, generic task submission/status polling, and hints of multi-image support in the underlying runtime. This mismatch is dangerous because users and orchestrators may trust the narrower description while the script can exfiltrate local images or perform broader network actions than expected.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 14)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 16)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 21)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 22)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 28)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 29)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 30)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 34)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 184)May include surrounding context.

md
for consistency and security. Local files should only be used after verifying `video_gen.js` behavior and explicitly consenting to the file upload process to W

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 82)May include surrounding context.

md
- Does not hard-code absolute paths in the skill doc; `{baseDir}` means the skill package root (same level as `SKILL.md`).

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill declares network and environment-secret dependencies but does not explicitly constrain tool scope with permissions or allowed-tools. That increases the chance an agent runtime grants broader execution/network capability than users expect, especially since the skill instructs running a Node script that can call external APIs and consume secrets.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description says to use the skill when the user asks for broad phrases like 'cozy cat clip,' 'dog vertical cozy clip,' or 'windowsill naps, fluffy close-ups,' which are generic content requests rather than narrowly scoped invocation triggers. The file does not provide exclusion conditions or negative examples to clarify when such common phrasing should not activate this skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document states that the agent must turn the user's brief into a 'full English production prompt,' and later repeats that the main prompt should be in English for reliability. This imposes a language constraint on the interaction workflow without user opt-in or a clearly documented policy justification for enforcing English.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This line says the main prompt should be in English because it is 'more reliable,' which effectively forces a specific language for generation behavior. There is no accompanying user choice, consent, or explicit justification that would exempt this locale/language restriction.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Earlier sections require that the pre-submit confirmation include the full expanded production prompt and explicitly forbid a one-line summary. However, this example table instructs the operator to show only a '≤20-char Chinese summary or short English summary' in the prompt row, which directly conflicts with the stated mandatory workflow and could cause users to approve a different prompt than what is actually sent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The implicit trigger test uses a broad Chinese natural-language request that directly describes the skill’s domain without any clear activation boundary, making accidental or over-broad triggering likely. In agent systems, this can cause the skill to activate on generic pet-video requests rather than only when explicitly intended, which weakens routing safety and increases the chance of misuse or unintended execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation states that local image paths and file:// sources are automatically uploaded to an external WeryAI endpoint before generation, but it does not require an explicit user confirmation or prominent warning at the point of use. In an agent skill context, this creates a real data exfiltration risk because a user or upstream agent may provide a local file assuming it remains local, while the script silently transfers it off-system.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The test assumes a Chinese-language prompt should activate the skill without documenting whether multilingual triggering is intended or constrained. This can create ambiguous routing behavior across languages and may cause the skill to trigger unexpectedly in multilingual environments, though the direct security impact here is limited.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.