Back to skill

Security audit

Latchkey

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent but gives agents broad authenticated API access through a credential-injecting curl wrapper without enough scoping or confirmation guidance.

Install only if you are comfortable letting agents make authenticated API calls on your behalf. Use least-privilege tokens, prefer read-only credentials when possible, verify each endpoint and request body before use, avoid broad cloud or payment credentials, and pin or audit the latchkey package before trusting it with secrets.

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:3
Finding

Unpinned Global Dependency Handles Sensitive API Credentials

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 3–5
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

yaml
description: Interact with arbitrary third-party or self-hosted services (AWS, Slack, Google Drive, Dropbox, GitHub, GitLab, Linear, Coolify...) using their HTTP APIs.
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey).
metadata: {"openclaw":{"emoji":"🔑","requires":{"bins":["latchkey"]},"install":[{"id":"node","kind":"node","package":"latchkey","bins":["latchkey"],"label":"Install Latchkey (npm)"}]}}

Technical Analysis

The Skill requires installation of the third-party latchkey npm package globally without specifying an approved version, integrity hash, lockfile, or source-verification procedure. The remaining instructions assign this dependency a security-sensitive role: it stores credentials and injects them into outgoing curl requests.

Because the package is installed globally and executes under the user's account, its installation and runtime code can access privileges available to that user. Its position as a transparent HTTP wrapper also gives it direct access to authenticated requests and potentially to API tokens, AWS access keys, and other credentials configured through the tool.

The audited project contains no implementation of latchkey, so the package itself could not be reviewed. There is no evidence in the supplied file that the current package is malicious. The confirmed issue is the unsafe dependency acquisition model and the absence of controls that would protect against a future compromised release, package takeover, or malicious transitive dependency.

Attack Path

  1. An attacker compromises the npm package, its publisher account, or one of its installation or runtime dependencies.
  2. A user follows the Skill instructions and runs npm install -g latchkey without a pinned version or integrity verification.
  3. npm in ...[truncated 1257 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin latchkey to a specifically reviewed version rather than installing the latest available release.
  2. Record and verify package integrity using an npm lockfile and trusted registry integrity metadata.
  3. Document the authoritative package repository and publisher identity, and verify provenance before installation.
  4. Avoid global installation where possible. Install the dependency in an isolated, least-privileged environment with a locked dependency tree.
  5. Audit the package, installation scripts, and transitive dependencies before allowing it to process credentials.
  6. Disable unnecessary npm lifecycle scripts during installation where compatible with the package's documented operation.
  7. Scope every API credential to the minimum required permissions and use separate credentials for separate services or tasks.
  8. Restrict credential injection to an explicit allowlist of trusted service domains and reject redirects or destination changes that could disclose authorization material.
  9. Rotate credentials promptly if dependency compromise is suspected, and maintain logs for authenticated operations so unauthorized activity can be detected.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
---
name: latchkey
description: Interact with arbitrary third-party or self-hosted services (AWS, Slack, Google Drive, Dropbox, GitHub, GitLab, Linear, Coolify...) using their HTTP APIs.
compatibility: Requires node.js, curl and latchkey (npm install -g latchkey).
metadata: {"openclaw":{"emoji":"🔑","requires":{"bins":["latchkey"]},"install":[{"id":"node","kind":"node","package":"latchkey","bins":["latchkey"],"label":"Install Latchkey (npm)"}]}}
---

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instructions tell the agent to interact with many third-party services and to look up public API documentation online, but they do not clearly warn that fulfilling such requests may transmit sensitive prompts, files, tokens, metadata, or environment-derived information to external systems. In this context, the lack of an explicit disclosure and consent step is dangerous because the skill is specifically designed to make authenticated external requests, including to user-registered services that may be less trusted.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill advises using Latchkey for broadly defined "services that have HTTP APIs" and even "or others," which can cause the agent to apply this capability to a very wide range of user requests without clear boundaries or safety gates. In context, this increases the chance of sending sensitive workspace, system, or user data to arbitrary third-party endpoints or performing unintended actions on external services.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.