Vector-Robot

Security checks across malware telemetry and agentic risk

Overview

The skill controls the robot as advertised, but a helper script can be tricked into running local commands and the optional voice proxy accepts messages without checking who sent them.

Review or patch the helper scripts before use, especially vector-say.sh. If using the voice proxy, bind it to localhost, add real API-key validation, and understand that voice requests and responses may be written to local files/logs. Only install the LaunchAgent if you want the proxy to run continuously, and supervise physical movement because cliff sensors are disabled during behavior control.

VirusTotal

55/55 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

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.

#
ASI05: Unexpected Code Execution
High
What this means

A malicious or accidental crafted phrase passed to the speech helper could run local commands as the current user.

Why it was flagged

The user-controlled speech text is inserted into Python source code instead of being passed as a safely quoted argument, so crafted text containing Python quote/control characters could change the executed Python code.

Skill content
TEXT="${1:-Hello}"
ENCODED=$(python3 -c "import urllib.parse; print(urllib.parse.quote('''$TEXT'''))")
Recommendation

Do not pass untrusted text to this helper until it is changed to pass text through argv or stdin, for example using python3 -c '...' -- "$TEXT" and reading sys.argv.

#
ASI07: Insecure Inter-Agent Communication
Medium
What this means

Other local processes, and potentially other machines on the network depending on binding/firewall behavior, could inject prompts into the proxy or receive responses intended for the wire-pod/OpenClaw bridge.

Why it was flagged

The proxy accepts OpenAI-compatible chat requests, advertises Authorization as an allowed header, writes the raw request to a file, and starts listening without any visible API-key validation or host restriction.

Skill content
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
...
if (req.url === '/v1/chat/completions' && req.method === 'POST') {
...
fs.writeFileSync(REQUEST_FILE, JSON.stringify(request, null, 2));
...
server.listen(PORT, () => {
Recommendation

Bind the proxy explicitly to 127.0.0.1, validate the configured API key or another secret, and restrict access with firewall rules before enabling voice integration.

#
ASI06: Memory and Context Poisoning
Low
What this means

Voice questions and answers may remain in local files or logs where other local users/processes with access to the skill directory could read them.

Why it was flagged

Incoming voice/chat content and raw request payloads are written to request.json and printed to logs, which is expected for this bridge but can preserve sensitive spoken content locally.

Skill content
console.log(`[${new Date().toISOString()}] Question: "${question}" (stream: ${isStreaming})`);
const request = { timestamp: Date.now(), question, raw: data };
fs.writeFileSync(REQUEST_FILE, JSON.stringify(request, null, 2));
...
console.log(`[${new Date().toISOString()}] Response: "${response}"`);
Recommendation

Treat request.json, response.json, and proxy logs as potentially sensitive; store them in a protected directory and rotate or delete logs when no longer needed.

#
ASI10: Rogue Agents
Low
What this means

If installed, the proxy will continue running after login/boot until the LaunchAgent is unloaded or removed.

Why it was flagged

The optional installer creates a user LaunchAgent that starts the proxy automatically and keeps it alive. This is disclosed and user-directed, but it is persistent behavior.

Skill content
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
...
launchctl load "$PLIST_PATH"
Recommendation

Install the LaunchAgent only if you want always-on voice integration, and document how to unload and remove it.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

The robot could drive off a surface or into objects if movement commands are used carelessly.

Why it was flagged

The skill gives commands for physical robot movement while behavior control disables cliff sensors. This is central to the stated purpose and is warned about, but it is still a physical safety-relevant capability.

Skill content
**⚠️ SAFETY: Cliff sensors are DISABLED during behavior control. Be careful with wheel movements!**
...
curl -s -X POST "$WIREPOD/api-sdk/move_wheels?lw=100&rw=100&serial=$SERIAL"
Recommendation

Use wheel movement only in a safe area, supervise the robot, and prefer explicit user confirmation for movement commands.