Back to skill

Security audit

Claw Messenger - iMessage without a Mac

Security checks for vulnerabilities and agentic risk

Overview

The skill is a clearly disclosed messaging relay plugin, with a supply-chain hardening gap in its unpinned npm install instructions.

Before installing, review the npm package and source repository, prefer pinning a specific reviewed version if possible, keep the cm_live API key out of version control, and use the pairing or allowlist DM policy if you do not want open inbound messages.

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:73
Finding
Unpinned Third-Party Plugin Installation Creates a Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 73–80 **Vulnerability Type**: Unpinned third-party dependency installation **Risk Level**: Medium The installation instructions retrieve the latest available version of an external npm package without specifying a reviewed version, integrity hash, signature, lockfile, or other immutable verification mechanism. ```markdown ## Install ```bash openclaw plugins install @emotion-machine/claw-messenger ``` The package is published to npm as [`@emotion-machine/claw-messenger`](https://www.npmjs.com/package/@emotion-machine/claw-messenger). You can verify the package contents before installing: ```bash npm pack @emotion-machine/claw-messenger --dry-run ``` ``` ### Technical Analysis The command `openclaw plugins install @emotion-machine/claw-messenger` does not identify a fixed package version. Its effective payload can therefore change whenever the publisher releases a new version or the registry resolves a different release. The suggested `npm pack --dry-run` command only reports which files would be included in the package. It does not authenticate those files, verify that they correspond to reviewed source code, detect malicious lifecycle scripts, or guarantee that the package inspected is the exact artifact later installed. Because the repository contains only `SKILL.md`, neither the plugin implementation nor the referenced `openclaw.plugin.json` manifest was available for local inspection. Consequently, the document's runtime security claims cannot be independently verified from the audited artifact. ### Attack Path 1. An attacker compromises the npm publisher account, package publication workflow, registry artifact, or a future upstream release. 2. The attacker publishes a malicious version under `@emotion-machine/claw-messenger`. 3. A user follows the documented unversioned installation command. 4. The package manager resolves and installs the a ...[truncated 972 chars]
Remediation
## Remediation Suggestions 1. Pin installation instructions to a specific reviewed package version, such as `@emotion-machine/claw-messenger@X.Y.Z`, rather than relying on the registry's current default version. 2. Publish and verify the package's cryptographic integrity hash or signed provenance before installation. 3. Ensure that inspection and installation operate on the same immutable package artifact rather than separately resolving the package name. 4. Review the complete packaged contents, including lifecycle scripts, executable files, transitive dependencies, and the plugin manifest. 5. Include the corresponding plugin source code and `openclaw.plugin.json` manifest in the auditable project or provide a verifiable mapping between the source revision and npm artifact. 6. Use a lockfile or equivalent dependency policy to pin transitive dependencies. 7. Install and run the plugin with least privilege, restricting filesystem, network, credential, and process access to only what its messaging function requires. 8. Establish a controlled update process in which each new version is reviewed and verified before deployment.
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

Static analysis

No suspicious patterns detected.