T08 · Insecure Dependencies
- Location
README.md:106- Finding
Unpinned npm Package Execution Through the Recommended npx Installation Command
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This robot-control skill is not malicious, but it needs review because it presents live robot movement and IM control without clear safety, authorization, or installer integrity guardrails.
Install only after reviewing the code and preferably from a pinned release or verified commit. Treat any real robot deployment as safety-critical: use a supervised test area, keep emergency stop available, restrict who can send IM commands, protect bot credentials, and add confirmation and motion limits before connecting live hardware.
README.md:106Unpinned npm Package Execution Through the Recommended npx Installation Command
The declared description centers on controlling robots via instant messaging platforms and specifically mentions Unitree robots and an Insight9 stereo camera. The supplied code only provides abstract IM adapter scaffolding: message models, adapter lifecycle methods, message sending interface, handler registration, and message routing. This is messaging infrastructure, not robot-control logic. While such an adapter could be a supporting component of a robot-control system, this chunk by itself does not substantiate the declared primary purpose or the named integrations, so the description is materially broader and different from the observed behavior.
The declared purpose centers on controlling robots through IM platforms and supporting specific robotics/camera hardware. The supplied code chunk does not implement any robot-control logic, hardware integration, or camera functionality. Instead, it defines a basic DingTalk adapter with connection state handling and a placeholder message-sending method. This is a materially different primary purpose from the description, so it should be flagged as a mismatch.
The description claims a skill for controlling various mobile robots through IM platforms, specifically mentioning Unitree robots and an Insight9 AI stereo camera. However, the supplied code chunk is only a simple Feishu adapter class with connect/disconnect state handling and a placeholder send_message method. This is not merely a supporting detail if evaluated as the supplied chunk's behavior: its observable purpose is IM adapter plumbing, and it does not demonstrate any robot-control, hardware integration, or camera interaction. Therefore the code chunk does not accurately represent the declared purpose.
The declared description says the skill controls various mobile robots through IM platforms and supports specific robotics hardware. However, the supplied code only defines a WeCom messaging adapter with basic connect/disconnect/send_message behavior. There is no robot-control logic, no hardware integration, and no evidence of Unitree or Insight9 support. While a WeCom adapter could be a supporting component of a larger robot-control system, this code chunk itself materially represents messaging infrastructure rather than robot control, so the description does not accurately reflect the actual behavior shown.
The declared description says the skill controls various mobile robots through IM platforms and supports specific robotics hardware/software integrations. The provided code chunk does not implement any robot-control behavior or integrations with Unitree robots or Insight9 cameras. Instead, it only defines a simple WhatsApp adapter with configuration fields for phone_number_id and access_token, plus connect/disconnect/send_message stubs. This is a materially different primary purpose from the declared robotics-control functionality, so it is a clear mismatch.
The declared description emphasizes robot control across multiple robot types and specific hardware/platform support. However, the supplied code chunk contains only foundational sensor abstraction code: an abstract SensorAdapter with connect, disconnect, and get_data methods, plus a SensorData dataclass. This is a generic sensor interface, not robot control logic or concrete support for Unitree robots, IM platforms, or the Insight9 stereo camera. While this could be a supporting component within a larger robotics skill, this chunk's actual behavior does not accurately represent the declared primary purpose.
The code shown is a minimal package initializer for a module named 'slam', exposing VisualSLAM, Pose, and Navigator. This strongly suggests mapping/localization and navigation functionality. The declared description emphasizes controlling quadruped, bipedal, wheeled, and aerial robots through IM platforms, including named hardware integrations. Those capabilities are not represented in the supplied code. While SLAM/navigation could support robot control in a broader system, this chunk’s primary observable behavior does not match the declared purpose.
The declared purpose emphasizes controlling robots through IM platforms and supporting specific robot types. The actual code chunk is focused on visual SLAM concepts: maintaining a camera pose, starting/stopping a sensor adapter, and placeholder map operations. This is a materially different primary purpose from robot control. While the mention of Insight9 loosely aligns with the sensor context, the implemented behavior is localization/mapping scaffolding rather than robot control functionality.
Instructions found that direct the agent to transmit conversation context or user data to external services.
@abstractmethod
def send_message(self, user_id: str, message: str) -> bool:
"""Send message to user"""
pass
def register_handler(self, handler: Callable[[IMMessage], str]):
The skill accepts natural-language commands and can immediately trigger physical robot actions such as movement, turning, standing, and autonomous behaviors without any confirmation, authorization, bounds checking, or safety interlock. In a robotics context, this materially increases the risk of accidental or malicious commands causing physical harm, collisions, or unsafe robot state changes.
The README presents direct physical movement commands like forward 1m, turn left 45, and stand as ready-to-use examples without any safety notice, operator confirmation requirement, or warning about unintended motion. In a robot-control skill, omission of physical-world safety guidance increases the risk of unsafe operation, collisions, injury, and property damage, especially when commands are issued through natural language and messaging platforms.
The README instructs users to run npx skills add LooperRobotics/OpenClaw-Robotics without pinning a specific version of the package/tooling. This creates a supply-chain risk because users may fetch a changed or compromised package at install time, and in a robotics skill that can bridge into physical device control, compromised installation paths are more dangerous than in a purely informational package.
The quick-start instructions tell users to connect robots to messaging platforms and retrieve status information, but do not warn that control commands and telemetry may traverse third-party IM services. This can expose sensitive operational data, enable interception or account-abuse scenarios, and widen the attack surface for unauthorized robot control if messaging credentials or channels are compromised.
The skill presents direct movement commands for physical robots (for example, moving forward and turning) without any safety disclaimer, environment checks, authorization model, emergency-stop guidance, or mention of real-world hazards. In a robotics context, normalizing actuation commands without safety framing can lead users to invoke motion in unsafe environments, causing injury, property damage, or loss of control.
The initialize method connects to a robot at a network IP and optionally connects to IM services such as WeCom, Feishu, DingTalk, or WhatsApp, but there is no user-facing warning, logging, or explanatory comment about these outbound connections. This can transmit operational or system data over the network without any explicit disclosure in the code.
The manifest description scopes the skill to controlling robots via IM platforms and mentions support for an Insight9 stereo camera, which implies messaging-based robot control. However, this file implements onboard perception and autonomy features by starting VisualSLAM and navigating to spatial goals, which goes beyond straightforward IM-mediated control.
The line "Use English for code and comments" is a natural-language policy constraint that forces a specific language for contributor-authored text. Under the policy, language restrictions should either be optional or clearly justified as region- or compliance-specific, which is not provided here.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The provided skill manifest describes a skill named 'unitree-robot' that supports Unitree robots and Insight9 AI stereo camera, but this file declares the package as 'openclaw-robotics' and describes support for WeCom, Feishu, DingTalk, and WhatsApp. This creates a semantic mismatch between the claimed skill identity/scope and the codebase metadata being shipped.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The command patterns hard-code Chinese and English trigger phrases, which imposes specific language handling without any explicit user language selection or opt-in. This is a natural-language policy concern because locale behavior is embedded by default rather than being offered as a configurable choice.
The function signature and docstring suggest configurable sensor startup via the sensor parameter, but the implementation ignores that parameter and unconditionally instantiates Insight9Adapter. This creates an intent-code divergence in the API contract and documentation-facing behavior.
No suspicious patterns detected.