Back to skill

Security audit

Auto Updater

Security checks for vulnerabilities and agentic risk

Overview

This skill openly sets up automatic daily updates, but it gives a recurring background job broad authority to change Clawdbot and every installed skill without a review step.

Install only if you are comfortable with Clawdbot and all installed skills changing automatically. Prefer a dry-run or notification-only workflow, pin or approve versions before applying them, avoid running this under a highly privileged account, and know how to remove the cron job before enabling it.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Error
Location
references/agent-guide.md:35
Finding
Unattended and Unpinned Supply-Chain Updates<![CDATA[ ## Vulnerability Details **File Location**: `references/agent-guide.md:35-57`, `references/agent-guide.md:74-96`, and `SKILL.md:45-57` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: High The skill configures a recurring process that installs the mutable `latest` release of Clawdbot and automatically updates every installed skill without version pinning, integrity verification, staging, or an approval gate. ### Vulnerable Code From `references/agent-guide.md:35-57`: ```bash # Update Clawdbot log "Updating Clawdbot..." if command -v npm &> /dev/null && npm list -g clawdbot &> /dev/null; then npm update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE" elif command -v pnpm &> /dev/null && pnpm list -g clawdbot &> /dev/null; then pnpm update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE" elif command -v bun &> /dev/null; then bun update -g clawdbot@latest 2>&1 | tee -a "$LOG_FILE" else log "Running clawdbot update (source install)" clawdbot update 2>&1 | tee -a "$LOG_FILE" || true fi # Run doctor for migrations log "Running doctor..." clawdbot doctor --yes 2>&1 | tee -a "$LOG_FILE" || true # Capture new version CLAWDBOT_VERSION_AFTER=$(clawdbot --version 2>/dev/null || echo "unknown") # Update skills log "Updating skills via ClawdHub..." SKILL_OUTPUT=$(clawdhub update --all 2>&1) || true ``` The automatic execution is configured in `references/agent-guide.md:74-96`: ```bash clawdbot cron add \ --name "Daily Auto-Update" \ --cron "0 4 * * *" \ --tz "America/Los_Angeles" \ --session isolated \ --wake now \ --deliver \ --message "Run the daily auto-update routine: 1. Check and update Clawdbot: - For npm installs: npm update -g clawdbot@latest - For source installs: clawdbot update - Then run: clawdbot doctor --yes 2. Update all skills: - Run: clawdhub update --all 3. Report back with: - Clawdbot version before/after - List of skills that were updated (name + old version → new version) - Any ...[truncated 3324 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Do not install mutable releases automatically** - Replace `@latest` with an explicitly approved version. - Resolve source updates to reviewed commit hashes or signed release tags. - Maintain an allowlist of approved skill names and versions. 2. **Separate checking from installation** - Schedule `clawdhub update --all --dry-run` or an equivalent version check. - Send the proposed version changes to the user. - Require explicit approval before applying core or skill updates. 3. **Verify provenance and integrity** - Validate cryptographic release signatures or registry provenance attestations. - Compare downloaded artifacts against trusted checksums. - Restrict package and skill downloads to authenticated, explicitly configured registries. - Verify publisher identity and reject unexpected ownership changes. 4. **Stage updates before production use** - Install updates in a sandbox or test profile first. - Run security scans and functional tests against the exact artifacts that will be deployed. - Promote only the tested immutable versions. 5. **Reduce installation-time execution** - Disable package lifecycle scripts where supported and operationally feasible. - Review any required lifecycle scripts before permitting them. - Prevent newly updated skills from receiving sensitive tools until they have been reviewed. 6. **Apply least privilege** - Run the updater under a dedicated unprivileged account. - Avoid `sudo` and unnecessary write access to system-wide locations. - Limit filesystem, credential, environment-variable, and network access for update sessions. 7. **Support detection and rollback** - Preserve the previous known-good package and skill versions. - Record immutable versions, checksums, publishers, and update results in an append-only audit log. - Alert on unexpected publisher, registry, dependency, permission, or lifecycle-script changes. - A ...[truncated 350 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Self-Modification

High
Category
Rogue Agent
Content
# Capture new version
CLAWDBOT_VERSION_AFTER=$(clawdbot --version 2>/dev/null || echo "unknown")

# Update skills
log "Updating skills via ClawdHub..."
SKILL_OUTPUT=$(clawdhub update --all 2>&1) || true
echo "$SKILL_OUTPUT" >> "$LOG_FILE"
Confidence
97% confidence
Finding
`clawdhub update --all` causes the agent ecosystem to self-modify by fetching and installing updated skills from an external source. In this skill's context, that is especially dangerous because it combines unattended execution with broad trust of all installed skills, creating a supply-chain risk where a compromised or malicious update gains execution in future agent runs.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly configures unattended daily self-updates for both the core bot and all installed skills, which creates a software supply-chain risk: any compromised upstream package, malicious skill update, or breaking release will be automatically installed without human review. The danger is amplified because this runs from cron on a schedule and applies changes in bulk, increasing blast radius and reducing the chance a user notices or blocks a bad update before execution.

Session Persistence

Medium
Category
Rogue Agent
Content
bun pm ls -g 2>/dev/null | grep clawdbot && echo "bun-global"
```

## Step 2: Create the Update Script (Optional)

For complex setups, create a helper script at `~/.clawdbot/scripts/auto-update.sh`:
Confidence
84% confidence
Finding
The guide directs creation of a persistent helper script under `~/.clawdbot/scripts/auto-update.sh`, which establishes reusable execution state on disk. Persistence increases risk because later cron or agent actions can invoke the stored script, making it easier for unsafe update behavior or modified script contents to continue operating without fresh user review.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The helper script performs live update actions such as `npm update -g clawdbot@latest`, `clawdbot update`, `clawdbot doctor --yes`, and `clawdhub update --all` without presenting safety checks, staging, or approval gates. Even if intended for maintenance, these actions can irreversibly alter the environment, apply migrations automatically, and pull unreviewed changes from external sources.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The cron setup creates an unattended, persistent update job that modifies the installed bot and skills on a schedule, but the guide does not require an explicit warning or confirmation that ongoing automatic changes will occur. This is risky because future package or skill updates may introduce breaking changes or malicious code, and the persistence means the behavior continues beyond the initial setup.

Static analysis

No suspicious patterns detected.