Back to skill

Security audit

Memori

Security checks for vulnerabilities and agentic risk

Overview

This skill clearly describes a cloud-backed long-term memory plugin, with some credential and data-handling cautions users should understand before enabling it.

Install only if you want OpenClaw session content, tool-use history, and related memory data stored by Memori after configuration. Prefer pinning the plugin to a reviewed version, keep projectId/entityId scopes narrow, avoid printing MEMORI_API_KEY, and review Memori's privacy and retention controls before enabling automatic memory capture.

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

Warning
Location
SKILL.md:62
Finding

Unpinned Third-Party Plugin Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 62-66
Vulnerability Type: Unpinned third-party dependency
Risk Level: Medium

bash
## Installation

```bash
openclaw plugins install @memorilabs/openclaw-memori
text

### Technical Analysis

The documented installation command references an npm package without an exact version or integrity digest. Consequently, the package registry can resolve the command to a release that differs from the version originally reviewed. The actual plugin source is not included in the audited project, so its behavior cannot be verified from this artifact.

This does not establish that the current package is malicious. However, a compromised publisher account, package registry, or future release could change the effective plugin payload after this skill has been reviewed. Because an OpenClaw plugin executes as code rather than passive content, a compromised release could perform operations available to the OpenClaw process.

### Attack Path

1. An attacker compromises the npm publisher account, package distribution channel, or a future package release.
2. The attacker publishes a modified version of `@memorilabs/openclaw-memori`.
3. A user follows the skill documentation and executes the unpinned installation command.
4. The package manager resolves the package name to the attacker-controlled release.
5. OpenClaw installs and loads the modified plugin.
6. The malicious plugin executes with the filesystem, environment, network, and application privileges granted to the OpenClaw process.

### Impact Assessment

Successful exploitation could permit arbitrary behavior within the privileges of the OpenClaw process. Depending on the host configuration, this may include reading accessible configuration and environment variables, accessing conversation data, making outbound network requests, modifying user-accessible files, or interfering with agent operations. The issue doe
...[truncated 116 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the plugin to an exact, reviewed version rather than installing the mutable latest release:
    bash
    openclaw plugins install @memorilabs/openclaw-memori@<exact-reviewed-version>
    
  • Publish and verify the expected package integrity digest before installation.
  • Ensure the package contents correspond to a reviewed source commit and signed release.
  • Use lockfiles or equivalent dependency controls where supported.
  • Monitor the package for ownership changes, unexpected releases, and registry compromise.
  • Run the plugin with least privilege, restricting filesystem access, environment-variable access, and outbound network destinations where the platform supports sandboxing.

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:184
Finding

API Key Exposure Through Troubleshooting Command

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 184-188
Vulnerability Type: Plaintext secret disclosure
Risk Level: Low

bash
**Plugin not loading:**

- Verify `enabled: true` in openclaw.json
- Check API key: `echo $MEMORI_API_KEY`
- Restart gateway: `openclaw gateway restart`

Technical Analysis

The troubleshooting guidance instructs users to print the complete MEMORI_API_KEY value to the terminal. Verifying whether an environment variable is configured does not require revealing its value. Terminal output may be retained in session recordings, CI logs, diagnostic captures, screen-sharing sessions, copied support transcripts, or other monitoring systems.

The shell command itself does not transmit the key to an attacker. Exploitation requires another party to obtain the resulting terminal output. Nevertheless, unnecessarily rendering a credential in plaintext increases the likelihood of accidental disclosure.

Attack Path

  1. A user encounters a plugin-loading problem and follows the troubleshooting instructions.
  2. The user executes echo $MEMORI_API_KEY.
  3. The complete API key is displayed in plaintext.
  4. The terminal output is captured by logging or recording software, exposed during screen sharing, copied into a support request, or observed by another person.
  5. An unauthorized party extracts the API key from that output.
  6. The party uses the credential against the Memori service, subject to the permissions and controls associated with that key.

Impact Assessment

An exposed key may allow unauthorized use of the associated Memori service account or project within the key's granted permissions. Potential consequences include quota consumption and unauthorized access to service operations or data available to that credential. Exact privileges cannot be determined from SKILL.md and depend on the provider's API authorization model. This finding does not imply local pri ...[truncated 18 chars]

Remediation
View remediation

Remediation Suggestions

Replace the secret-printing command with a presence-only check:

bash
if [ -n "$MEMORI_API_KEY" ]; then
  echo "MEMORI_API_KEY is set"
else
  echo "MEMORI_API_KEY is not set"
fi

Additional hardening measures:

  • Never request complete API keys in support tickets, logs, screenshots, or diagnostic bundles.
  • If identification is necessary, display only a small masked suffix after confirming that the provider considers this safe.
  • Redact credentials from terminal recordings and automated diagnostics.
  • Document immediate key revocation and rotation procedures for suspected exposure.
  • Prefer a dedicated CLI status command that validates authentication without displaying the credential.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest presents the plugin as a memory structuring/recall skill, but the documentation also grants capabilities for account signup and quota management. Understating the functional scope of an agent skill is dangerous because users and reviewers may authorize or install it without understanding that it can initiate account-related or service-management actions.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

An account-creation capability is not necessary for the core purpose of a memory skill and expands the plugin's effective authority into external account lifecycle actions. This can be abused for social engineering or unintended registration flows, especially in agentic contexts where users may not expect a memory plugin to request identity information like email addresses.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill claims that no data is captured or transmitted unless the user provides credentials, yet elsewhere documents agent-accessible signup and quota tools that extend beyond memory recall. This creates a capability/consent mismatch that can mislead users and integrators about what the agent may do, increasing the risk of unintended external actions or data exposure workflows.

Content

No source excerpt is available for this finding.