Back to skill

Security audit

cron-copilot-ops

Security checks for vulnerabilities and agentic risk

Overview

This skill is for managing scheduled jobs, but it also guides agents through persistent service setup and mutable package installation that need careful review before use.

Install only if you intend to let an agent manage local scheduled jobs. Before enabling daemon or service mode, review the exact scripts, runtime user, service files, startup entries, and rollback steps. Prefer pinned releases and isolated virtual environments, avoid force deletion unless you explicitly confirm the target, and store SMTP credentials through a secret manager or tightly permissioned file rather than ordinary YAML config.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T06 · System Persistence

Error
Location
REFERENCE.md:805
Finding

Persistent Scheduler Installation Through OS Startup Services

Content
View full analysis
ProgramArguments /usr/local/bin/croncopilot start RunAtLoad KeepAlive ``` ```bash launchctl load ~/Library/LaunchAgents/com.croncopilot.agent.plist ``` The WSL guidance provides another persistence route: ```bash # To auto-start with WSL, add to ~/.bashrc or ~/.profile: croncopilot start --daemon 2>/dev/null || true ``` ### Technical Analysis The documentation establishes cross-session persistence through three platform-specific mechanisms: 1. A system-wide systemd unit enabled at boot with administrative commands. 2. A macOS LaunchAgent configured with both `RunAtLoad` and `KeepAlive`. 3. A shell startup entry that silently launches the scheduler whenever a WSL login shell starts. CronCopilot is explicitly designed to execute registered scripts on a schedule. Persisting the scheduler consequently persists the ability to execute every script referenced by its task database and configuration. The systemd definition follows least privil ...[truncated 2029 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
SKILL.md:41
Finding

Execution of Unpinned Third-Party Source and Packages

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:240
Finding

SMTP Credentials Stored in Plaintext Configuration

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (41)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documents script remove <name> --delete-file without clearly warning that it may permanently delete files from disk. In the context of an operations skill, this is more dangerous because agents may be managing real production scripts, so misuse could cause irreversible loss of executable assets or service outages.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The task add option table says --holiday-mode accepts only none, workday_only, holiday_only, and skip_holiday, but later documentation defines and demonstrates an additional skip_workday mode. This is an active contradiction in the skill's own reference about what behavior the command supports.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · REFERENCE.md (reported line 185)May include surrounding context.

md
| Option | Short | Description |
|--------|-------|-------------|
| `--force` | `-f` | Skip confirmation prompt and force remove the task. |

**Behavior:**
- Removes the task from the scheduler

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The reference sets the scheduler timezone example to Asia/Shanghai, which reflects a specific locale choice. Because this file is general-purpose documentation rather than a clearly region-specific compliance tool, presenting a fixed locale default without explicit user choice can conflict with language/locale policy expectations.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% 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 · REFERENCE.md (reported line 796)May include surrounding context.

systemd Service (Linux)

Generate and install a systemd service file:

bash
# Generate the service file

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 · REFERENCE.md (reported line 803)May include surrounding context.

croncopilot service install --type systemd

text

> **Note**: The `service` subcommand may not be available in all CronCopilot versions (e.g., it is not present in v0.1.0 CLI). If the command is unavailable, you can manually create the service configuration files as shown below.

This creates `/etc/systemd/system/croncopilot.service`:

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 829)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 830)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 834)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1194)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1209)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1210)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% 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 · REFERENCE.md (reported line 830)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% 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 · REFERENCE.md (reported line 1205)May include surrounding context.

bash
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 831)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1197)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1198)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1201)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1204)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1205)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · REFERENCE.md (reported line 1206)May include surrounding context.

md
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable croncopilot
sudo systemctl start croncopilot

# Check status
sudo systemctl status croncopilot

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% 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 · REFERENCE.md (reported line 839)May include surrounding context.

launchd Service (macOS)

Generate and install a launchd plist:

bash
croncopilot service install --type launchd

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% 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 · REFERENCE.md (reported line 845)May include surrounding context.

launchd Service (macOS)

Generate and install a launchd plist:

bash
croncopilot service install --type launchd

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% 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 · REFERENCE.md (reported line 849)May include surrounding context.

launchd Service (macOS)

Generate and install a launchd plist:

bash
croncopilot service install --type launchd

Session Persistence

Medium
Category
Rogue Agent
Confidence
75% 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 · REFERENCE.md (reported line 851)May include surrounding context.

launchd Service (macOS)

Generate and install a launchd plist:

bash
croncopilot service install --type launchd