T09 · Insecure Skill Coding Practices
- Location
computer_use.py:235- Finding
Documented sandbox and authorization controls are not enforced
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This desktop-control skill is broadly coherent, but it can delete files, capture screens, type into apps, launch commands, and kill processes while its documented safety controls are not actually enforced.
Install only if you are comfortable giving this skill broad control over your desktop session and user files. Treat screen capture, screen recording, keyboard input, application launch, file deletion, and process killing as sensitive actions; use a constrained test account or VM, avoid running it with elevated privileges, avoid xhost +local:, and do not rely on the documented sandbox or confirmation claims unless the implementation is changed to enforce them.
computer_use.py:235Documented sandbox and authorization controls are not enforced
SKILL.md:98Python dependencies are installed without version or integrity pinning
SKILL.md:484Troubleshooting guidance grants broad local access to the X server
This mismatch is security-relevant because the skill description understates destructive and surveillance-capable actions such as file deletion, renaming, process termination, and clipboard extraction. Users or orchestrators may invoke the skill believing it only performs benign visual management, when it can actually alter the filesystem and terminate processes.
This mismatch is security-relevant because the skill description understates destructive and surveillance-capable actions such as file deletion, renaming, process termination, and clipboard extraction. Users or orchestrators may invoke the skill believing it only performs benign visual management, when it can actually alter the filesystem and terminate processes.
This mismatch is security-relevant because the skill description understates destructive and surveillance-capable actions such as file deletion, renaming, process termination, and clipboard extraction. Users or orchestrators may invoke the skill believing it only performs benign visual management, when it can actually alter the filesystem and terminate processes.
The launch handler accepts a value documented as an application name but executes it directly via $name &, which allows arbitrary shell command execution rather than constrained app launching. In a computer-control skill, this is especially dangerous because an upstream agent or user prompt can turn 'launch app' into execution of any program or shell payload with the current user's privileges.
Copy, move, and especially delete operations can irreversibly alter user data, yet they occur with no confirmation, safety checks, or sandboxing. In a computer-control skill, unrestricted file mutation is highly dangerous because it enables destructive actions and data loss on the host filesystem.
The README advertises GUI automation, file management, screenshot/recording, application control, and process management without any guidance about user consent, confirmation prompts, scope limits, or handling of sensitive data. In a computer-control skill, these capabilities directly enable destructive actions and privacy-invasive collection, so omission of safeguards materially increases the risk of misuse or unsafe deployment.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get install -y scrot xdotool wmctrl xclip ffmpeg
# macOS
brew install imagemagick cliclick ffmpeg
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get install -y scrot xdotool wmctrl xclip ffmpeg
# macOS
brew install imagemagick cliclick ffmpeg
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get install -y scrot xdotool wmctrl xclip ffmpeg
# macOS
brew install imagemagick cliclick ffmpeg
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get install -y scrot xdotool wmctrl xclip ffmpeg
# macOS
brew install imagemagick cliclick ffmpeg
The skill advertises broad computer-control behavior and includes examples that imply shell, file read, and file write capabilities, but it does not declare any explicit tool scope or permission boundaries. For a desktop-control skill, missing scope is dangerous because it can silently expand into filesystem manipulation and command execution without policy enforcement or user visibility.
The main heading and introductory marketing text are presented in Chinese, and the rest of the skill documentation continues primarily in Chinese despite the manifest metadata being in English. This creates a language/locale constraint without any explicit user choice or justification, which matches the policy category for forced language without opt-in.
The skill promises confirmation before sensitive actions, but the documented commands perform destructive operations directly with no visible approval workflow. This creates a deceptive safety model where users may believe deletes or kills require consent when they may execute immediately.
The documentation claims sandboxing and protection of critical files, yet the examples show system-wide file and process operations with no demonstrated enforcement. That discrepancy can cause operators to trust the skill in sensitive environments, leading to unrestricted deletion, movement, process control, or data exposure.
The manifest description says the skill can record the screen and schedule system tasks, and the help output also advertises computer-record. However, this script only dispatches screenshot, mouse, keyboard, app, file, and monitor commands, with no recording or scheduling implementation present.
The keyboard function sends arbitrary keystrokes to the active window with no confirmation, preview, target validation, or safety boundary. In a GUI automation skill, this can cause unintended commands, credential entry into the wrong window, destructive actions, or social-engineering style abuse if invoked by an untrusted agent workflow.
Launching a user-supplied command without warning or confirmation is unsafe in a desktop-control skill because it can immediately execute arbitrary local programs and chained shell commands. The skill context makes this more dangerous, not less, since the stated purpose is to automate system interaction and users may assume 'app launch' is a constrained action rather than arbitrary execution.
Full-screen and window screenshot capture occur without any user-facing notice or confirmation, enabling silent collection of sensitive on-screen information. In a computer-use skill, that context makes the issue more dangerous because screen content often includes credentials, personal messages, and confidential documents.
Full-screen screenshots can capture secrets, credentials, personal data, tokens, and other sensitive content from any visible application. The method performs this capture without any user-facing warning, scope restriction, or consent check, which is risky in a computer-control skill.
# 尝试不同的截图工具
if self._command_exists("scrot"):
subprocess.run(["scrot", save_path], check=True)
elif self._command_exists("gnome-screenshot"):
subprocess.run(["gnome-screenshot", "-f", save_path], check=True)
elif self._command_exists("import"): # ImageMagick
Like the scrot-based path, this captures the entire screen and may collect secrets or private data from unrelated applications. The lack of consent, visibility, and capture scoping makes it risky in a general-purpose computer-control skill.
if self._command_exists("scrot"):
subprocess.run(["scrot", save_path], check=True)
elif self._command_exists("gnome-screenshot"):
subprocess.run(["gnome-screenshot", "-f", save_path], check=True)
elif self._command_exists("import"): # ImageMagick
subprocess.run(["import", "-window", "root", save_path], check=True)
else:
This alternate full-screen capture path has the same privacy risk as the other screenshot implementations: it silently captures everything visible on the desktop. In this skill context, unrestricted screenshotting is sensitive because it enables collection of user data across applications.
elif self._command_exists("gnome-screenshot"):
subprocess.run(["gnome-screenshot", "-f", save_path], check=True)
elif self._command_exists("import"): # ImageMagick
subprocess.run(["import", "-window", "root", save_path], check=True)
else:
raise RuntimeError("未找到截图工具,请安装 scrot 或 ImageMagick")
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
if self._command_exists("scrot"):
# 使用 scrot 的选区模式
subprocess.run(["scrot", "-s", save_path], check=True)
else:
raise RuntimeError("区域截图需要 scrot")
Window capture can expose sensitive contents from the active or targeted window without any confirmation or visibility to the user. In a desktop-control skill, silent collection of application contents materially increases privacy and data-exfiltration risk.
save_path = os.path.join(self.save_dir, filename)
if self._command_exists("scrot"):
subprocess.run(["scrot", "-u", save_path], check=True)
else:
raise RuntimeError("窗口截图需要 scrot")
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
@staticmethod
def _command_exists(cmd: str) -> bool:
return subprocess.run(["which", cmd],
capture_output=True).returncode == 0
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
@staticmethod
def _command_exists(cmd: str) -> bool:
return subprocess.run(["which", cmd],
capture_output=True).returncode == 0