Back to skill

Security audit

Session OpenClaw Bridge

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its bridge setup purpose, but its relay validation and workflow template can send API keys and messages over under-scoped or plaintext network paths and can perform a real send operation during validation.

Review this before installing. Use only trusted HTTPS relay and OpenClaw endpoints, store relay API keys in a credential manager rather than command lines or exported workflow JSON, and do not run the validator against production unless you are comfortable with it making a test POST to /send. Enable the n8n workflow only after confirming the allowed sender, relay host, credential scope, and message-sending behavior.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/validate_relay.py:29
Finding

Relay API Key Exposed Through Command-Line Arguments

Content
View full analysis
[api-key]", file=sys.stderr) sys.exit(2) base = sys.argv[1].rstrip("/") api_key = sys.argv[2] if len(sys.argv) > 2 else None ``` ### Technical Analysis The validator accepts the relay API key as a positional command-line argument. Command-line arguments can be exposed through shell history, process inspection utilities, operating-system audit records, job runners, and CI/CD logs. Although the key is not printed by the script itself, passing it through `sys.argv` creates unnecessary local disclosure channels. The credential subsequently authorizes access to relay polling, attachment, and send endpoints. ### Attack Path 1. An operator invokes the validator with `validate_relay.py https://relay.example API_KEY`. 2. The shell records the invocation in command history, or a local process-monitoring facility captures the process arguments. 3. Another local user, administrator, monitoring service, or person with access to automation logs retrieves the API key. 4. The exposed key is submitted to the relay's authenticated endpoints. 5. Subject to the relay's authorization policy, the attacker reads queued data, probes attachments, or submits outbound messages. ### Impact Assessment Successful exploitation exposes the privileges assigned to the relay API key. Potential scope includes reading relay messages, accessing attachment endpoints, and sending messages. This issue does not itself grant system-level privileges; impact is bounded by the relay credential's permissions and accessibility. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/validate_relay.py:33
Finding

Unrestricted Relay URL Can Enable Internal Network Probing and Credential Disclosure

Content
View full analysis
2 else None out = {} out["health"] = call(f"{base}/health") headers = {"Accept": "application/json"} if api_key: headers["X-API-Key"] = api_key out["poll"] = call(f"{base}/poll?since=0&limit=1", headers=headers) out["attachment_probe"] = call( f"{base}/attachment/test-message/test-attachment", headers=headers, ) ``` ### Technical Analysis The caller completely controls `base`, and the script does not validate its scheme, hostname, port, resolved address, or trust relationship. It consequently allows requests to loopback, private, link-local, or other internal HTTP services reachable from the executing host. When an API key is supplied, the validator attaches it to requests sent to the selected destination. Plaintext HTTP is accepted, so the credential can be observed in transit. The underlying `urllib.request.urlopen()` behavior also follows HTTP redirects by default; the implementation does not establish a policy preventing credentials from being sent or exposed during redirects to an untrusted destination. The network behavior is required for relay validation, but unrestricted destination selection and insecure transport exceed the minimum access needed to validate a known relay. ### Attack Path 1. An attacker supplies or persuades an operator or automation process to use a crafted base URL. 2. The URL points to an attacker-controlled server or an internal service, such as a loopback, private-network, or link-local address. 3. The validator sends `/health`, `/poll`, and attachment requests to that destination. 4. If an API key was provided, authenticated requests contain the `X-API-Key` header. 5. An attacker-controlled destination records the credential, while ...[truncated 665 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/validate_relay.py:51
Finding

Validation Performs a State-Changing Authenticated Send Operation

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/openclaw-session-relay-workflow.json:25
Finding

Workflow Template Sends Relay Credentials and Message Data Over Plaintext HTTP

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- `SKILL.md`

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill explicitly instructs use of network-capable artifacts and validation against live relay endpoints, but it does not declare any tool scope or permissions boundary. In an agent environment, this can lead to unintended outbound requests, endpoint probing, or interaction with attacker-controlled infrastructure without an explicit least-privilege restriction.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code accepts an API key from the command line and sends it in the X-API-Key header to the provided base URL, but there is no confirmation prompt, visible notice, or explanatory comment/docstring warning the user that credentials will be transmitted to a remote endpoint. For a code file, network transmission of credentials is safety-relevant and should be disclosed unless clearly documented as the skill's stated purpose.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

This JSON manifest describes a session-relay workflow, but it does not provide any explicit activation description, trigger phrases, or exclusion conditions for when the skill should or should not be invoked. For manifest files, this kind of underspecified trigger scope can lead to unintended use because the activation boundaries are not clearly documented.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
62% confidence
Finding

The workflow includes a fixed allowed sender value fallback, which imposes a specific communication constraint in configuration without accompanying natural-language justification. If this constraint reflects an organizational or locale-specific policy, it is not documented as an opt-in or justified limitation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.