Back to skill

Security audit

cron-audit

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed OpenClaw cron health checker with an opt-in repair mode that should be used carefully because it can edit live cron jobs.

Install for cron health auditing if you want an agent to inspect OpenClaw scheduled jobs. Use --full or --json for read-only checks. Only allow --heal or the scheduled watchdog example after reviewing the route and alert configuration, because that mode can change live cron delivery and failure-alert settings.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (8)

Lp3

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding
The skill instructs users to run shell commands and references a script that can modify live cron jobs with `--heal`, read environment variables, and write state or configuration-related data, but it declares no `permissions` or `allowed-tools` scope. That mismatch weakens least-privilege controls: an agent platform may permit broader shell, file, or environment access than reviewers and users expect, increasing the blast radius if the skill is misused or later modified.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
data = json.load(fh)
    else:
        try:
            r = subprocess.run([openclaw, "cron", "list", "--all", "--json"],
                               capture_output=True, text=True, timeout=120)
        except (OSError, subprocess.SubprocessError) as e:
            raise Blind(f"`{openclaw}` is not usable ({e})")
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The `--heal` mode performs live `openclaw cron edit` operations automatically on every finding with a generated fix, without an interactive confirmation step, dry-run default, or explicit per-change acknowledgement in code. In a cron-audit skill, this is more dangerous because the tool is designed to run against production scheduling state; a mistaken route map, bad environment variable, or incorrect detection can silently reconfigure alerts or delivery for many jobs.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
if not f["fix"]:
                kept.append(f)
                continue
            res = subprocess.run([openclaw, "cron", *f["fix"]], capture_output=True, text=True, timeout=120)
            if res.returncode == 0:
                healed.append(f["fixed_text"])
            else:
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
with open(src, "w") as fh:
                json.dump(data, fh)
            state = state or os.path.join(d, "state.json")
            return subprocess.run([sys.executable, SCRIPT, "--input", src, "--state", state,
                                   "--routes", os.path.join(d, "none.json"), *args],
                                  capture_output=True, text=True)
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
with open(state, "w") as fh:
                json.dump({"keys": ["x:route"], "labels": {"x:route": "`x`"}, "lastReportMs": NOW}, fh)
            cmd = [sys.executable, SCRIPT, "--openclaw", os.path.join(d, "missing"), "--state", state]
            first = subprocess.run(cmd, capture_output=True, text=True).stdout
            second = subprocess.run(cmd, capture_output=True, text=True).stdout
            self.assertIn("cannot run", first)
            self.assertEqual(second.strip(), ca.NO_REPLY)
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

subprocess module call

Medium
Category
Dangerous Code Execution
Content
json.dump({"keys": ["x:route"], "labels": {"x:route": "`x`"}, "lastReportMs": NOW}, fh)
            cmd = [sys.executable, SCRIPT, "--openclaw", os.path.join(d, "missing"), "--state", state]
            first = subprocess.run(cmd, capture_output=True, text=True).stdout
            second = subprocess.run(cmd, capture_output=True, text=True).stdout
            self.assertIn("cannot run", first)
            self.assertEqual(second.strip(), ca.NO_REPLY)
            with open(state) as fh:
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Scope Creep

Low
Category
Excessive Agency
Content
permit persons to whom the Software is furnished to do so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
Confidence
70% confidence
Finding
Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Static analysis

No suspicious patterns detected.