Back to skill

Security audit

Smart Auto Updater

Security checks for vulnerabilities and agentic risk

Overview

This documentation-only skill is purpose-aligned, but it promotes unattended automatic updates of OpenClaw and installed skills without enough scoping, approval, or recovery guidance.

Review before installing. Treat this as a Review item because it can automate updates to OpenClaw and skills on a schedule. Use report-only mode unless you deliberately want automatic updates, avoid MEDIUM auto-update, add your own approval and rollback process, verify update sources, and document how to remove any cron jobs it creates.

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

T06 · System Persistence

Error
Location
references/integration.md:8
Finding

Persistent Unattended Execution Through Recurring Scheduled Tasks

Content
View full analysis

Vulnerability Details

File Location: references/integration.md, lines 8-49
Vulnerability Type: Recurring scheduled-task persistence
Risk Level: High

Vulnerable Code

bash
### Basic Daily Check
# Check daily at 9 AM, auto-update LOW risk
openclaw cron add \
  --name "Smart Auto-Update (Daily)" \
  --cron "0 9 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --wake now \
  --deliver \
  --message "Run smart update check"

### Weekly Full Update
# Weekly on Sunday at 2 AM
openclaw cron add \
  --name "Smart Auto-Update (Weekly)" \
  --cron "0 2 * * 0" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --wake now \
  --deliver \
  --message "Run weekly smart update check with detailed report"

### Security-Focused Check
# Daily security check (high sensitivity)
openclaw cron add \
  --name "Security Auto-Update" \
  --cron "0 3 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --wake now \
  --deliver \
  --message "Run security-focused smart update check"

Technical Analysis

The integration guide instructs users to register daily and weekly OpenClaw cron jobs. These jobs survive the initiating Skill run and repeatedly launch the updater without requiring approval for each invocation.

Scheduled execution is related to the declared hands-off maintenance functionality, but the documented configuration creates persistent autonomous execution with update capabilities. This exceeds the privileges required for a one-time update check and materially increases the consequences of a compromised update source, erroneous AI risk assessment, or subsequent modification of the Skill.

The use of isolated sessions reduces session-state exposure but does not eliminate the persistence or autonomous update risks. The documentation also does not provide removal commands, expiration controls, source allowlists, or a mandatory approval gate before change ...[truncated 1390 chars]

Remediation
View remediation

Remediation Suggestions

  1. Make one-shot, report-only checks the default behavior.
  2. Require explicit and informed user consent before registering any recurring task.
  3. Require human approval before every update installation, even when an update is classified as low risk.
  4. Separate update checking from update application so scheduled jobs cannot directly modify the environment.
  5. Provide documented commands to list, disable, and remove every scheduled task created by the Skill.
  6. Add expiration dates, maximum-run limits, and visible ownership metadata to scheduled tasks.
  7. Execute checks and installations under a dedicated least-privileged account.
  8. Restrict update sources using immutable allowlists and verify package signatures or cryptographic checksums.
  9. Record each scheduled invocation and update decision in an append-only audit log.
  10. Accurately declare scheduling and update privileges in _meta.json, whose current capabilities and permissions arrays are empty.

T09 · Insecure Skill Coding Practices

Error
Location
references/risk-assessment.md:29
Finding

Unreachable HIGH-Risk Threshold Can Permit Unsafe Automatic Updates

Content
View full analysis

Vulnerability Details

File Location: references/risk-assessment.md, lines 29-42
Vulnerability Type: Defective security decision logic
Risk Level: High

Vulnerable Code

text
### Weighted Score
Architecture: 40%
Performance: 20%
Compatibility: 30%
Security: 10%

Total Score = (arch * 0.4) + (perf * 0.2) + (compat * 0.3) + (sec * 0.1)

### Risk Thresholds
- LOW: Total score < 2.0
- MEDIUM: Total score 2.0 - 3.5
- HIGH: Total score > 3.5

Each dimension is documented elsewhere in the same file as accepting a score from 1 through 3. Consequently, the highest possible weighted score is:

text
(3 * 0.4) + (3 * 0.2) + (3 * 0.3) + (3 * 0.1) = 3.0

Technical Analysis

The HIGH-risk threshold requires a score greater than 3.5, while the maximum possible input produces only 3.0. HIGH risk is therefore mathematically unreachable under the documented scoring model.

This invalidates a central safety guarantee of the Skill. Even an update receiving the maximum architecture, performance, compatibility, and security scores is classified as MEDIUM. The project permits configurations that automatically update MEDIUM-risk releases, so the defect can cause the most dangerous possible update to pass an automatic-update threshold.

The security dimension is also weighted at only 10%. A critical security condition does not independently block installation and may be outweighed by other dimensions. AI-based classification does not compensate for an impossible threshold in the deterministic scoring stage.

Attack Path

  1. An unsafe, compromised, or malicious update is made available through an update source.
  2. The analysis assigns the maximum score of 3 to every risk dimension.
  3. The weighted formula produces the maximum possible total of 3.0.
  4. Because HIGH requires a score greater than 3.5, the update is classified as MEDIUM rather than HIGH.
  5. A user has configured `SMART_ ...[truncated 1160 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the impossible thresholds with ranges reachable by scores from 1 through 3, such as LOW below 1.8, MEDIUM from 1.8 through 2.5, and HIGH above 2.5.
  2. Define boundary conditions unambiguously so every possible score maps to exactly one risk level.
  3. Add a fail-closed rule: if any individual dimension is rated critical, classify the entire update as HIGH regardless of the weighted total.
  4. Give security findings a mandatory blocking rule rather than relying only on a 10% weight.
  5. Prohibit unattended installation of MEDIUM- and HIGH-risk updates in all default configurations.
  6. Add automated tests for minimum, maximum, boundary, malformed, missing, and out-of-range scores.
  7. Validate AI-generated scores against a strict schema and reject uncertain or invalid assessments.
  8. Require independent signature verification, changelog validation, and human approval for breaking or security-sensitive releases.
  9. Reconcile configuration documentation so risk tolerance and automatic-update thresholds cannot produce contradictory decisions.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly supports automatic updates and even documents LOW-risk updates being applied automatically, but it does not prominently warn users that updates may occur without per-run confirmation. In an updater context, this is security-relevant because it can change code or system state autonomously based on AI risk classification, increasing the chance of unintended or unsafe changes being deployed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The cron examples repeatedly schedule the skill to run automatically and the surrounding text explicitly promotes hands-off maintenance, but the examples do not clearly warn that updates may be applied unattended on a recurring basis. In a skill that can decide to auto-update software, this can normalize deployment of autonomous changes without sufficient operator awareness, increasing the chance of unintended package changes or service disruption.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation specifies '--tz "Asia/Shanghai"' in the cron examples and repeats 'SMART_UPDATER_TZ="Asia/Shanghai"' as the default configuration, which imposes a specific locale setting. Because the file does not present this as an example to customize or justify it as region-specific, it conflicts with the policy against forcing a specific locale without user opt-in.

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 · references/integration.md (reported line 51)May include surrounding context.

Complete Configuration File

Create ~/.config/smart-auto-updater.env:

bash
# AI Model

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The configuration example defines 'SMART_UPDATER_TZ="Asia/Shanghai"' as the timezone setting, which effectively prescribes a specific locale. The guide does not offer alternatives or explain that users should replace it with their own timezone, so this is a natural-language locale policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The Feishu section provides a localized report template entirely in Chinese, but the file does not indicate that language selection is optional or user-configurable. This can violate language/locale policy when a skill forces a specific language for a channel without explicit opt-in or documented justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill is otherwise written in English, but this line switches to Chinese terms '(架构/性能/兼容性)' without any indication that multilingual output is optional or user-selected. This creates an implicit language choice in the skill documentation, which can conflict with language or locale policy expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.