Back to skill

Security audit

商服机器人

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent robot-control purpose, but it uses hardcoded root SSH access and unsafe shell-based command handling that users should review before installing.

Install only in a controlled lab or trusted robot network after replacing root/root with unique least-privilege credentials, disabling direct root password login, verifying SSH host keys, and fixing the shell interpolation before passing any untrusted text to the robot.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:311
Finding

Remote Root Command Injection Through Unsanitized ROS Command Text

Content
View full analysis
/dev/null 2>&1; ' "wait $E 2>/dev/null" ) cmd = f"{self._ros_env} && bash -c {repr(inner)}" _stdin, stdout, _stderr = self.ssh.exec_command(cmd, timeout=timeout + 10) ``` ### Technical Analysis The caller-provided `text` value is directly interpolated into a shell command enclosed in double quotes. The resulting command is passed to `bash -c` and remotely executed through an SSH session authenticated as `root`. Using `repr(inner)` only produces a Python representation of the complete command string. It does not make the embedded `text` safe for evaluation by the nested Bash process. Shell constructs accepted inside double quotes, including command substitution such as `$(...)` and backticks, can therefore be evaluated by Bash. For example, an input structurally equivalent to: ```text $(id) ``` would cause the remote shell to execute `id` while constructing the argument supplied to `rostopic`. Inputs containing quotes and shell operators may provide additional injection possibilities depending on the resulting quoting context. ### Attack Path 1. An attacker gains control of, or influences, the `text` argument passed to `send_cmd()`. 2. The value is embedded without shell-safe argument encoding into the `rostopic pub` command. 3. The client wraps the command in `bash -c`. 4. Paramiko sends the resulting command to the robot over SSH. 5. The remote Bash process interprets attacker-controlled shell syntax. 6. Because the SSH session uses the `root` account, injected commands execute with unrestricted system privileges. ### Impa ...[truncated 460 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:276
Finding

Hardcoded Shared Root Credentials and Excessive Remote Privileges

Content
View full analysis
"echo OK" ``` The sample client embeds and uses the same credentials: ```python ROBOT_IP = "192.168.100.165" SSH_USER = "root" SSH_PASS = "root" self.ssh = paramiko.SSHClient() self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.ssh.connect( hostname=self.ROBOT_IP, username=self.SSH_USER, password=self.SSH_PASS, timeout=10, ) ``` ### Technical Analysis The project documents and embeds a predictable default password for the system administrator account. Anyone who can reach the robot's SSH service and knows or discovers these instructions can attempt to authenticate directly as `root`. The account also has substantially broader permissions than required for the stated task. The client only needs to publish and read a small set of ROS topics, but it receives unrestricted operating-system administration privileges. Shared credentials prevent reliable attribution, individual revocation, and accountability. ### Attack Path 1. An attacker obtains access to the same LAN or otherwise gains network reachability to the robot's SSH service. 2. The attacker identifies the robot's address through observation, scanning, or configuration disclosure. 3. The attacker authenticates using the documented `root` / `root` credentials. 4. The SSH service grants an unrestricted root shell. 5. The attacker accesses or changes the operating system, ROS processes, robot configuration, and hardware-control workflows. No application-level vulnerability is required if the documented credentials remain active. ### Impact Assessment An attacker can obtain complet ...[truncated 483 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:291
Finding

SSH Server Authentication Disabled Through Automatic Host-Key Trust

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:251
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documentation instructs the agent to SSH into the robot as root using hardcoded default credentials and then execute shell commands remotely. Even if the stated purpose is only to run rostopic commands, this grants unrestricted administrative command execution on the robot, which directly contradicts the claimed restriction against modifying the robot and creates a clear path to takeover, tampering, or persistence if the skill is misused or the host is compromised.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

该说明将对话 Skill 的触发定义为“任意不含点餐/结账/视觉关键词的文本”,属于非常宽泛的自然语言触发条件,容易与普通日常表达大量重叠。文档也没有给出清晰的边界、完整触发词集合或负例来说明哪些输入不应触发,存在误调用风险。

Content

No source excerpt is available for this finding.