Back to skill

Security audit

Task Father

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its task-management purpose, but its cron helper can create persistent scheduled jobs and can overwrite or delete writable JSON files outside the intended task folder if given an unsafe cron name.

Review before installing. Only run cron-add or cron-rm when you explicitly want persistent scheduled OpenClaw work, set WORKSPACE_DIR and DEFAULT_CRON_TZ for your machine, and avoid arbitrary cron names until the script validates names and confines cron spec files to the task crons directory.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/task_father.py:143
Finding

Arbitrary JSON File Overwrite or Deletion Through an Unsanitized Cron Name

Content
View full analysis
Remediation
View remediation
str: if not SAFE_CRON_NAME.fullmatch(name): raise ValueError( "cron name must contain only letters, digits, underscores, and hyphens" ) return name ``` 2. Explicitly reject absolute paths, path separators, `.` and `..`, even if a regular expression is also used. 3. Resolve the destination and verify that it remains beneath the intended cron directory: ```python cron_dir = (task_dir / "crons").resolve() cron_dir.mkdir(parents=True, exist_ok=True) name = validate_cron_name(name) destination = (cron_dir / f"{name}.json").resolve() if destination.parent != cron_dir: raise ValueError("cron specification path escapes the cron directory") ``` 4. Apply the same validation and containment checks to both creation and removal operations. 5. Consider refusing to overwrite an existing specification unless replacement was explicitly requested. Atomic file creation or replacement should be used to avoid partial writes. 6. Avoid following attacker-controlled symbolic links. Where the deployment threat model includes local untrusted users, use low-level file operations with appropriate no-follow and exclusive-creation controls. 7. Run the skill under a least-privileged account whose filesystem permissions are limited to the required OpenClaw workspace. 8. Use `check=True` for the `openclaw` subprocess calls, or inspect their return codes. Only report success and append successful changelog entries after the external cron operation completes successfully. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (10)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 109)May include surrounding context.

md
- Keep machine-specific values in `config.env`, not in `SKILL.md`.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill explicitly instructs use of file read/write operations and shell commands, including modifying workspace state and invoking cron-related commands, but it declares no tool scope or permission boundaries. That omission increases the chance an agent can perform broader filesystem or shell actions than the user expects, making accidental or unsafe execution more likely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill directs creation and modification of persistent workspace files and cron jobs, which are system-affecting actions, but it does not prominently warn that these changes are durable and may schedule recurring execution. In an agent setting, this can lead to unintended persistence, unexpected background activity, or silent modification of user state without informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script performs cron add/remove operations without user-facing warning, confirmation, or even reliable failure reporting because subprocess.run is called with check=False. Silent external state changes are dangerous in automation because they can create persistent background actions or leave the system in an unexpected state without the caller realizing it.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is presented as a file-based task state-machine generator, but it also changes external scheduler state through the openclaw CLI. This mismatch can cause users or higher-level agents to grant trust or permissions under the assumption of local file generation while the script actually persists scheduled actions outside the workspace.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/task_father.py (reported line 164)May include surrounding context.

python
"--message", message,
        "--no-deliver",
    ]
    subprocess.run(cmd, check=False)


def rm_cron(task_dir: Path, name: str):

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Executing subprocess commands to manage cron jobs gives the script stronger capabilities than a generator-style helper would normally imply. In an agent environment, this can lead to privilege and intent confusion, where a caller expects file scaffolding but instead causes durable scheduled operations to be registered or removed.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/task_father.py (reported line 171)May include surrounding context.

python
spec = task_dir / "crons" / f"{name}.json"
    if spec.exists():
        spec.unlink()
    subprocess.run(["openclaw", "cron", "rm", "--name", name], check=False)


def main():

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The default cron timezone is set to America/Indianapolis, imposing a specific locale on scheduled operations unless overridden in configuration. This can violate language/locale policy expectations because the file does not obtain user opt-in or otherwise justify the locale restriction in natural language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The main configuration sets DEFAULT_CRON_TZ to America/Indianapolis, which forces a region-specific locale by default. No nearby documentation or prompt indicates that the user can choose or confirm this locale before it affects scheduling behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.