Back to skill

Security audit

搜索并播放电影,支持按类型/年份/评分筛选,中英文输入,生成 iframe 播放页面

Security checks for vulnerabilities and agentic risk

Overview

This movie skill is disclosed, but it can generate local pages that load unverified third-party streaming sites, including free embed results, so it should be reviewed before use.

Install only if you intentionally want a skill that finds and embeds third-party streaming sources. Treat generated playback pages as untrusted web content, avoid entering credentials or payment details in embedded frames, and prefer licensed streaming links or metadata-only use. User-wide installation may make the skill activate during ordinary movie requests.

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

Warning
Location
scripts/generate_movie_page.py:257
Finding

Unvalidated Streaming URLs Are Loaded into an Unsandboxed iframe

Content
View full analysis
str: """Build HTML for source selector buttons (with data-src for JS switching).""" if not sources: return "" buttons = [] for i, src in enumerate(sources): name = _escape_html(src.get("name", f"Source {i+1}")) url = _escape_html(src.get("url", "")) active = "active" if i == 0 else "" buttons.append( f'{name}' ) ``` The first supplied URL becomes the default iframe source without scheme or origin validation: ```python genre_tags = _build_genre_tags(genres) source_buttons = _build_source_buttons(sources) primary_src = sources[0]["url"] if sources else "" ``` The resulting iframe has no `sandbox` attribute and grants several browser capabilities: ```html ``` The untrusted source list originates directly from command-line JSON: ```python sources = [] if args.source ...[truncated 3152 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill goes beyond movie discovery and explicitly enables embedded playback from third-party streaming sources inside generated local HTML. In context, this adds a capability to facilitate access to potentially unauthorized content and drives the user to load untrusted external media origins, which is materially riskier than a normal search/recommendation skill.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The fallback behavior explicitly searches for 'watch online free embed' URLs, which is a strong indicator that the skill is designed to locate unauthorized streaming sources when normal metadata lookup fails. This meaningfully increases abuse potential and exposes users to untrusted sites and embedded content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The activation examples are broad everyday requests like asking for a sci-fi movie, which can cause the skill to trigger during ordinary conversation without clear user intent to invoke this specific skill. Because the skill can generate HTML pages with embedded playback iframes, accidental activation increases the chance of unwanted external content loading or unexpected behavior.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

搜索电影(按片名/关键词):

text
GET https://api.themoviedb.org/3/search/movie?api_key={KEY}&query={keyword}&language=zh-CN&page=1

按类型 + 年份发现电影:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

搜索电影(按片名/关键词):

text
GET https://api.themoviedb.org/3/search/movie?api_key={KEY}&query={keyword}&language=zh-CN&page=1

按类型 + 年份发现电影:

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

搜索电影(按片名/关键词):

text
GET https://api.themoviedb.org/3/search/movie?api_key={KEY}&query={keyword}&language=zh-CN&page=1

按类型 + 年份发现电影:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill instructs generation of HTML that embeds third-party iframes but does not provide a strong warning that opening the file will load and execute active content from untrusted external domains in the user's browser. This can expose users to malicious scripts, tracking, scams, or abusive browser behaviors via the embedded origins.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Writing a local HTML file specifically intended for watching movies operationalizes the risky streaming workflow and makes the skill an execution/delivery mechanism for third-party embeds rather than a simple information tool. The local file also makes it easier to present untrusted remote content in a polished way that may reduce user caution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The HTML template hard-codes lang="zh", and the generated page also uses Chinese-only interface text elsewhere, making the output implicitly Chinese-language by default. This is a natural-language policy issue because the skill does not offer a language choice or explain why a Chinese locale is required.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The file presents all user-facing installation guidance in Chinese, while also including an English trigger example, without stating that the documentation is intentionally region-specific or offering a language alternative. This can conflict with language/locale policy expectations when users are not given a choice or opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documented API calls hard-code language=zh-CN, which imposes a specific locale on returned metadata. The skill supports both Chinese and English keywords, but the documentation does not offer locale selection or explain why Chinese output is mandatory.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill states that it writes generated HTML into the current working directory but does not clearly warn the user about local file creation, naming, or persistence. While lower severity than the embed behavior itself, silent file creation can surprise users and create clutter or accidental exposure of generated artifacts.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.