Back to skill

Security audit

Memory Health Score

Security checks for vulnerabilities and agentic risk

Overview

The skill appears intended for memory-health monitoring, but it asks users to create recurring unattended agent runs and describes automatic memory and issue changes without clear review or rollback controls.

Review this skill before installing if you do not want unattended agent activity. Prefer running check-health.mjs manually or scheduling that audited script directly, and only enable repair actions after adding explicit confirmation, backups, and a clear way to disable the cron job.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Warning
Location
SKILL.md:48
Finding
Persistent Scheduled Agent Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 48–51 **Vulnerability Type**: System Persistence **Risk Level**: Medium **Complete Code Snippet**: ```bash openclaw cron add --name "memory-health-check" \ --cron "0 9 * * *" --tz "Asia/Shanghai" \ --session isolated --agent main \ --message "Run the memory health score, generate a report, and update memory/health-score.json" ``` > The command’s message has been translated into English for reporting. The source uses the equivalent Chinese text. ### Technical Analysis The documented usage command registers a recurring cron task that invokes the main Agent every day at 09:00. The task remains active after the initiating session ends and causes future Agent execution without a new user request, meeting the definition of system persistence. The scheduled operation has a legitimate stated purpose—generating a memory-health report—and no hidden payload, privilege escalation, remote retrieval, or data exfiltration was identified. Nevertheless, using a natural-language message to invoke the main Agent creates a broader and less deterministic execution boundary than directly scheduling the audited local script. Future modifications to the Agent, Skill, workspace content, or message interpretation could therefore affect every subsequent unattended run. ### Attack Path 1. A user follows the usage instructions in `SKILL.md`. 2. `openclaw cron add` registers the `memory-health-check` recurring task. 3. The task persists beyond the current Skill or user session. 4. At 09:00 each day, the scheduler starts an isolated session using the main Agent. 5. The Agent interprets the natural-language message, processes workspace memory data, and updates `memory/health-score.json`. 6. Any later change in the Agent’s behavior, referenced Skill behavior, or relevant workspace instructions may be processed automatically during future scheduled runs. ### Impact Assessmen ...[truncated 619 chars]
Remediation
## Remediation Suggestions 1. Make manual, one-shot execution the default behavior. 2. Require explicit, informed user consent before creating any recurring task. 3. Schedule the audited local command directly, such as `node check-health.mjs`, instead of sending a natural-language instruction to the main Agent. 4. Run the task under a dedicated least-privileged identity restricted to reading the required memory files and writing only `memory/health-score.json`. 5. Document how to inspect, disable, and remove the scheduled task. 6. Provide a clear description of the schedule, execution identity, accessed files, written files, and expected resource usage before installation. 7. Consider expiration, bounded run counts, execution timeouts, and failure-rate limits so the task does not persist indefinitely or repeatedly consume resources after errors. 8. Protect the scheduled command and relevant local script from unauthorized modification.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (7)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill explicitly recommends automatic repair actions when the score is below 70, including memory compression, index rebuilding, and task cleanup, but provides no confirmation step, preview, backup, or warning that project data may be modified or removed. In an agent skill, these actions could alter persistent memory and issue state in ways that are hard to review or undo, creating a real integrity risk even if the intent is maintenance rather than harm.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
Advertising a 'one-click repair' button without any warning about side effects encourages users to trigger automated changes without understanding their scope. In this context, the same document already defines repair operations that can rewrite memory artifacts and close issues, so the UI shortcut increases the chance of unsafe or accidental data modification.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file is written entirely in Chinese and presents itself as a general guide, but it does not indicate that the language choice is optional or limited to a China-specific audience. The policy requires flagging language or locale constraints when they are imposed without user opt-in or clear justification.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
The entire skill description, commands, labels, and example output are presented only in Chinese, with no indication that users may choose another language or locale. This can be a natural-language policy concern when a skill implicitly enforces a language without explicit opt-in or documented regional scope.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The file includes natural-language comments and output strings in Chinese, including issue messages and grade labels, without indicating that the user can choose a language or that the tool is intended only for a Chinese-speaking context. This can violate a language/locale policy when a skill implicitly forces one language without opt-in.

Missing User Warnings

Low
Confidence
91% confidence
Finding
This code creates the memory directory if needed and writes a JSON file to `memory/health-score.json`, which is a file-modifying operation. Although the script's purpose is to calculate a score, there is no confirmation prompt, comment near the write, or user-facing log disclosing that it will persist results to disk.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
The natural-language description in the manifest is entirely in Chinese, which can impose a language expectation on users without any stated opt-in or indication that the skill is intended only for a Chinese-speaking audience. The policy allows locale constraints when they are explicitly justified, but this manifest does not document such a justification.

Static analysis

No suspicious patterns detected.