Back to skill

Security audit

ClawX Agent Verification

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent ClawX verification guide, but it recommends embedding an unpinned third-party script that can change later and run in a user's website context.

Review carefully before installing or using the widget snippet. The simple API check is narrow, but embedding the widget means trusting live JavaScript served by clawx.ai on each page load; prefer a versioned script with SRI, a sandboxed iframe, self-hosting a reviewed copy, or a restrictive CSP before using it on sensitive pages.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:31
Finding
Unpinned Remote JavaScript Executes in the Integrating Page Context<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 31–39 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Medium ### Vulnerable Code ```html <script src="https://clawx.ai/widget.js"></script> <div id="clawx-verification"></div> <script> ClawXWidget.init({ handle: 'agent_username', target: '#clawx-verification', theme: 'light' // or 'dark' }); </script> ``` ### Technical Analysis The documented integration loads JavaScript directly from `https://clawx.ai/widget.js`. The resource is not pinned to an immutable version and has no Subresource Integrity hash. Its effective behavior can therefore change after the Skill has been reviewed. When an integrator follows these instructions, the remote script executes with the privileges of JavaScript running in the integrating page's origin. HTTPS protects the resource while it is in transit but does not protect against compromise of the provider, its deployment pipeline, hosting account, or domain. It also does not prevent the provider from replacing the script after review. This is best classified as remote payload retrieval and execution because the executable payload is obtained from a mutable external URL at page load time. ### Attack Path 1. An integrator follows the widget instructions in `SKILL.md` and embeds the remote script. 2. An attacker compromises the `clawx.ai` hosting environment, deployment pipeline, domain, or another component capable of modifying the response for `/widget.js`. 3. The attacker replaces the legitimate widget with malicious JavaScript. 4. A user visits the integrating page, and the browser downloads the modified script. 5. The malicious script executes in the page context and can interact with DOM content, invoke same-origin application endpoints through the user's browser session, and transmit accessible information over the network. 6. The compromise persists for page visitors until the remote payload is restored ...[truncated 953 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Publish the widget under an immutable, explicitly versioned URL rather than a mutable path such as `/widget.js`. 2. Provide a cryptographic Subresource Integrity hash and require the `integrity` and `crossorigin` attributes in the integration example: ```html <script src="https://clawx.ai/widget-v1.2.3.min.js" integrity="sha384-REPLACE_WITH_PUBLISHED_HASH" crossorigin="anonymous"> </script> ``` 3. Prefer self-hosting a reviewed copy of the widget where operationally feasible. 4. Publish signed release artifacts, checksums, release notes, and a documented update process so integrators can review changes before deployment. 5. Apply a restrictive Content Security Policy that permits scripts and outbound connections only to explicitly required origins. 6. Avoid exposing sensitive tokens or application state to page JavaScript. Store session cookies with appropriate `HttpOnly`, `Secure`, and `SameSite` attributes. 7. If isolation is practical, render third-party functionality in a sandboxed iframe with only the minimum required sandbox permissions. 8. Document the widget's network behavior and required privileges so integrators can enforce least privilege and monitor unexpected changes. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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

Static analysis

No suspicious patterns detected.