T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:54- Finding
Mutable Remote Installer Is Downloaded and Executed Without Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
ClawBridge’s dashboard purpose is coherent, but installation executes an unverified remote script and sets up a persistent, potentially internet-reachable control service.
Review this carefully before installing. Treat the one-line installer as granting the GitHub repository live code execution under your user account, and avoid enabling Cloudflare or Quick Tunnel unless you are comfortable exposing an authenticated agent-control dashboard remotely. Prefer a pinned, verifiable release and confirm how to disable and remove the systemd service before use.
SKILL.md:54Mutable Remote Installer Is Downloaded and Executed Without Verification
SKILL.md:12Installer Establishes Cross-Session Persistence Through a User-Level Systemd Service
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<license>MIT</license>
<tags>dashboard,monitoring,mobile,ui,control-panel,cost-tracking,cloudflare,tunnel</tags>
<!-- What this skill installs and runs -->
<runtime>
<type>node</type>
<entrypoint>index.js</entrypoint>
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
epage>
<license>MIT</license>
<tags>dashboard,monitoring,mobile,ui,control-panel,cost-tracking,cloudflare,tunnel</tags>
<!-- What this skill installs and runs -->
<runtime>
<type>node</type>
<entrypoint>index.js</entrypoint>
<persistence>Registers a user-level systemd service (clawbridge.service) that auto-starts on login and restarts on failure.</persistence>
</runtime>
<!-- System requirements -->
<requires>
<dependency name="node" version=">=18" required="true" />
<dependency name="npm" version=">=9" required="true" />
<dependency name="git" version="any" required="false" description="Used for incremental updates; falls back to tarball download if absent." />
<dependency name="cloudflared" version="latest" required="false" description="Downloaded automatically from github.com/cloudflare/cloudflared if Cloudflare tunnel is enabled. Only required if using remote access without a VPN (Tailscale/WireGuard)." />
</requires>
<!-- Credential
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<dependency name="cloudflared" version="latest" required="false" description="Downloaded automatically from github.com/cloudflare/cloudflared if Cloudflare tunnel is enabled. Only required if using remote access without a VPN (Tailscale/WireGuard)." />
</requires>
<!-- Credentials / environment variables written to .env -->
<credentials>
<env name="ACCESS_KEY" description="Randomly generated 32-character hex key used to authenticate dashboard logins. Auto-generated on first install." required="true" generated="true" />
<env name="PORT" description="Local TCP port the dashboard listens on. Defaults to 3000, auto-incremented if busy." required="false" default="3000" />
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
<dependency name="cloudflared" version="latest" required="false" description="Downloaded automatically from github.com/cloudflare/cloudflared if Cloudflare tunnel is enabled. Only required if using remote access without a VPN (Tailscale/WireGuard)." />
</requires>
<!-- Credentials / environment variables written to .env -->
<credentials>
<env name="ACCESS_KEY" description="Randomly generated 32-character hex key used to authenticate dashboard logins. Auto-generated on first install." required="true" generated="true" />
<env name="PORT" description="Local TCP port the dashboard listens on. Defaults to 3000, auto-incremented if busy." required="false" default="3000" />
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
<dependency name="cloudflared" version="latest" required="false" description="Downloaded automatically from github.com/cloudflare/cloudflared if Cloudflare tunnel is enabled. Only required if using remote access without a VPN (Tailscale/WireGuard)." />
</requires>
<!-- Credentials / environment variables written to .env -->
<credentials>
<env name="ACCESS_KEY" description="Randomly generated 32-character hex key used to authenticate dashboard logins. Auto-generated on first install." required="true" generated="true" />
<env name="PORT" description="Local TCP port the dashboard listens on. Defaults to 3000, auto-incremented if busy." required="false" default="3000" />
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
<!-- File system paths written or modified -->
<filesystem>
<path type="write" location="skills/clawbridge/.env" description="Stores ACCESS_KEY, PORT, and optional tunnel config." />
<path type="write" location="skills/clawbridge/data/" description="Stores local agent log and token usage analytics." />
<path type="write" location="~/.config/systemd/user/clawbridge.service" description="User-level systemd service unit for auto-start." />
<path type="write" location="skills/clawbridge/cloudflared" description="cloudflared binary, only if downloaded during tunnel setup." />
Using '| bash' chains network retrieval directly into command execution with no validation boundary. This removes opportunities for user inspection and makes exploitation trivial if the fetched content is malicious, corrupted, or unexpectedly changed.
<!-- Installation — uses the script bundled in this repository -->
<install>
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
</install>
<instructions>
The same command-chaining pattern is used for updates, meaning the skill encourages repeated arbitrary code execution from the network. This is especially dangerous because update actions are often performed with less scrutiny than initial installs.
or leave it blank to use a temporary Quick Tunnel URL.
To update to the latest version:
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
To stop the service:
systemctl --user stop clawbridge
The installation example in the README-style section reinforces unsafe network-to-shell chaining. In the context of a persistent background service that can expose remote access features, arbitrary installer execution has especially significant security consequences.
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
See README.md for full documentation.
The skill explicitly offers remote access via Cloudflare Tunnel, including a temporary Quick Tunnel option, but does not provide a clear warning that this exposes the dashboard beyond localhost and may make agent telemetry and control functions reachable from the internet. Because the dashboard includes monitoring and cron-trigger functionality, users may underestimate the security consequences of enabling remote access.
The install step downloads a remote script from GitHub and executes it immediately via the shell. This creates a supply-chain execution risk: if the upstream repository, hosting path, network path, or referenced branch content changes or is compromised, arbitrary code will run on the user's system during installation.
<!-- Installation — uses the script bundled in this repository -->
<install>
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
</install>
<instructions>
The update instructions repeat the same unsafe pattern of fetching and immediately executing a remote script. This extends the supply-chain risk beyond installation to every update event, giving upstream compromise or branch drift a direct path to code execution on existing systems.
or leave it blank to use a temporary Quick Tunnel URL.
To update to the latest version:
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
To stop the service:
systemctl --user stop clawbridge
The public installation section again instructs users to execute a remote GitHub-hosted script directly. Repetition increases the likelihood of unsafe operator behavior and normalizes unaudited remote code execution as the default installation mechanism.
curl -sL https://raw.githubusercontent.com/dreamwing/clawbridge/master/install.sh | bash
See README.md for full documentation.
No suspicious patterns detected.