Back to skill

Security audit

记一下

Security checks for vulnerabilities and agentic risk

Overview

The skill is a plausible note-capture tool, but it broadly saves chat-style personal content and the package is incomplete and under-scoped for privacy and installation safety.

Install only if you are comfortable with an unfinished note-capture skill that may persist sensitive chat, diary, task, and financial content. Use an explicit invocation habit, review saved files under memory/just-note, avoid recording secrets, and pin/verify any clawhub CLI commands instead of copying @latest examples.

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
PUBLISH.md:37
Finding

Execution of Unpinned npm Packages Through npx

Content
View full analysis

Vulnerability Details

File Location: PUBLISH.md:37-48
Vulnerability Type: Insecure third-party dependency execution
Risk Level: Medium

Vulnerable Code

bash
npx clawhub@latest login
bash
cd ~/openclaw/workspace/skills/just-note
npx clawhub@latest publish . \
  --slug just-note \
  --name "记一下" \
  --version 0.2.0 \
  --changelog "MVP 完成:记录/查询/统计/导出功能,AI 自动分类" \
  --tags "note,ai,knowledge,productivity"

The same unsafe pattern also appears at PUBLISH.md:81-87, PUBLISH.md:108-110, PUBLISH.md:172-201, and PUBLISH.md:228. Related unpinned global installation and execution instructions appear at publish.sh:10-13 and publish.sh:85.

Technical Analysis

The documentation directs users to obtain and execute clawhub@latest from the npm registry. The latest tag is mutable, so the code executed when a user follows these instructions may differ from the code that existed when this project was audited.

No exact dependency version, lockfile, package integrity hash, or provenance verification is specified. npx may download the package and execute its CLI immediately. npm package lifecycle behavior and transitive dependencies can also introduce executable code. The related recommendation to run npm install -g clawhub installs similarly unpinned executable code globally.

This is a supply-chain weakness rather than evidence that the current clawhub package is malicious. Exploitation depends on compromise or malicious replacement of the package, its publisher account, registry metadata, or a transitive dependency.

Attack Path

  1. An attacker compromises the npm publisher account, package, registry metadata, or a transitive dependency associated with clawhub.
  2. The attacker publishes a malicious release and assigns it to the mutable latest tag, or introduces malicious install/runtime behavior into an unpinned version.
  3. A user follows the project documentation and runs npx clawhub@latest login, `publish ...[truncated 1136 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace @latest with an exact, reviewed version:
    bash
    npx --yes clawhub@X.Y.Z login
    npx --yes clawhub@X.Y.Z publish .
    
  2. Verify the selected release's publisher, provenance, signatures, and published integrity metadata before recommending it.
  3. Document the expected package checksum or another trustworthy verification procedure where the package manager supports it.
  4. Avoid recommending npm install -g clawhub. Prefer an exact-version, project-local development dependency governed by a committed lockfile.
  5. Use npm ci with a committed lockfile for reproducible dependency resolution when integrating the CLI into automated workflows.
  6. Run publishing operations in a restricted environment with minimal filesystem access and a narrowly scoped, short-lived publication token.
  7. Review the dependency tree and lifecycle scripts of the pinned version before adoption.
  8. Update every duplicate command in PUBLISH.md and publish.sh so users are not directed back to the mutable package reference.
  9. Add automated checks that reject @latest, unversioned npx execution, and unpinned global installation commands in release documentation and scripts.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (46)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents an end-user note-taking/knowledge-capture skill triggered when a user sends content to record. The supplied code chunk does not implement any note ingestion, AI classification, storage, message integration, views, or user-facing trigger handling. Instead, it is purely a developer deployment script for publishing the skill to ClawHub. This is a materially different primary purpose and includes undeclared capabilities related to packaging, authentication checks, and remote publication. Therefore, the code chunk does not accurately represent the declared behavior.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

Triggering on 'any content the user wants to record' is overly broad for conversational environments like WeChat/Feishu. This can cause accidental activation on normal chat messages, leading to unintended storage of private conversations, secrets, or irrelevant content without a clear action boundary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is explicitly designed to capture arbitrary user messages from WeChat/Feishu and persist them via CLI, including diary entries, tasks, quotes, and financial records. Because there is no privacy notice, consent checkpoint, or guidance on handling sensitive content, users may unknowingly store personal, financial, or confidential data, increasing privacy and compliance risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The examples normalize saving highly sensitive content such as expenses, income, diary entries, and tasks directly to storage through CLI, but omit any warning about confidentiality, retention, or downstream exposure. In this context, the automation trigger on 'any content worth recording' makes accidental collection of personal or regulated data more likely, especially in chat platforms where users may speak casually.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Natural-language content throughout the file is presented only in Chinese, and there is no indication that users can choose another language or that the skill is intentionally restricted to a Chinese-speaking region or audience. This may violate language/locale policy where user-facing skill materials should not force a specific language without opt-in or justification.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill manifest says the skill supports WeChat/Feishu message input and is automatically triggered when users send content to record. However, this changelog explicitly marks '消息模式 (AI)' as only 80% complete and later states 'AI 消息模式未集成', meaning the advertised message-triggered behavior is not actually available yet.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The changelog describes integrating message routing in OpenClaw and testing AI automatic classification, which implies ingestion and processing of message content from platforms like WeChat/Feishu. The markdown does not warn users that message contents may be transmitted, analyzed, or stored, creating a missing disclosure for potentially privacy-sensitive behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documentation plans WeChat/Feishu message ingestion and real LLM integration for a note-taking skill that stores personal content such as diary entries, ideas, and income/expense records, but it provides no privacy notice, consent model, retention policy, or boundaries on what data may be sent to third parties. In this context, that omission is meaningful because users may reasonably input highly sensitive personal data, and later implementation could exfiltrate or mishandle it without clear safeguards.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The examples repeatedly encourage frictionless capture of arbitrary user messages, automatic AI classification, and long-term storage in /memory/just-note/... without any visible warning about privacy, retention, or sensitive-data handling. In a note-taking skill triggered by 'any content the user wants to record,' this creates a real risk that users will store credentials, personal data, financial details, or confidential work information without informed consent or clear safeguards.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The document includes a deletion command for the published skill in the quick-reference section without an adjacent warning that it is destructive and potentially irreversible. In a release guide, readers may copy commands mechanically; documenting deletion alongside routine commands increases the chance of accidental package removal, disrupting availability and potentially affecting users relying on the skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README describes an automatic pipeline from user message to AI classification to CLI file-writing, but does not warn users that their messages will be persisted. This creates a real privacy and consent risk because users may believe they are casually messaging while the system stores potentially sensitive personal, financial, or work-related content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README states that the skill triggers when a user sends 'any content they want to record,' which is overly broad and can overlap with normal chat behavior in WeChat/Feishu. In an agent setting, this increases the chance of unintended activation and silent recording of ordinary conversations or sensitive data, especially because the skill is designed to automatically classify and write content.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.