Back to skill

Security audit

one-detail-reads-person-video-gen

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly disclosed and purpose-aligned, but its helper script can upload arbitrary readable local files to WeryAI when given a non-HTTPS image path.

Review before installing. Use only public HTTPS image URLs unless you deliberately want a local file uploaded to WeryAI, and do not pass local paths containing secrets, credentials, private documents, or workspace configuration. Prefer running it in a limited workspace with an isolated WERYAI_API_KEY.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/video_gen.js:206
Finding

Unrestricted Local File Read and Upload Through Image Parameters

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); let data; try { data = await res.json(); } catch { throw new Error(`Upload failed with non-JSON response (HTTP ${res.status}).`); } const wrapped = { httpStatus: res.status, ...data }; if (!isApiSuccess(wrapped)) { const apiErr = formatApiError(wrapped); throw new Error(apiErr.errorMessage || `Upload failed (HTTP ${res.status}).`); ...[truncated 3999 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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 (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description promises a narrowly scoped social-read video generator, but the referenced behavior appears to include broader generic video generation, local image upload handling, model/task management, and polling capabilities not clearly disclosed. This mismatch is dangerous because users may authorize or supply sensitive inputs under false assumptions about what the skill actually does, including possible local file reads and third-party uploads. In a networked skill handling media and secrets, inaccurate declarations materially increase the risk of unintended data exposure and unsafe execution paths.

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 16)May include surrounding context.

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

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
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
**Dependencies:** `WERYAI_API_KEY` + Node.js 18+. **`scripts/video_gen.js`** + **[`WERYAI_VIDEO_API.md`](resources/WERYAI_VIDEO_API.md)**. **No other Cursor ski

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill declares network and environment-variable usage but does not define an explicit tool or permission scope. That creates an authorization gap where the runtime may grant broader capabilities than users or reviewers expect, especially given the documented use of an API key and outbound video-generation requests. In this context, undeclared capability scope reduces transparency and makes secret access and network exfiltration harder to govern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill specifies 'timed English captions' as part of the default behavior, which imposes a language choice rather than offering the user a neutral default or explicit opt-in. Although a later tip mentions accommodating another on-screen language if specified, the primary instructions still force English by default.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The instruction 'English on screen' is a direct language constraint in the skill's operational guidance. This is a natural-language policy issue because it mandates a specific locale without making user choice the default behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The completion criteria state that the output must contain 'timed English captions,' which hard-codes a language requirement into success conditions. That conflicts with the policy exception criteria because the language restriction is not clearly justified as region-specific and is not presented as user choice.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger tests use broad natural-language prompts such as 'judge someone by one detail' and 'micro-behaviors' that are likely to overlap with ordinary social-psychology or short-video requests. This can cause the skill to activate unintentionally in contexts where the user did not explicitly request this capability, increasing the chance of inappropriate profiling-style outputs or routing to a risky skill without clear user intent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documented behavior allows non-HTTPS image inputs to be treated as local file paths, read from disk, and uploaded to an external service using the API key. In a skill whose stated purpose is generating short people-read videos, this file-access-and-exfiltration path is broader than necessary and can be abused if an agent accepts attacker-controlled paths or follows untrusted prompt instructions to upload local files.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest frames this skill as a specific social-read short generator for judging someone from one signal, but this file documents a generic video generation interface including local file ingestion and upload to create public URLs. That broader capability is not reflected in the manifest description and goes beyond the stated narrow, text-led use case.

Content

No source excerpt is available for this finding.