Back to skill

Security audit

Murder Mystery Writer

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Chinese murder-mystery writing skill, but its optional visualization template has browser-code risks that should be reviewed before use.

Use this skill mainly for Chinese-language murder-mystery writing. Avoid generating or sharing the optional HTML visualization from untrusted prompts until the template is fixed to render text safely, pin or bundle D3, and disclose network loading. Add content warnings for intense emotional, horror, death, family trauma, and betrayal themes.

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

Error
Location
references/visualization-template.html:601
Finding

DOM-Based Script Injection in the Generated Visualization Page

Content
View full analysis
{ const card = document.createElement('div'); card.className = 'char-card'; card.onclick = () => showCharModal(c); card.innerHTML = `
${c.name[0]}
${c.name}
${c.role || ''}
${c.desc || ''}
`; grid.appendChild(card); }); } function renderTimeline() { const tl = document.getElementById('timeline'); tl.innerHTML = ''; DATA.events.forEach(e => { const item = document.createElement('div'); item.className = 'tl-item'; item.innerHTML = `
${e.time || ''}
${e.title || ''}
${e.desc || ''}
`; tl.appendChild(item); }); } function renderClueCards(filter) { const grid = document.getElementById('clue-grid'); grid.innerHTML = ''; const clues = filter === 'all' ? DATA.clues : DATA.clues.filter(c => c.type === filter); const typeNames = { C: '物证', M: '口供', T: '电子证据', W: '其他' }; clues.forEach(c => { const card = document.createElement('div'); card.className = 'clue-card'; card.innerHTML = `
${typeNames[c.type] || c.type} · ${c.id || ''}
${c.name || ''}
${c.desc || ''}
关联:${(c.relatedChars || []).join('、')}
`; grid.appendChild(card); }); } ``` Additional unsafe sin ...[truncated 3257 chars]
Remediation
View remediation
``` 8. Add automated tests using payloads in every generated field to verify that they are rendered only as text and never become active DOM elements or executable attributes. ]]>

T08 · Insecure Dependencies

Warning
Location
references/visualization-template.html:7
Finding

Remotely Mutable D3 Dependency Loaded Without Integrity Verification

Content
View full analysis
``` ### Technical Analysis The visualization page loads and executes D3 from a third-party CDN whenever the generated file is opened with network access. The dependency URL selects the mutable major release `d3@7` rather than an exact reviewed version. The script element also lacks a Subresource Integrity hash. Consequently, the browser does not verify that the retrieved JavaScript matches the version reviewed during the audit. This introduces a supply-chain trust boundary: any code returned from the CDN URL executes with the same browser privileges as the page itself. The effective runtime payload can change after the Skill package has been reviewed, without requiring a modification to the local project. ### Attack Path 1. The Skill creates a visualization page based on this template. 2. A user opens the generated page while connected to the network. 3. The browser requests `d3@7/dist/d3.min.js` from jsDelivr. 4. The CDN resolves the mutable version and returns JavaScript. 5. If the package-distribution path, CDN account, registry package, or network delivery is compromised, altered JavaScript is returned. 6. Because no integrity hash is present, the browser accepts and executes the altered code. 7. The malicious dependency can inspect or modify the page and communicate with external servers. ### Impact Assessment A compromised dependency would execute in the visualization page's origin and could: - Read public and private character scripts embedded in `DATA` - Extract clues, hidden goals, and unpublished story material - Modify the visualization or display deceptive content - Make outbound network requests - Access other same-origin re ...[truncated 300 chars]
Remediation
View remediation
``` 2. Record and verify the local dependency's cryptographic checksum as part of the build or release process. 3. If a CDN must be used, pin an exact immutable version and add Subresource Integrity: ```html ``` The integrity value must be generated or copied from a trusted source for the exact selected file and independently verified before release. 4. Define a Content Security Policy with a narrowly scoped `script-src` directive. Avoid broad wildcards and do not permit arbitrary inline execution. 5. Document that opening the visualization may contact a third-party service if remote loading remains enabled. 6. Add dependency update controls so new D3 releases are reviewed and tested before the pinned version or integrity hash is changed. ]]>
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 (25)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
使用 [references/visualization-template.html](references/visualization-template.html) 作为模板,填入剧本数据后生成 HTML 文件。

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases and usage description are broad enough to match common creative-writing requests beyond murder-mystery creation, which can cause unintended skill invocation. Over-broad activation can route unrelated prompts into this skill, leading to policy misapplication, unexpected behavior, and increased attack surface for prompt-confusion or skill-hijacking scenarios.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill mandates Chinese naming and gender conventions as a hard requirement without checking user locale, cultural context, or inclusivity needs. This can cause the model to override user intent, impose inappropriate demographic assumptions, and generate exclusionary or policy-problematic outputs when the requested setting is non-Chinese, multilingual, or intentionally gender-neutral.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The document title and all instructional/example content are written in Chinese, with no indication that other languages are supported or that Chinese is an optional locale. Under the policy rule, a skill that effectively mandates a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The heading '输出格式指南' and the entire document prescribe the skill's output structure in Chinese only, with no indication that users may choose another language. This creates a natural-language locale policy issue because it imposes a specific language without opt-in or stated regional justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This markdown file contains natural-language guidance exclusively in Chinese, beginning with the title and continuing throughout the document. Under the policy rule for language/locale, forcing a specific language without user opt-in can be a policy violation when no alternative or opt-in is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Line L153 states that scripts 'must conform to socialist core values,' which is a natural-language policy constraint enforcing a specific ideological or locale-linked standard. Under the rule, forcing a language/locale-style policy without user opt-in or clear documented justification should be flagged.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The title and all instructional content in this markdown file are written exclusively in Chinese, with no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The guidance explicitly frames the core experience as making players 'cry' and emphasizes designing strong emotional trigger points, but it provides no safety framing, distress warnings, or boundaries for handling sensitive audiences. In a content-generation skill, this can lead downstream users to create scripts that intentionally induce grief, guilt, or emotional overwhelm without informed consent or moderation safeguards.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The examples and design prompts include sacrifice, betrayal, death-adjacent guilt, and harming innocents, but the document does not warn that these are potentially distressing themes or advise safe use. Because this skill is meant to help generate ready-to-use murder mystery/emotional scripts, the omission increases the chance of producing content that unexpectedly retraumatizes or distresses participants.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file contains user-facing instructional content exclusively in Chinese, and there is no indication that the skill is region-specific or that users can opt into a language preference. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The page loads third-party JavaScript from jsDelivr at runtime without integrity protection or disclosure. If the CDN, dependency, or delivery path is compromised, arbitrary script would execute in the context of the page, which is a classic client-side supply-chain risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This markdown file presents all instructions and examples exclusively in Chinese, with no opt-in, alternative language option, or justification that the skill is region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file presents all instructions and examples exclusively in Chinese, and nowhere indicates that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the language/locale policy rule, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

SQP-3 applies to all file types and includes language or locale policy violations. This markdown file presents all user-facing instructional content in Chinese only, with no indication that the user can select another language and no documented reason that the skill is region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

This markdown file contains user-facing instructional content exclusively in Chinese, and nowhere indicates that the skill is region-specific or that users may choose another language. Under the language/locale policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown file contains user-facing guidance exclusively in Chinese, and there is no indication that users may choose another language or that the locale restriction is intentional. Under the policy rule for natural-language violations, forcing a specific language without opt-in can be a locale-policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file contains user-facing instructions exclusively in Chinese, beginning with the Chinese title at L01 and continuing throughout the document. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation when no language choice or rationale is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file presents all guidance in Chinese and does not indicate that the user can select another language or that the skill is intentionally limited to Chinese-speaking users. Under the language/locale policy rule, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains all user-facing instructional content in Chinese and does not indicate that the skill is region-specific or provide an opt-in language/locale choice. Under the language/locale policy, forcing a specific language without user choice can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This markdown guide presents all instructions exclusively in Chinese, with no indication that users may choose another language or that the content is intentionally limited to a Chinese-speaking audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file is natural-language guidance and all headings and instructions are presented only in Chinese. Under the policy, forcing a specific language without user opt-in can be a locale-policy violation unless the regional/language constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document root sets lang="zh-CN", and the entire UI/content is hard-coded in Chinese, which imposes a specific language/locale. There is no indication that this is optional, user-selected, or justified as a region-specific skill.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The skill is described as a full-process tool for writing and reviewing murder-mystery scripts, but this HTML template depends on loading D3 from jsDelivr at runtime. A visualization UI can support the workflow, but external network dependency is not clearly justified by the manifest's writing-focused scope and adds capability beyond pure local content generation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file is written fully in Chinese and does not indicate that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.