Back to skill

Security audit

elite memory skill

Security checks for vulnerabilities and agentic risk

Overview

This memory skill is broadly aligned with its stated purpose, but it can automatically persist and upload much more workspace data than users would reasonably expect.

Review this skill before installing. Use it only if you are comfortable with persistent memory files and external GitHub/Feishu integration, and do not enable the cron sync until the sync script is narrowed to explicit memory paths instead of the whole workspace. Keep the GitHub remote private, verify the remote URL, and avoid storing secrets or sensitive conversations in memory files.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/sync-memory-to-github.sh:91
Finding

Overbroad Git Synchronization Can Expose the Entire OpenClaw Workspace

Content
View full analysis
/dev/null || echo "无变更" # 推送并捕获结果 push_result=0 git push memory main 2>&1 || { log "⚠️ 推送失败,尝试先拉取..." git pull --rebase memory main 2>/dev/null || push_result=1 if [ $push_result -eq 0 ]; then git push memory main 2>/dev/null || push_result=1 fi } ``` ### Technical Analysis The script changes into `~/.openclaw/workspace` and runs `git add -A`. This command stages all tracked changes, deletions, and untracked files within the Git working tree rather than limiting synchronization to the declared memory files. The staged content is committed and pushed to the user-configured `memory` remote. Consequently, unrelated files under the workspace—including configuration files, logs, other Skills, project data, session state, or accidentally stored credentials—can be transferred to the remote repository. The Skill describes this operation as memory synchronization, so using the entire workspace as the synchronization boundary exceeds the minimum data access required for the declared functionality. A private Git repository does not eliminate the risk because its collaborators, a compromised repository account, or an incorrectly configured remote may still receive the data. Committed secrets may also remain recoverable from Git history after deletion from the current branch. ### Attack Path 1. The workspace is initialized as a Git repository with a remote named `memory`. 2. A sensitive or unrelated file is created or modified anywhere under `~/.openclaw/workspace`. 3. The user invokes the synchronization script manually or enables the documented daily cron task. 4. `git add -A` stages the unrelated file along wit ...[truncated 1200 chars]
Remediation
View remediation
&2 exit 1 fi ``` 5. Validate and display the `memory` remote URL during setup and before the first push. Require explicit user confirmation so an incorrectly configured destination is detectable. 6. Document exactly which files are uploaded and warn users that memory records may contain sensitive conversation data. 7. If sensitive files have already been committed, rotate exposed credentials, remove the files from Git history using an appropriate history-rewriting tool, force-push the sanitized history, and notify repository collaborators. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (21)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description promises an 'ultimate AI memory system' with WAL protocol, daily memory, long-term memory, GitHub auto-sync, and Feishu notifications. This code chunk only handles a narrow archival step: it checks for a temporary memory file, creates a template formal memory markdown file if missing, tweaks SESSION-STATE.md, and optionally fetches/fast-forwards from a GitHub remote. It explicitly states that actual AI analysis and updating MEMORY.md are future/manual steps, so those advertised capabilities are not implemented here. It also does not send Feishu notifications or perform an actual sync/push to GitHub. Therefore the description materially overstates and misrepresents this code chunk's real behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The description promises a broad memory system with WAL protocol, daily memory, long-term memory, GitHub auto-sync, and Feishu notifications. This specific code chunk implements only a narrow subset: a morning memory initialization/read routine plus optional Git pull/update behavior. It does interact with daily and long-term memory files and partially supports GitHub synchronization, but there is no WAL-related logic and no Feishu notification functionality at all. The trigger implied by the code is a scheduled 08:00 cron execution, while the declared triggers are empty. That omission is secondary, but the main issue is that the declared capabilities materially exceed what this code actually does.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill advertises and instructs shell-capable operations such as git, gh, crontab, and node execution, but does not declare an explicit tool scope or permissions boundary. That increases the chance an agent may run filesystem, network, or persistence-related commands without clear user consent or sandbox expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill is designed to persist conversation-derived memory and synchronize it to GitHub, but the user-facing description does not prominently warn that personal or sensitive content may be stored and externally synced. This can lead to uninformed disclosure of secrets, preferences, internal project data, or personal information.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
89% confidence
Finding

The setup flow creates a dedicated remote repository and configures a git remote for memory data, enabling durable retention and future external synchronization of conversation-derived content. In this context, that persistence is security-sensitive because it normalizes exporting memory to an external service where access control mistakes or oversharing can expose sensitive data.

Content

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

md
node scripts/init.mjs

# 2. 配置 GitHub remote
gh repo create ai-memory --private
git remote add memory git@github.com:username/ai-memory.git

# 3. 配置飞书通知 (可选)

Session Persistence

Medium
Category
Rogue Agent
Confidence
95% confidence
Finding

The crontab instructions establish recurring persistence and autonomous execution, including daily sync behavior, which extends the skill's actions beyond the immediate session. Persistence mechanisms are security-relevant because they can continue handling and exporting data without ongoing user awareness.

Content

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

bash
# 添加到 crontab
crontab -e

# 每日 23:55 同步
55 23 * * * ~/.openclaw/workspace/scripts/sync-memory-to-github.sh

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The WAL instructions explicitly direct the agent to persist user preferences, decisions, mistakes, and project context into memory files, and the skill also promotes scheduled GitHub sync and notification summaries. In context, this creates a meaningful data-exfiltration and privacy risk because sensitive conversation content may be stored in plain text and transmitted externally without strong minimization, classification, or consent controls.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest description is written entirely in Chinese, which indicates a language-specific presentation without any indication that users can choose another language or that the skill is intended only for a Chinese-speaking context. Under the policy, language or locale constraints should be optional or clearly justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

This shell script performs a file write operation by recursively copying the skill contents into the destination directory. Although it prints source and target paths, it does not warn the user that existing files in the target may be overwritten or merged, and there is no confirmation prompt before making the change.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · install.sh (reported line 32)May include surrounding context.

sh
echo ""
echo "2. 配置 GitHub remote:"
echo "   cd ~/.openclaw/workspace"
echo "   gh repo create ai-memory --private"
echo "   git remote add memory git@github.com:username/ai-memory.git"
echo ""
echo "3. 添加定时任务:"

Session Persistence

Medium
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · install.sh (reported line 36)May include surrounding context.

sh
echo "   git remote add memory git@github.com:username/ai-memory.git"
echo ""
echo "3. 添加定时任务:"
echo "   crontab -e"
echo "   55 23 * * * ~/.openclaw/workspace/scripts/sync-memory-to-github.sh"
echo "   0 8 * * * ~/.openclaw/workspace/scripts/morning-memory-read.sh"
echo ""

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This shell script's natural-language comments and echoed status messages are entirely in Chinese, including operational guidance shown to the user. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The header comments describe this as a '每日早晨自动读取记忆脚本' and '读取昨日记忆和长期记忆', which implies a read-oriented operation. In practice, the script creates and populates today's memory file when it does not exist, causing filesystem writes beyond the stated read behavior.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script claims to read memory, but the GitHub sync section mutates repository state by fetching and merging from a remote automatically during a scheduled run. In the context of an automated memory skill, this is more dangerous because it trusts a configured remote and changes local state without interactive review, which can import untrusted content into files later consumed by the agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The Feishu notification function transmits synchronization status and metadata such as timestamps, success/failure state, commit details, changed file count, and repository identifier to an external messaging channel. While it may not send full memory contents directly, it still discloses user activity and system metadata to a third-party communication platform without any explicit consent flow or minimization controls, which is risky in the context of a memory-management skill handling potentially sensitive data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script stages all workspace changes with 'git add -A' and automatically pushes memory files to a configured GitHub remote on a daily schedule without any interactive confirmation, content filtering, or sensitivity checks. In a memory system, those files are likely to contain user secrets, personal data, conversation history, or internal notes, so automatic exfiltration to a third-party service materially increases confidentiality risk even if the repository is intended to be private.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The template content is entirely in Chinese and explicitly fixes the timezone to Asia/Shanghai (GMT+8). This imposes a language and locale preference without any visible opt-in, alternative, or justification for a region-specific use case.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The user-facing description and operational instructions are presented entirely in Chinese, including command examples that expect Chinese input such as topic and conversation text. There is no indication that the skill supports other languages, offers opt-in locale selection, or is intentionally limited to a Chinese-speaking context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script's comments and all user-visible status messages are written in Chinese, which imposes a specific language on users without opt-in. Under the policy, locale or language constraints should either be optional or clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The generated memory file explicitly fixes the timezone to 'Asia/Shanghai (GMT+8)'. This is a natural-language locale constraint presented to the user, and the file does not offer any opt-in, configurability, or justification that the skill is intended only for that region.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script's descriptive comments and multiple user-facing log and error messages are in Chinese only. This imposes a single language on users and operators without offering any language choice or documenting a justified locale restriction.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.