Back to skill

Security audit

NWO Robotics

Security checks for vulnerabilities and agentic risk

Overview

This skill appears intended to control robots, but it gives broad natural-language commands high-impact physical authority without adequate scoping or safety controls.

Review before installing. Use only with authorized robot/IoT accounts in a controlled environment, restrict API key permissions, keep NWO_API_URL pinned to the intended HTTPS service, and do not use it for unattended or production physical operations unless confirmation, command scoping, and safety interlocks are added.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T09 · Insecure Skill Coding Practices

Error
Location
index.js:7
Finding

Configurable API Base URL Can Exfiltrate Credentials and Operational Data

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:13
Finding

Declared Command Allowlist Is Not Enforced and Unknown Instructions Are Executed as General Tasks

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
index.js:99
Finding

Substring-Based Intent Routing Can Trigger Unintended Physical and Safety Operations

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
index.js:73
Finding

Untrusted API Response Content Is Returned Without Output Validation

Content
View full analysis
({})); throw new Error(error.message || `API error: ${response.status}`); } return await response.json(); ``` ```js const statusList = data.agents.map(agent => `• ${agent.name || agent.id}: ${agent.status || 'unknown'}` ).join('\n'); return `Robot Status:\n${statusList}`; ``` ```js const objects = data.objects.map(obj => `• ${obj.label} (${obj.confidence}% confidence) at [${obj.x}, ${obj.y}]` ).join('\n'); return `Detected ${data.objects.length} objects:\n${objects}`; ``` ```js const readings = data.sensors.map(sensor => `• ${sensor.location || sensor.id}: ${sensor.value}${sensor.unit || ''}` ).join('\n'); return `Sensor Readings:\n${readings}`; ``` ```js return `Task submitted. ${data.message || 'Processing...'}`; } catch (error) { return `Error processing task: ${error.message}`; } ``` ### Technical Analysis Multiple fields received from the remote API are interpolated directly into skill output without schema validation, type checks, length limits, control-character filtering, or trust-boundary labeling. This includes error messages, agent names and statuses, object labels, sensor data, and general-task messages. The user-input sanitizer does not mitigate this issue because it applies only to incoming user text, not API responses. If the remote API is compromised, if device-controlled metadata is attacker-influenced, or if requests are redirected through the configurable API base URL, an attacker can return arbitrary text that the skill presents as ordinary output. When skill output is ...[truncated 1414 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (12)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill documentation includes safety-critical commands such as 'Stop all robots', movement, patrol mode, and manipulation tasks without any visible warnings, prerequisites, or operator confirmation guidance. In the context of robot and IoT control, missing warnings increases the chance of accidental invocation, unsafe operation near people/equipment, and misuse by operators who may not understand the physical consequences.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README explicitly advertises 'Any natural language instruction' as a supported general task, which implies extremely broad activation and weak scope constraints. In a robotics skill, this is dangerous because ambiguous or unrelated user phrasing could trigger physical-world actions or cause the agent to over-delegate unsafe commands to the backend.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The handler routes unmatched or loosely matched user input into autonomous execution paths without an explicit warning, review step, or confirmation. Because this skill controls robots, free-form remote task planning can translate ambiguous or malicious prompts into unsafe physical actions, making the context substantially more dangerous than a typical software-only agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This skill enables control of robots and IoT devices, including examples like movement and emergency stop, but the manifest provides no user-facing warning that commands may trigger real-world, safety-critical physical actions. Without explicit warnings and operator safeguards, users or upstream agents may invoke dangerous actions in inappropriate contexts, potentially causing injury, equipment damage, or operational disruption.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly enables natural-language control of robots and IoT systems in the physical world, but the description does not prominently warn that user prompts can trigger movement, task execution, or emergency-stop behavior with real-world safety consequences. In a robotics context, omission of this warning increases the chance of accidental or uninformed activation of hazardous actions by users or downstream agents.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The example commands include safety-critical or potentially disruptive actions such as "Stop all robots," "Pick up the red box," and "Patrol mode on" without any caution about operational impact, authorization, or environment safety checks. Providing these as normal examples can normalize dangerous use and lead users or agents to invoke physical actions without understanding risks to people, equipment, or facilities.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The emergency-stop examples normalize issuing safety-critical commands without any warning, authorization note, or operational context. In a robotics skill, this can encourage users or downstream agents to trigger halts in live environments, potentially causing safety incidents, workflow disruption, or unsafe robot states depending on the machinery and process.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The movement-command examples show direct robot navigation instructions without warnings about collision risk, workspace clearance, human presence, or need for validation before execution. In a skill that controls physical robots, this omission can make unsafe movement requests appear routine and low-risk, increasing the chance of accidental equipment damage or harm in real-world settings.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill advertises 'secure robot control' but accepts natural-language input and passes it to broad remote execution endpoints such as plan_and_execute and execute_task. In a robotics context, this mismatch is dangerous because users may assume constrained behavior while the implementation permits open-ended actions that can affect physical systems.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code defines an ALLOWED_COMMANDS allowlist but never enforces it. As a result, any unrecognized input falls through to handleGeneralTask(), which forwards arbitrary user instructions to a remote plan_and_execute endpoint, enabling broad robot task execution despite the stated validation controls.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The function immediately performs a remote emergency_stop call affecting all robots. While the return message confirms the action afterward, there is no pre-execution warning or confirmation prompt informing the user that this command will remotely halt all robots.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest advertises broad natural-language control of robots and IoT devices without narrowing allowed actions, environments, or approval boundaries. In a safety-relevant domain, this can cause overbroad invocation and execution of hazardous commands from ambiguous prompts, increasing the chance of unintended physical actions.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
index.js:7