Back to skill

Security audit

番茄小说自动创作发布一条龙

Security checks for vulnerabilities and agentic risk

Overview

This skill is not clearly malicious, but it can publish chapters to a real Fanqie account through unpinned external skill code without a strong confirmation boundary.

Install only if you are comfortable with the skill reading local novel chapter files and using your Fanqie author login/session to publish content externally. Review chapters manually first, test with non-critical works, and pin or verify the dependent open-novel-writing, novel-generator, and fanqie-publisher skills before relying on this workflow.

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)

T08 · Insecure Dependencies

Error
Location
scripts/fanqie_publisher.py:41
Finding

Unpinned external Skill dependencies are dynamically imported and executed

Content
View full analysis
Dict: try: from main import check_login result = check_login() return result except Exception as e: return {"logged_in": False, "message": str(e)} ``` ```python def publish_chapter(self, work_title: str, chapter: Chapter, interval: int = 5) -> Dict: try: from main import publish_batch, load_chapters_from_file chapters = [{"title": chapter.title, "content": chapter.content}] results = publish_batch(work_title, chapters, interval=interval) ``` ### Technical Analysis The installation instructions do not pin dependency versions, package digests, source revisions, or publisher identities. At runtime, the application prepends the separately installed `fanqie-publisher` scripts directory to `sys.path` and imports a generically named `main` module from the resulting import search path. Python executes module-level code during import. Consequently, the imported dependency is not merely treated as passive data: it receives arbitrary code execution with the privileges of the user running this Skill. Because the dependency exists outside the audited project and can change independently, the effective runtime behavior is not bounded by the reviewed source tree. The generic `main` module ...[truncated 1635 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/main.py:59
Finding

Current-working-directory-relative path can execute an unintended login script

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README explicitly documents fully automated publication to a logged-in Fanqie author account, including sequential chapter posting, but it does not present a clear warning that the workflow performs account- and content-impacting actions. In this context, omission of an explicit consent/safety notice increases the risk of accidental posting, mass publication mistakes, policy violations, or account sanctions when a user runs the commands assuming they are low-risk content-generation steps.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly advertises a one-click workflow that culminates in publishing content to an external platform, but the documentation does not warn users that content will be transmitted and published outside the local environment or that credentials/cookies may be used. In an agent context, this increases the risk of unintended publication, accidental disclosure of sensitive or copyrighted material, and user surprise about irreversible external side effects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The configuration enables automatic publishing immediately after generation, which can cause content to be posted without an explicit user confirmation step. In a skill that appears to chain content generation with a publisher component, this increases the chance of unintended publication, policy violations, or disclosure of draft or unsafe content if downstream safeguards fail.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This code invokes external publishing functionality via publish_batch, which is a safety-relevant action because it can transmit chapter content and create irreversible remote changes. While the docstring says it publishes chapters, there is no confirmation prompt, user-facing log/print, or explicit warning in this file about sending content to an external service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This method reads chapter content from a local file and passes it to external publishing logic, combining file access with likely network-backed publication. The file contains no confirmation prompt, no user-facing logging, and no warning here that local file contents will be transmitted/published.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The batch publishing method sends multiple chapters to external publishing logic, which can cause broad, potentially irreversible remote changes. Although publishing is the function's purpose, this file provides no user-facing notice, confirmation, or explicit warning about the scope and effect of the operation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring, banner, help text, and command descriptions are entirely in Chinese, and the startup logic explicitly forces UTF-8 output. There is no indication that language choice is optional or that the skill is intentionally region-scoped, which creates a natural-language locale policy concern under the rule.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/main.py (reported line 63)May include surrounding context.

python
# 调用 fanqie login
        import subprocess
        cmd_path = f"{config.FANQIE_PUBLISHER_PATH}/main.py"
        subprocess.run([sys.executable, cmd_path, 'login'])
        sys.exit(0)
    
    elif cmd == 'full':

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The natural-language instructions and positioning of the skill are presented entirely in Chinese, with no indication that the user can choose another language or that the locale limitation is required. Under the stated policy, forcing a specific language without user opt-in can be a language/locale policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

Comments and descriptive strings in this file consistently use Chinese, and there is no indication that users can choose another language or that the locale restriction is intentional and documented. This can conflict with language-choice policy when a skill effectively assumes a single language without opt-in.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The docstring for generate_chapter_content says '返回生成的 Markdown 文件路径列表' while the function signature and Returns section indicate it returns generated chapter content, and the implementation does not return either value because it always raises NotImplementedError. This is an active contradiction in the inline documentation about the method's intent and behavior.

Content

No source excerpt is available for this finding.