Back to skill

Security audit

Calendly

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Calendly integration, but it asks users to install and allow an unpinned third-party plugin that handles OAuth-backed Calendly actions, including destructive writes.

Install only if you trust ClawLink and are comfortable granting it ongoing access to your Calendly account. Before using write actions, verify previews carefully, especially for cancellations, organization membership changes, webhooks, and data deletion. Prefer a pinned or otherwise verifiable plugin release if one is available.

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:42
Finding
Unpinned Third-Party Plugin Receives Execution and OAuth Mediation Privileges## Vulnerability Details **File Location**: `SKILL.md`, lines 42–48 and 68–80 **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: Medium **Vulnerable Code**: ```bash openclaw plugins install clawhub:clawlink-plugin openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json openclaw gateway restart ``` The same file states: ```text No API key is required in chat. ClawLink stores the OAuth token securely and injects it into every Calendly API request on the user's behalf. ``` ### Technical Analysis The skill directs users to install `clawhub:clawlink-plugin` without an immutable version, cryptographic checksum, or signature constraint. It then adds the plugin to OpenClaw's allowed tools and restarts the gateway so the newly installed component is loaded. The external plugin subsequently mediates sensitive Calendly OAuth credentials and authenticated API requests. The reviewed project does not include the plugin implementation or identify a reproducible artifact corresponding to a reviewed version. Consequently, the behavior loaded during installation can differ from the behavior originally assessed if the upstream package changes or its distribution channel is compromised. Installation is disclosed and requires user confirmation, so the evidence does not establish malicious intent. The risk arises from granting executable and credential-handling authority to a mutable third-party dependency that cannot be verified from the audited project. ### Attack Path 1. An attacker compromises the plugin publisher, package registry entry, build pipeline, or upstream distribution account. 2. The attacker publishes a malicious release under the referenced mutable `clawlink-plugin` package name. 3. A user follows the skill instructions and installs the package without a pinned version or integrity verification. 4. OpenClaw adds the plugin to its allowlist and ...[truncated 974 chars]
Remediation
## Remediation Suggestions 1. Pin the plugin to an immutable, reviewed version rather than installing a mutable package reference. 2. Verify the package using a publisher signature and a cryptographic digest recorded in the skill. 3. Provide a link to the exact auditable plugin source and reproducible build artifact. 4. Document the precise Calendly OAuth scopes requested and apply least privilege. 5. Restrict the plugin's network access to explicitly approved ClawLink and Calendly endpoints. 6. Isolate OAuth token storage from general plugin execution and prevent tokens from appearing in logs, tool output, or error messages. 7. Preserve the existing requirement for explicit confirmation immediately before every write operation, including destructive actions. 8. Add package provenance checks, update review procedures, and a rollback mechanism for compromised releases.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (8)

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# List scheduled events
clawlink_call_tool --tool "calendly_list_scheduled_events" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'

# List event types
clawlink_call_tool --tool "calendly_list_event_types" --params '{"user": "https://api.calendly.com/users/USER_UUID"}'
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.