Back to skill

Security audit

sf-novel-writer

Security checks for vulnerabilities and agentic risk

Overview

This is mostly a coherent sci-fi writing helper, but it needs review because its project setup script can write outside the intended folder and some file-writing behavior is under-scoped.

Install only if you are comfortable with a Chinese-language writing skill that creates local manuscript files. Before use, restrict project names to simple letters, numbers, hyphens, or underscores, avoid path characters like / or .., confirm every file write, and prefer a pinned release with a published checksum. The account-ban avoidance wording in the README should be treated as unacceptable operational guidance, not something to follow.

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/init_project.py:8
Finding

Unvalidated Project Name Enables Path Traversal

Content
View full analysis
Remediation
View remediation
Path: if not re.fullmatch(r"[A-Za-z0-9_-]{1,64}", name): raise ValueError("Invalid project name") destination = (PROJECT_ROOT / name).resolve() if not destination.is_relative_to(PROJECT_ROOT): raise ValueError("Project path escapes the permitted root") return destination ``` File creation should then use the validated `destination` and should reject unexpected symlinks where the runtime and threat model require stronger protection. ]]>

T08 · Insecure Dependencies

Note
Location
README.md:56
Finding

Installation Instructions Reference an Unpinned External Release

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/sf_genre_guide.md (reported line 33)May include surrounding context.

md
- **注意事项**:避免简单地重复使用 20 世纪 80 年代的陈词滥调(霓虹闪烁的雨中街道、叛逆的黑客)

- **代表作者**:威廉·吉​​布森、伊藤计划、保罗·巴奇加卢皮

### 反乌托邦

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill declares an extremely broad trigger scope covering essentially any request related to science-fiction writing, including vague phrases like continuing writing or designing a plot. In a multi-skill environment, this can cause unintended activation and context capture from adjacent, non-targeted writing tasks, leading to misrouting of user requests and unnecessary exposure of user content to the skill's workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README instructs users to use a Claude account together with a network environment 'that will not get the account banned,' which implicitly encourages bypassing platform, regional, or abuse controls. Even without executable code, this kind of operational guidance can facilitate policy evasion and unsafe deployment practices, making the skill ecosystem riskier.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill instructs the agent to run a local script and create files on disk, but it does not declare any explicit tool scope or permissions boundaries. That mismatch increases the chance of unintended file writes or overbroad execution in environments where tool access is mediated by metadata rather than only by operator judgment.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger text is very broad and claims coverage for essentially all sci-fi writing-related requests, which can cause the skill to activate in situations the user did not intend. Over-triggering is dangerous because it can route ordinary conversation into a workflow that performs file operations or follows internal process steps without sufficiently confirming user intent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The stage-selection logic relies on common keywords like '设定', '发展', '修改', and '完成', which are ambiguous in normal conversation and may map users into the wrong workflow phase. In this skill, incorrect routing matters because some stages involve operational actions such as initializing projects or producing files, so misclassification can lead to unintended side effects.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file instructs the skill entirely in Chinese and does not indicate that users may choose another language or that the skill is intentionally limited to a Chinese-speaking context. 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.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file presents all operational instructions in Chinese and does not indicate that the user can choose another language. Under the policy criteria, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill explicitly instructs saving generated chapters to chapters/chapter_XX.md without requiring user confirmation, clarifying overwrite behavior, or constraining writes to a safe workspace. In an agent environment with filesystem access, this can lead to unintended file creation or overwriting of existing content, especially during iterative chapter generation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains user-facing instructional content exclusively in Chinese, and there is no indication 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 opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The usage guidance tells users they can 'directly give a theme' or start without a theme, but does not clearly constrain what kinds of requests should invoke the skill. That ambiguity increases the chance the skill is used or auto-selected for general creative prompts outside its intended scope, which can degrade routing quality and produce irrelevant handling of user content.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The file's natural-language instructions are wholly in Chinese and do not indicate that language selection is optional or user-configurable. This can violate language/locale policy when a skill effectively forces one language without opt-in or justification.

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 is entirely written as prescriptive workflow guidance in Chinese, and it does not indicate that another language may be used or that the language requirement is optional. Under the policy for natural-language violations, forcing a specific language without user opt-in can be a locale-policy issue.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.