Back to skill

Security audit

Cli Deadline Monitor

Security checks for vulnerabilities and agentic risk

Overview

The skill looks purpose-aligned for Greek tax-deadline monitoring, but it under-discloses network alerts, background scheduling, sensitive local data handling, and risky install commands.

Review this carefully before installing. Use a pinned, trusted OpenClaw CLI, avoid running setup with sudo unless your administrator approves it, restrict the data directory and log permissions, and only enable Slack/SMS/email/calendar integrations after deciding what client or business data may leave the machine. Also confirm how to disable scheduled monitors and remove generated logs, caches, and reports.

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

Warning
Location
SKILL.md:739
Finding
Unpinned npm Package Download and Execution via npx## Vulnerability Details **File Location**: `SKILL.md`, line 739 **Vulnerability Type**: Unsafe third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```bash # Install CLI deadline monitor skill npx openclaw skills add cli-deadline-monitor ``` ### Technical Analysis The installation instructions invoke `openclaw` through `npx` without pinning the package to a reviewed version or verifying its integrity. If the package is unavailable locally, `npx` can retrieve it from the configured npm registry and immediately execute its CLI entry point. This makes the code executed during installation dependent on mutable external registry state rather than the audited project contents. A compromised publisher account, malicious future release, registry substitution, or dependency-chain compromise could therefore cause users to execute attacker-controlled code. The project provides no lockfile, checksum, signature, trusted-publisher verification, or exact version in this command. The repository itself contains only documentation and evaluation fixtures; no malicious package payload was found locally. The risk arises specifically from the documented remote dependency resolution and execution process. ### Attack Path 1. An attacker compromises the `openclaw` npm package, one of its executable dependencies, or the registry resolution path. 2. The attacker publishes or serves a malicious version under the package name resolved by `npx`. 3. A user follows the installation instruction at `SKILL.md:739`. 4. `npx` resolves and downloads the unpinned package. 5. The downloaded package's CLI code or installation lifecycle logic executes with the invoking user's privileges. 6. The malicious code can access resources available to that user, including OpenClaw configuration, environment variables, and local compliance data. ### Impact Assessment Successful exploitation could result in arbitrary code execution with the privileges of the user running the ins ...[truncated 488 chars]
Remediation
## Remediation Suggestions 1. Pin the CLI to an exact reviewed version rather than resolving the latest available package: ```bash npx --yes openclaw@X.Y.Z skills add cli-deadline-monitor ``` 2. Verify that the pinned version is published by the expected maintainer and document the authoritative package name and registry. 3. Use a lockfile and npm integrity metadata in a controlled installation workflow where possible. 4. Prefer a preinstalled, organization-approved OpenClaw binary over download-and-execute behavior during skill setup. 5. Validate package provenance using registry signatures, attestations, or an internal allowlisted package mirror. 6. Review transitive dependencies and lifecycle scripts before approving new versions. 7. Consider disabling lifecycle scripts during installation when compatible: ```bash npm install --ignore-scripts --save-exact openclaw@X.Y.Z ``` 8. Run installation under a dedicated, least-privileged account without access to production credentials or sensitive client data.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Chaining Abuse

High
Category
Tool Misuse
Content
export OPENCLAW_DATA_DIR="/data"

# 2. Ensure jq is installed
which jq || sudo apt install jq

# 3. Ensure client data exists
ls $OPENCLAW_DATA_DIR/clients/*/compliance/obligations.json
Confidence
75% confidence
Finding
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The eval prompts are broadly phrased to monitor or check external AADE/EFKA systems, websites, deadlines, rate changes, and alerts without explicit scope boundaries, source allowlists, or safety exclusions. In an agent setting, this can lead to over-broad autonomous actions such as unbounded web access, scraping, external notifications, or unintended modification of local compliance data, especially if the runtime grants network and messaging capabilities.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
export OPENCLAW_DATA_DIR="/data"

# 2. Ensure jq is installed
which jq || sudo apt install jq

# 3. Ensure client data exists
ls $OPENCLAW_DATA_DIR/clients/*/compliance/obligations.json
Confidence
92% confidence
Finding
The setup instructs `which jq || sudo apt install jq`, encouraging privileged package installation directly from skill documentation. This normalizes running with elevated privileges and can be dangerous in environments where package sources, command context, or copy-pasted instructions are not independently verified.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The setup says the skill reads local files only and needs no external credentials, but the rest of the document repeatedly describes real-time monitoring of external government sites, outbound notifications, webhooks, and calendar sync. This mismatch can mislead operators into enabling a skill they believe is local-only when it may transmit data externally or behave differently than expected.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The document downplays outbound behavior by saying no external credentials are required and only local files are read, while later showing Slack, SMS, email, Google Calendar, Outlook, webhooks, and API polling. Users may unknowingly expose deadline data, business identifiers, or operational metadata to external services without a prominent warning.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The language configuration declares Greek (el-GR) as the primary language, and the installation example later sets the language to el-GR directly. This is a natural-language locale policy concern because the file imposes a language choice rather than presenting it as optional or user-selected.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The skill instructs users to run `npx openclaw` without pinning a specific package version. This can cause execution of a newly published or compromised package version at install/runtime, creating a supply-chain risk in a workflow that also describes network access, file writes, and alert integrations.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
The setup commands configure timezone, country, and language, including 'openclaw config set language "el-GR"', as a standard installation step. Because the document does not frame this as optional or ask for user preference, it constitutes a locale/language policy issue.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The claim that no personal data is collected conflicts with examples handling business VAT numbers, addresses, municipalities, contact emails, phone numbers, webhook destinations, and calendar identifiers. Misstating data handling can lead to privacy, compliance, and deployment decisions based on false assumptions.

Missing User Warnings

Low
Confidence
85% confidence
Finding
The skill specifies local report generation, dashboard state files, exports, and logs in system paths without prominently warning users that it writes potentially sensitive operational data to disk. Even if expected for a monitoring tool, undocumented writes can create confidentiality and integrity concerns on shared systems.

Static analysis

No suspicious patterns detected.