Core Capabilities V2

Security checks across malware telemetry and agentic risk

Overview

This memory tool is mostly purpose-aligned, but its monitor server can expose local memory/workspace data over an unauthenticated network interface and trigger a local command.

Use the memory query tool only after backing up any existing memory.db. Do not run monitor_server.py on an untrusted network unless you first change it to bind to localhost, add authentication, remove wildcard CORS, and restrict what files/API fields it serves. Run setup_cron.sh only if you want a persistent 30-minute sync job and verify your crontab afterward.

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI07: Insecure Inter-Agent Communication
High
What this means

If the monitor server is run, anyone who can reach the port, or a website loaded in the user's browser, may be able to read exposed workspace files or memory API responses.

Why it was flagged

The server binds to all interfaces, serves a broad workspace directory, and allows cross-origin browser reads without authentication.

Skill content
WORKSPACE = Path("/home/awu/.openclaw/workspace") ... super().__init__(*args, directory=str(WORKSPACE), **kwargs) ... self.send_header('Access-Control-Allow-Origin', '*') ... with socketserver.TCPServer(("", port), MemoryMonitorHandler) as httpd
Recommendation

Bind the server to 127.0.0.1 by default, serve only specific status files, remove wildcard CORS, add authentication, and clearly document the actual port and exposure model.

#
ASI07: Insecure Inter-Agent Communication
High
What this means

Private notes or memory records could be exposed through the monitoring API if the server is reachable.

Why it was flagged

The HTTP API returns memory names, descriptions, content, and source files from the SQLite database, with no authentication shown.

Skill content
elif self.path == '/api/memories': ... SELECT id, name, description, type, content, source_file, created_at, classified_type FROM memories ... LIMIT 100
Recommendation

Require a local-only authenticated token for memory APIs, minimize returned fields, and avoid exposing full memory content unless the user explicitly requests it.

#
ASI05: Unexpected Code Execution
Medium
What this means

Anyone who can access the monitor endpoint can trigger local command execution of the refresh script, and the executed script is outside the reviewed package contents.

Why it was flagged

A GET request to the refresh endpoint triggers a shell command that runs a local Python script from the workspace.

Skill content
elif self.path == '/api/refresh': self.refresh_status() ... os.system(f"cd {WORKSPACE} && python3 cron_monitor.py > /dev/null 2>&1")
Recommendation

Do not expose shell execution through an unauthenticated HTTP endpoint; replace it with a reviewed internal function or require local-only authenticated access.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

Running a normal query or sync could erase existing memory database records after a schema mismatch.

Why it was flagged

The database initializer can automatically drop the memories table if the schema does not match, without a visible backup or confirmation step.

Skill content
if columns and not required_columns.issubset(columns):
            # 删除旧表重新创建
            cursor.execute("DROP TABLE IF EXISTS memories")
Recommendation

Use a non-destructive migration path, create an automatic backup before schema changes, and ask for confirmation before deleting user memory data.

#
ASI10: Rogue Agents
Low
What this means

The skill can keep running periodic sync work after initial setup, changing the local memory database and writing logs.

Why it was flagged

The setup script installs a recurring background sync job every 30 minutes when the user runs it.

Skill content
echo "*/30 * * * * cd $SCRIPT_DIR && python3 $PYTHON_SCRIPT --sync-now >> $LOG_FILE 2>&1") | crontab -
Recommendation

Run setup_cron.sh only if periodic sync is desired, inspect crontab after setup, and remove the job when no longer needed.

#
ASI06: Memory and Context Poisoning
Low
What this means

Private or untrusted markdown content placed in the memory directory may be stored and reused in future memory queries.

Why it was flagged

The tool persists markdown memory content into a local SQLite database for later querying.

Skill content
DB_PATH = Path(__file__).parent / "memory.db" ... MEMORY_DIR = Path(__file__).parent / "memory" ... INSERT OR REPLACE INTO memories ... content, source_file
Recommendation

Keep secrets out of the memory directory, protect memory.db and logs, and treat retrieved memory content as untrusted unless verified.