OpenClaw Web Chat Pro

PassAudited by VirusTotal on May 12, 2026.

Overview

Type: OpenClaw Skill Name: webchat-pro Version: 1.0.0 The skill bundle is classified as suspicious due to several significant vulnerabilities, primarily in `src/server-v15.js` and `src/public/index.html`. These include a hardcoded default password ('admin123'), plain text storage of the password in `chat-auth.json`, and client-side storage of the password in `sessionStorage`. Additionally, the `streamAI` function passes user-controlled input directly to the `openclaw agent` command, which, while using `shell: false`, could still pose a prompt injection risk if the `openclaw` agent itself is vulnerable to specially crafted arguments. The `postinstall` script in `package.json` copies files to a user's home directory, a broad permission that could be abused, though in this context it's for static assets. There is no clear evidence of intentional malicious behavior like data exfiltration or unauthorized remote control.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Installing the package may modify files outside this skill, and it is unclear which server file the documented startup path is meant to run.

Why it was flagged

The user is instructed to run npm install/npm start, but this lifecycle script may copy files into a different OpenClaw workspace path and suppress errors; the start target also does not match the provided code file manifest.

Skill content
"start": "node src/server.js", "postinstall": "cp -r public/* ~/.openclaw/workspace/chat-web/public/ 2>/dev/null || true"
Recommendation

Inspect package scripts before installing, avoid lifecycle scripts unless needed, and ask the publisher to remove hidden side effects and align the runtime entry point with the reviewed source.

ConcernMedium Confidence
ASI05: Unexpected Code Execution
What this means

If exposed through the web server or insufficiently constrained, chat/API activity could cause programs to run under the installing user's local account.

Why it was flagged

The backend can spawn a local process using dynamic command and argument variables, but the skill description does not clearly disclose local command execution or its allowed scope.

Skill content
const child = spawn(cmd, args, { env, shell: false });
Recommendation

Do not expose this server beyond a trusted local environment until the command execution path is reviewed, allowlisted, and documented.

ConcernMedium Confidence
ASI05: Unexpected Code Execution
What this means

A malicious message or model response could potentially run script in the browser and read page data such as session identifiers or password fields.

Why it was flagged

A shipped frontend inserts chat message content into innerHTML without escaping, which can turn untrusted user or model text into browser-executable HTML/JavaScript if that page is served.

Skill content
div.innerHTML = `... ${msg.content.replace(/\n/g, '<br>')} ...`;
Recommendation

Remove old public pages or render messages with textContent/strict sanitization before serving this app.

What this means

If the service is reachable by other users or the network, unauthorized people may be able to access or use the chat app more easily.

Why it was flagged

The documented default password is weak and the CORS setting is fully permissive for a web app that stores conversations and exposes chat/history APIs.

Skill content
PASSWORD=admin123
ALLOWED_ORIGINS=*
Recommendation

Change the password before first use, restrict allowed origins, and keep the service bound to localhost unless it is placed behind properly configured authentication.

What this means

A compromised or changed CDN script could run in the chat page and access page content.

Why it was flagged

The chat UI loads a third-party Markdown script from a CDN at runtime. This is purpose-aligned for Markdown rendering, but it is not pinned with an integrity check in the artifact.

Skill content
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
Recommendation

Bundle the dependency locally or pin it to a specific version with Subresource Integrity.

What this means

Chat sessions may remain accessible from the same browser or exported history after the immediate task is finished.

Why it was flagged

The browser persists a session identifier, matching the advertised session-persistence feature, but persistent chat sessions can retain sensitive context.

Skill content
SESSION_ID = localStorage.getItem('webchat_session_id'); ... localStorage.setItem('webchat_session_id', SESSION_ID);
Recommendation

Avoid entering secrets unless needed, clear stored sessions when finished, and protect the browser/profile used with this app.