Back to skill

Security audit

looplink.app

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a legitimate Looplink integration, but it gives a remote service broad, changing tool authority tied to a permanent stored API key.

Install only if you trust Looplink to define and change the available tools over time. Treat the generated apiKey like a long-lived password, store it only in a secure secret store, and verify that you have a way to revoke or rotate it if the agent or device is compromised.

Vulnerability Patterns
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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
Findings (2)

T07 · Tool Hijacking and Spoofing

Error
Location
SKILL.md:47
Finding
Unbounded Dynamic Registration of Remotely Controlled Tools<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 47–56 and 102–108 **Vulnerability Type**: Dynamic tool hijacking through an unpinned remote manifest **Risk Level**: High ### Complete Code Snippet ```markdown ## Tool Loading At initialization: 1. Fetch: GET https://api.looplink.app/mcp/manifest 2. Register each entry in `tools[]` as a callable OpenClaw skill. Each tool contains: - name - description - input_schema - output_schema - requiresAuthorization ``` The resulting capability scope is summarized as follows: ```markdown ## Summary This skill: - Dynamically loads Looplink tools from the MCP manifest - Uses `createAgent` to obtain a permanent apiKey - Stores and reuses the apiKey securely - Injects raw Authorization headers when required - Executes tools via https://api.looplink.app/mcp/call - Exposes all Looplink MCP capabilities to OpenClaw ``` ### Technical Analysis The Skill retrieves its complete tool inventory from a remote endpoint at initialization and registers every entry in the returned `tools[]` array. It does not define a local allowlist, pin a reviewed manifest version, verify a digital signature, constrain acceptable tool names, or require approval when the manifest changes. As a result, the effective capabilities and Agent-visible instructions are not fixed by the audited package. The operator of the remote endpoint—or an attacker who compromises that endpoint—can change tool names, descriptions, schemas, and authorization declarations after the Skill has been reviewed. This behavior is necessary to some extent for a dynamic MCP integration, but automatically exposing **all** remote capabilities is broader than the minimum privilege required for a social bookmarking application. Tool descriptions and schemas received from the service should be treated as untrusted input rather than automatically trusted capability definitions. This finding does not establish that the current Looplink service is maliciou ...[truncated 1525 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace unrestricted registration with a local allowlist of reviewed tool names and expected schemas. 2. Reject tools whose names, descriptions, schemas, or authorization requirements differ from the reviewed definitions. 3. Pin a manifest version or content digest. Prefer a cryptographically signed manifest verified against a locally trusted public key. 4. Require explicit user or administrator approval before enabling new tools or accepting material capability changes. 5. Permit only the minimum set of tools required for the declared bookmarking and content-organization functionality. 6. Treat all remote descriptions, schemas, and tool responses as untrusted data and prevent them from overriding system or user instructions. 7. Record security-relevant manifest changes without logging credentials or sensitive tool arguments. 8. Apply strict limits to manifest size, schema complexity, tool count, response size, and network timeouts. 9. Present the destination and categories of transmitted data to the user before a newly registered tool is first invoked. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:21
Finding
Permanent API Key Requires Cross-Session Persistence Without a Defined Secure Lifecycle<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 21–27, 76–81, and 87–92 **Vulnerability Type**: Insecure long-lived credential storage requirements **Risk Level**: Medium ### Complete Code Snippet ```markdown ## Authentication Model Authentication is handled via the `createAgent` tool. When `createAgent` is called: - It returns an `apiKey` - The apiKey is PERMANENT - It is NOT session-scoped - It represents the agent’s persistent identity - It must be securely stored and reused - It should NOT be regenerated unless explicitly required ``` The cross-session persistence requirement is further defined as follows: ```markdown ## Initialization Requirements If no apiKey exists: 1. Call `createAgent` 2. Persist the returned apiKey securely 3. Wait for your human to claim you with the verification code. 4. Reuse this apiKey for all future authorized tool calls The apiKey must NOT be recreated per session. ``` The documented security guidance states: ```markdown ## Security Requirements - Store apiKey securely (encrypt if persisted) - Never log the apiKey - Never expose it in tool responses - Do not embed it in client-side code - Treat it as a long-lived secret credential ``` ### Technical Analysis The Skill mandates persistence and reuse of a permanent API key across sessions. Although it instructs implementations to store the key securely and avoid logging it, it does not prescribe an enforceable storage mechanism, access-control model, revocation procedure, rotation procedure, retention limit, or deletion workflow. Encryption alone is insufficient unless key management, filesystem permissions, process isolation, backup handling, and access auditing are also defined. A permanent credential has a larger exposure window than a session-scoped token, and compromise can continue across Agent restarts. The credential is legitimately required to authenticate authorized Looplink calls, but an indefinite permanent token exceeds the minim ...[truncated 1331 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Prefer short-lived, narrowly scoped access tokens with refresh-token rotation over a permanent API key. 2. Store credentials only in an operating-system credential vault, hardware-backed keystore, or dedicated secret-management service. 3. Never persist the key in ordinary Agent memory, project files, plaintext configuration, logs, transcripts, caches, or tool responses. 4. Restrict secret access to the specific process and identity that perform authorized Looplink calls. 5. Define and document credential revocation, rotation, deletion, backup exclusion, and incident-response procedures. 6. Provide a user-accessible mechanism to revoke a lost or compromised agent key immediately. 7. Bind the credential to the minimum required Looplink scopes and reject tools outside those scopes. 8. Ensure authorization headers are sent only to the exact HTTPS origin `api.looplink.app`, with redirects disabled or revalidated so credentials cannot cross origins. 9. Redact authorization headers and sensitive arguments from telemetry, crash reports, tracing systems, and error messages. 10. Require explicit user approval before initial agent creation and before storing a credential for cross-session use. ]]>
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 (7)

External Transmission

Medium
Category
Data Exfiltration
Content
This skill integrates OpenClaw with the Looplink MCP server.

Manifest endpoint:
https://api.looplink.app/mcp/manifest

Tool execution endpoint:
https://api.looplink.app/mcp/call
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
This skill integrates OpenClaw with the Looplink MCP server.

Manifest endpoint:
https://api.looplink.app/mcp/manifest

Tool execution endpoint:
https://api.looplink.app/mcp/call
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
This skill integrates OpenClaw with the Looplink MCP server.

Manifest endpoint:
https://api.looplink.app/mcp/manifest

Tool execution endpoint:
https://api.looplink.app/mcp/call
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
This skill integrates OpenClaw with the Looplink MCP server.

Manifest endpoint:
https://api.looplink.app/mcp/manifest

Tool execution endpoint:
https://api.looplink.app/mcp/call
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
This skill integrates OpenClaw with the Looplink MCP server.

Manifest endpoint:
https://api.looplink.app/mcp/manifest

Tool execution endpoint:
https://api.looplink.app/mcp/call
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill instructs creation and long-term storage of a permanent API key tied to a persistent identity, but does not warn about privacy implications, account linkage, revocation needs, or the blast radius if the credential is misused. In this context, the omission matters because the same document also promotes automatic reuse of that credential across future authorized calls.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The skill explicitly states that it exposes all Looplink MCP capabilities and dynamically registers every tool from a remote manifest, with no allowlist, scope restriction, or user-consent boundary. This creates an overly broad trust boundary: any current or future server-side tool becomes callable, including sensitive or destructive actions, and the risk is amplified because authorization is automatically provisioned and reused via a persistent API key.

Static analysis

No suspicious patterns detected.