suspicious.dangerous_exec
- Location
- sms-webhook-server.js:51
- Finding
- Shell command execution detected (child_process).
AdvisoryAudited by Static analysis on May 10, 2026.
Detected: suspicious.dangerous_exec
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.
A crafted incoming SMS or local webhook request could run commands on the user’s machine under the account running the webhook.
The webhook message is built from parsed POST data and SMS preview/contact fields, then passed through a shell command string. The code only escapes quotes/newlines, so shell substitutions such as `$()` or backticks in incoming text could execute local commands.
const msg = `📱 SMS from ${data.contact || 'Unknown'}: ${data.preview || data.message || '(no content)'}`; ... execSync(cmd, { timeout: 15000, stdio: 'pipe' });Do not run the webhook until it is changed to use execFile/spawn with an argument array, strict input validation, and no shell interpolation.
Other local software, and potentially browser-accessible local requests, could spoof inbound SMS notifications or trigger the unsafe forwarding path.
The localhost webhook accepts unauthenticated POSTs and allows all origins before forwarding the received data to OpenClaw channels.
res.setHeader('Access-Control-Allow-Origin', '*'); ... if (req.method === 'POST' && req.url === '/sms-inbound') { ... forwardToOpenClaw(data); }Require a random bearer token or shared secret, validate the Origin, restrict CORS, limit request body size, and only accept notifications from the injected observer.
Anyone or any agent action using that browser profile could potentially view conversations or send texts as the user.
The skill relies on a paired Google Messages browser session, which is effectively delegated access to read and send SMS/RCS through the user’s phone.
Browser profile with persistent session ... Important: Enable "Remember this computer" to persist the session.
Use a dedicated browser profile, confirm outbound messages before sending, and revoke Google Messages device pairing when the skill is no longer needed.
Incoming SMS monitoring and forwarding could continue after the initial task until the service is disabled.
The documented optional systemd setup makes the webhook persistent as a user service. This is disclosed and purpose-aligned for real-time notifications, but it keeps monitoring/forwarding active in the background.
systemctl --user enable --now google-messages-webhook
Only enable the service if you need continuous forwarding, and know how to stop or disable it with systemctl when finished.
Users may have less assurance that the installed code matches the reviewed artifact or its claimed origin.
Installation is documented as a manual clone from a GitHub repository while the supplied metadata lists the source as unknown and package.json references a different repository namespace.
git clone https://github.com/kesslerio/google-messages-openclaw-skill.git ~/.openclaw/skills/google-messages
Verify the repository, commit, and file contents before installing or running the Node webhook.