Back to skill

Security audit

Trigger Evaluator

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed wrapper for one OpenClaw trigger, but it runs an unreviewed external script and uses broad database/Docker authority for a narrow inspection task.

Install only if you trust the local OpenClaw workspace script it executes and the Docker/PostgreSQL environment it can access. Prefer packaging or pinning the engine and using a dedicated read-only database role before broad use.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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)

T07 · Tool Hijacking and Spoofing

Warning
Location
scripts/trigger-evaluator.sh:4
Finding

Unverified Delegation to an External Executable

Content
View full analysis
&2 exit 1 } exec "$ENGINE" ``` ### Technical Analysis The skill delegates its primary evaluation operation to an executable outside the audited project directory. Before execution, the wrapper checks only whether the target has its executable permission set. It does not validate the target's owner, permissions, cryptographic integrity, or whether the path resolves through a symbolic link. The external dependency is disclosed in `SKILL.md`, so no concealed malicious payload was identified in the packaged files. Nevertheless, the effective behavior of the `evaluate` command cannot be determined from this package alone. If another user or compromised process can replace the engine, modify its contents, or redirect its path through a symbolic link, a legitimate invocation of the skill will execute attacker-controlled code. ### Attack Path 1. An attacker obtains write access to `/home/cmart/.openclaw/workspace/scripts/stale_missions_engine.sh` or one of its parent directories. 2. The attacker modifies the engine or replaces it with an executable symbolic link or malicious program. 3. A user or agent invokes: ```sh trigger-evaluator.sh evaluate stale_missions_alert ``` 4. The wrapper's executable check succeeds because the substituted target is executable. 5. `exec "$ENGINE"` transfers control to the attacker-controlled program under the privileges of the invoking account. ### Impact Assessment Successful exploitation provides arbitrary command execution with the privileges of the user running the skill. The resulting access may include local files, environment vari ...[truncated 325 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Note
Location
scripts/trigger-evaluator.sh:7
Finding

Database Inspection Uses an Overprivileged PostgreSQL Role

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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 (1)

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The description suggests a general evaluator for real OpenClaw trigger rules against current database state, particularly using openclaw_trigger_rules, openclaw_missions, and openclaw_proposals. In contrast, this code chunk is narrowly scoped to one trigger name, stale_missions_alert. Its inspect path only fetches the trigger rule record from public.openclaw_trigger_rules and does not inspect mission or proposal state. Its evaluate path simply execs another script whose behavior is not visible here, so this chunk itself does not demonstrate the claimed database-backed trigger evaluation. Because the implemented behavior is materially narrower and relies on an undisclosed external engine, the declared description is not accurately represented by the supplied code chunk.

Content

No source excerpt is available for this finding.