Back to skill

Security audit

SQ Memory

Security checks for vulnerabilities and agentic risk

Overview

This skill provides advertised persistent memory, but its current implementation and setup guidance can expose or over-share stored agent data if installed without careful review.

Install only after reviewing the data path. Do not store secrets, regulated data, or full transcripts unless you have explicit user consent and a retention plan. Prefer HTTPS endpoints, never send API keys over plain HTTP, bind self-hosted SQ to localhost or put it behind authenticated TLS, use separate backend scopes for separate users or agents, and pin the installer/Docker image you deploy.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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 (5)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
index.js:136
Finding

Namespace Restrictions and Prefix Filtering Can Be Bypassed

Content
View full analysis
l.trim()); return lines; } catch (err) { if (err.message.includes('404')) { return []; // No memories found } throw err; } } ``` ### Technical Analysis The coordinate expansion function accepts a fully numeric 11-dimensional coordinate without applying the configured namespace. Consequently, namespace restrictions are not enforced for coordinates matching that format. The `list_memories` function also calculates `fullPrefix` and `encoded`, but never includes either value in the request or filters the response locally. It instead retrieves and returns the complete table of contents for the configured `phext`. These behaviors conflict with the documented claim that namespaces isolate agents. A namespace is being used as a naming convention rather than as an enforced authorization boundary. The risk is especially significant when multiple agents or users share the same backend storage scope or explicitly configure the same `phext`. ### Attack Path 1. Multiple agents are configured to use the same SQ endpoint and storage `phext`. 2. An untrusted agent or user invokes `list_memories("user/")`. 3. The function ignores the requested prefix and requests the complete table of contents. 4. Coordinates belonging to other workflows or agents wi ...[truncated 957 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:86
Finding

Sensitive Persistent Memory Is Transmitted in a GET Query String

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:38
Finding

Arbitrary Cleartext HTTP Endpoints Can Expose API Keys and Memory Data

Content
View full analysis
{ const url = new URL(this.endpoint + path); const isHttps = url.protocol === 'https:'; const lib = isHttps ? https : http; const options = { hostname: url.hostname, port: url.port || (isHttps ? 443 : 80), path: url.pathname + url.search, method: method, headers: { 'Content-Type': 'text/plain', 'User-Agent': 'OpenClaw-SQ-Skill/1.0.1' } }; // Add API key if provided (SQ Cloud) if (this.apiKey) { options.headers['Authorization'] = `Bearer ${this.apiKey}`; } ``` ### Technical Analysis The Skill accepts an arbitrary configurable endpoint and automatically chooses the cleartext `http` module whenever the URL is not HTTPS. It then sends the configured API key as a bearer token and transmits memory operations to that endpoint. Plain HTTP is reasonable for a strictly loopback-only development service, but the implementation does not restrict HTTP endpoints to loopback addresses. It also does not require an explicit insecure-development option or warn when a bearer credential is about to be sent without transport encryption. A remote HTTP endpoint allows an on-path attacker to observe or modify requests and responses. Altered recall responses are particularly dangerous for an agent-memory system because corrupted content may influence future agent decisions. ### Attack Path 1. A user configures a remote endpoint ...[truncated 970 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SELF-HOSTED.md:37
Finding

Self-Hosting Instructions Can Expose an Unauthenticated Memory Service

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:35
Finding

Primary Configuration Documentation Uses Credential Fields Ignored by the Runtime

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (44)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · .gitignore (reported line 3)May include surrounding context.

text
node_modules/
*.log
.env
.DS_Store

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · README.md (reported line 28)May include surrounding context.

md
Run it yourself (free) or use our hosted version (paid). Your agent gains four new abilities:
- `remember(key, value)` - Store something permanently
- `recall(key)` - Retrieve stored memory
- `forget(key)` - Delete memory
- `list_memories(prefix)` - Browse stored memories

## Quick Start

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · SKILL.md (reported line 69)May include surrounding context.

md
Run it yourself (free) or use our hosted version (paid). Your agent gains four new abilities:
- `remember(key, value)` - Store something permanently
- `recall(key)` - Retrieve stored memory
- `forget(key)` - Delete memory
- `list_memories(prefix)` - Browse stored memories

## Quick Start

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · index.js (reported line 120)May include surrounding context.

js
Run it yourself (free) or use our hosted version (paid). Your agent gains four new abilities:
- `remember(key, value)` - Store something permanently
- `recall(key)` - Retrieve stored memory
- `forget(key)` - Delete memory
- `list_memories(prefix)` - Browse stored memories

## Quick Start

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This code stores full conversation turns, including raw user and assistant messages, in persistent memory without any warning or consent mechanism. Full transcripts are more sensitive than summaries because they can capture credentials, health/financial details, or other personal data, increasing the risk of privacy violations, unauthorized reuse, and over-collection.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The comments explicitly promote using stored conversations for training data generation, but the example provides no consent, notice, or data governance safeguards. Reusing persistent conversation history for training materially increases privacy and compliance risk because users may not expect their chats to be repurposed beyond the immediate service interaction.

Content

No source excerpt is available for this finding.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
91% confidence
Finding

The skill exposes a deletion capability for persistent memory with no visible safeguards such as confirmation, scope restriction, soft delete, or authorization checks. In agent workflows, this enables prompt-induced or accidental erasure of long-term memory, potentially causing loss of critical state, policy context, or user data.

Content

Scanner excerpt · skill.json (reported line 39)May include surrounding context.

json
},
    {
      "name": "forget",
      "description": "Delete memory at a coordinate",
      "parameters": {
        "coordinate": {
          "type": "string",

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

The changelog instructs users to install or invoke a package via npx clawhub without pinning a specific version. Unpinned npx execution can fetch and run the latest published package at install time, which creates a supply-chain risk if a malicious or compromised version is released or if users expect reproducible behavior. In this skill context, the risk is elevated because the text is documentation that users may copy-paste directly into a shell.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The quickstart instructs users to run npx clawhub install sq-memory without pinning a specific version of the package or installer. This creates a supply-chain risk: a compromised or newly published package/version could execute unexpected code during installation, and documentation-driven execution makes that risk more actionable.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly tells the agent to permanently remember user preferences, identity details, and conversation summaries, but it provides no consent, retention, minimization, or sensitive-data handling guidance. In a memory skill context this is especially risky because the feature is designed to persist data across sessions, increasing privacy exposure and the chance of storing personal or confidential information indefinitely.

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
92% confidence
Finding

The README encourages storing persistent user preferences, contact information, and conversation history, but it does not warn about privacy, retention, consent, access controls, or deletion policies. In a memory skill, this omission is security-relevant because users and operators may store sensitive personal data indefinitely or in a hosted service without understanding the risks.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

The documentation tells users to pull a Docker image without pinning a version tag or immutable digest. This creates a supply-chain risk because a future image change, tag retargeting, or registry compromise could cause users to run unexpected code when following the guide.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The docker run -p 1337:1337 wbic16/sq 1337 example runs an unpinned image reference, which means execution behavior depends on whatever image is currently served under that name. In setup documentation, this is dangerous because users may repeatedly deploy a mutable image with no integrity guarantee.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 50)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 70)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 71)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 121)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 143)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 157)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 158)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 235)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 247)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 248)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SELF-HOSTED.md (reported line 289)May include surrounding context.

Systemd service (Linux):

bash
sudo nano /etc/systemd/system/sq.service
ini

Static analysis

Detected: suspicious.prompt_injection_instructions

Prompt-injection style instruction pattern detected.

Warn
Code
suspicious.prompt_injection_instructions
Location
QUICKSTART.md:112