Back to skill

Security audit

閱讀助手

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent reading assistant, but it uses very broad triggers and includes persistent storage plus optional automated outbound summaries that need clearer user control.

Review before installing. Use this only if you are comfortable with extracted book text and summaries being stored under the OpenClaw workspace, and enable Notion sync or cron reminders only after confirming where summaries will be sent and how to turn the automation off. Prefer pinned dependencies or a virtual environment for the EPUB import workflow.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:48
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 48–50
Vulnerability Type: Unpinned third-party dependencies from a mutable package repository
Risk Level: Medium

Vulnerable Code

bash
pip3 install ebooklib beautifulsoup4 lxml

Technical Analysis

The EPUB import workflow instructs the agent to install three Python packages without fixed versions, cryptographic hashes, a lock file, or an explicitly trusted package index. Consequently, every installation may resolve different package or transitive-dependency versions from the default Python package repository.

This does not establish that any current package is malicious. It creates a supply-chain exposure in which a compromised package release, compromised maintainer account, or malicious transitive dependency could introduce arbitrary installation-time or import-time code after the Skill has already been reviewed.

Attack Path

  1. An attacker compromises one of the named packages, one of its transitive dependencies, or its package-publishing account.
  2. The attacker publishes a malicious version that remains compatible with the unconstrained package specification.
  3. A user invokes the EPUB import feature on a system where the dependencies are not already installed.
  4. Following the documented workflow, the agent executes the unpinned pip3 install command.
  5. The package installer selects the malicious release.
  6. Malicious installation-time code, or code subsequently loaded by process_epub.py, executes with the privileges of the user running the agent.

Impact Assessment

Successful exploitation could execute arbitrary code with the agent user's privileges. Depending on that user's access, the malicious dependency could read or modify workspace files, EPUB contents, reading-progress data, and other user-accessible files; alter installed Python components; or initiate network communications. No privilege escalation beyond the invoking user's existing permissions ...[truncated 41 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every direct dependency to a reviewed, exact version.
  2. Resolve and pin all transitive dependencies in a lock file.
  3. Record cryptographic hashes and require hash verification during installation, for example with pip install --require-hashes -r requirements.txt.
  4. Install dependencies inside a dedicated virtual environment rather than the agent user's global Python environment.
  5. Use an explicitly configured trusted package index or an internally controlled package mirror.
  6. Add automated dependency vulnerability and integrity scanning to the release process.
  7. Review and deliberately update dependency versions instead of resolving the newest available releases during Skill invocation.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a broader end-user reading assistant focused on library management, reading lists, chapter summaries, and progress tracking. The supplied code only implements EPUB ingestion/parsing and chapter extraction to filesystem outputs, plus metadata and reading-time estimates. While 'import epub' is partially aligned, the core described capabilities—summary generation, reading progress recording, continuing from last position, and library/list management—are absent. The code does not show unrelated dangerous behavior, but it materially underdelivers versus the declared purpose, so this is a description/behavior mismatch.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger list contains extremely common terms such as '書', '閱讀', 'chapter', and 'library', which can cause accidental invocation during unrelated conversation. Because the skill can read local files, write progress data, install packages, and potentially sync content outward, overbroad activation materially raises the risk of unintended data processing and side effects.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

Triggers like '摘要', '下一章', '繼續', and 'summary' are common conversational phrases that can collide with normal dialogue. In this skill's context, accidental activation can cause chapter files to be read, summaries to be generated from private book content, and reading-progress state to be modified without deliberate user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The cron-based automation reads the next chapter and pushes generated summaries to external messaging platforms every day, but the skill text does not require explicit informed consent for ongoing content access or outbound delivery. Because chapter text may be copyrighted, private, or sensitive, unattended automated extraction and transmission materially increases privacy, compliance, and data-leakage risk.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill performs file-writing operations to a persistent workspace but does not declare any tool scope or allowed-tools restrictions. This creates an authorization ambiguity where the runtime may permit broader filesystem access than users or reviewers expect, increasing the chance of unintended writes or abuse if the skill is triggered unexpectedly.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The import flow activates on vague phrases like '匯入' or 'import' without requiring clear reference to an EPUB file or explicit confirmation. This can lead to unintended package installation, file processing, and persistent writes if the skill is invoked from an ambiguous user message.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Progress-check triggers like '進度' and 'progress' are too generic and can be used in many unrelated contexts. This increases the likelihood of unintended disclosure of reading history or metadata from the local library when the user did not mean to invoke this skill.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.