Back to skill

Security audit

Computer Use

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it says, but it installs persistent remote desktop control with weak access controls and makes system-wide desktop changes that users should review carefully.

Install only on an isolated server or VM you are comfortable dedicating to remote GUI automation. Before running setup-vnc.sh, review the systemd services, require localhost-only binding and authentication for VNC/noVNC, and be prepared to remove the services and restore /usr/bin/xfdesktop. Do not expose ports 5900 or 6080 publicly.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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 (3)

T06 · System Persistence

Error
Location
scripts/setup-vnc.sh:31
Finding

Boot-Persistent Desktop and Remote-Control Services

Content
View full analysis
/dev/null [Unit] Description=Xvfb Virtual Display :99 After=graphical.target Wants=graphical.target [Service] Type=simple ExecStart=/usr/bin/Xvfb :99 -screen 0 1024x768x24 -nolisten tcp -dpi 96 Restart=always RestartSec=1 User=$USER Environment="HOME=$HOME_DIR" [Install] WantedBy=multi-user.target EOF ``` The script similarly creates `xfce-minimal.service`, `x11vnc.service`, and `novnc.service`, each with boot targets and automatic restart behavior: ```bash [Service] Type=simple ExecStart=/usr/bin/x11vnc -display :99 -forever -shared -rfbport 5900 -noxdamage -noxfixes -noclipboard Restart=always RestartSec=2 User=$USER Environment="HOME=$HOME_DIR" Environment="DISPLAY=:99" [Install] WantedBy=multi-user.target ``` The services are then enabled and started: ```bash sudo systemctl daemon-reload sudo systemctl enable xvfb xfce-minimal x11vnc novnc sudo systemctl start xvfb sleep 2 sudo systemctl start xfce-minimal sleep 3 sudo systemctl start x11vnc sleep 1 sudo systemctl start novnc ``` ### Technical Analysis The setup script uses `sudo` to write four system-wide unit files under `/etc/systemd/system`. It enables them for `multi-user.target` and configures every service with `Restart=always`. Consequently, the virtual desktop and its remote-control interfaces survive termination of the Skill process, user logout, service crashes, and system reboots. Persistence is disclosed in `SKILL.md` as an installation feature. Nevertheless, it is not required for individual screenshot, keyboard, mouse, or on-demand VNC operations. A less-privileged design could run these components as transient user processes or user-scoped services and ...[truncated 1356 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/setup-vnc.sh:68
Finding

Unauthenticated VNC and noVNC Services May Expose Desktop Control

Content
View full analysis
/dev/null [Unit] Description=x11vnc VNC Server After=xfce-minimal.service Requires=xfce-minimal.service [Service] Type=simple ExecStart=/usr/bin/x11vnc -display :99 -forever -shared -rfbport 5900 -noxdamage -noxfixes -noclipboard Restart=always RestartSec=2 User=$USER Environment="HOME=$HOME_DIR" Environment="DISPLAY=:99" [Install] WantedBy=multi-user.target EOF ``` Persistent noVNC proxy: ```bash cat < /dev/null [Unit] Description=noVNC WebSocket Proxy After=x11vnc.service Requires=x11vnc.service [Service] Type=simple ExecStart=/usr/share/novnc/utils/novnc_proxy --vnc localhost:5900 --listen 6080 --heartbeat 30 Restart=always RestartSec=2 User=$USER Environment="HOME=$HOME_DIR" [Install] WantedBy=multi-user.target EOF ``` Standalone startup mode: ```bash x11vnc -display "$DISPLAY_NUM" -forever -shared -nopw -listen localhost & sleep 2 websockify --web=/usr/share/novnc 6080 localhost:5900 & ``` ### Technical Analysis The persistent x11vnc service does not specify password authentication and does not explicitly bind its listening socket to `127.0.0.1`. The noVNC proxy listens on port 6080 without an explicit loopback listening address or an authentication layer. The standalone x11vnc mode is constrained to localhost but explicitly uses `-nopw`. Its corresponding `websockify` command also does not explicitly constrain port 6080 to loopback. Thus, access through the proxy may bypass the intended SSH-tunnel-only model, depending on the utility's effective defaults and host network controls. The documentation instructs users to connect ...[truncated 1524 chars]
Remediation
View remediation

T07 · Tool Hijacking and Spoofing

Warning
Location
scripts/setup-vnc.sh:105
Finding

System Executable Replacement Globally Hijacks xfdesktop

Content
View full analysis
/dev/null sudo chmod +x /usr/bin/xfdesktop echo " xfdesktop masked (original at /usr/bin/xfdesktop.real)" else echo " xfdesktop already masked or not found" fi ``` ### Technical Analysis The setup script renames the package-managed `/usr/bin/xfdesktop` binary and replaces the trusted path with a shell script that immediately exits. This changes the behavior of every user and process invoking that executable, not only the dedicated display `:99`. This is a local tool-hijacking pattern because a normal call to an established system executable now runs content installed by the Skill. The replacement is performed with root privileges and is not accompanied by an uninstall or automatic restoration mechanism. The stated purpose is to prevent VNC flicker. However, the project already contains a display-specific watchdog that kills `xfdesktop`. Session configuration, XFCE autostart controls, or process management scoped to display `:99` can achieve the objective without modifying a global system executable. ### Attack Path 1. A user runs the documented setup script and grants sudo authorization. 2. The legitimate `/usr/bin/xfdesktop` is moved to `/usr/bin/xfdesktop.real`. 3. A Skill-provided no-op shell script is installed at the original trusted path. 4. Any user, desktop session, service, or application invoking `/usr/bin/xfdesktop` executes the replacement. 5. XFCE desktop function ...[truncated 872 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (39)

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 31)May include surrounding context.

sh
# Install systemd services (generated inline)
echo "[3/6] Installing systemd services..."

cat <<EOF | sudo tee /etc/systemd/system/xvfb.service > /dev/null
[Unit]
Description=Xvfb Virtual Display :99
After=graphical.target

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 49)May include surrounding context.

sh
# Install systemd services (generated inline)
echo "[3/6] Installing systemd services..."

cat <<EOF | sudo tee /etc/systemd/system/xvfb.service > /dev/null
[Unit]
Description=Xvfb Virtual Display :99
After=graphical.target

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 68)May include surrounding context.

sh
# Install systemd services (generated inline)
echo "[3/6] Installing systemd services..."

cat <<EOF | sudo tee /etc/systemd/system/xvfb.service > /dev/null
[Unit]
Description=Xvfb Virtual Display :99
After=graphical.target

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 87)May include surrounding context.

sh
# Install systemd services (generated inline)
echo "[3/6] Installing systemd services..."

cat <<EOF | sudo tee /etc/systemd/system/xvfb.service > /dev/null
[Unit]
Description=Xvfb Virtual Display :99
After=graphical.target

Chaining Abuse

High
Category
Tool Misuse
Confidence
96% confidence
Finding

Although the pipeline mechanism itself is common, here it is used to overwrite a trusted system executable in /usr/bin with script content. In this context the chaining pattern contributes to system binary tampering and makes the modification less transparent than using supported package/configuration mechanisms.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 111)May include surrounding context.

sh
sudo mv /usr/bin/xfdesktop /usr/bin/xfdesktop.real
    echo '#!/bin/bash
# Masked - xfdesktop causes VNC flickering on Xvfb
exit 0' | sudo tee /usr/bin/xfdesktop > /dev/null
    sudo chmod +x /usr/bin/xfdesktop
    echo "  xfdesktop masked (original at /usr/bin/xfdesktop.real)"
else

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill clearly enables shell-based setup and operation but declares no explicit tool scope or permissions boundaries. That omission increases the chance an agent can invoke powerful shell commands without users understanding the required access level or the risk surface, especially because the skill also installs services and manipulates the desktop environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The setup instructions install persistent VNC/noVNC remote desktop services that auto-start on boot, but the documentation does not prominently warn that this exposes a live visual/control channel to the host. In context, this is especially sensitive because the skill is explicitly designed for full GUI control and stealthy automation, so misuse could expose credentials, sessions, and sensitive on-screen data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill exposes generic GUI automation primitives like click, type, drag, and keypress without warning that they can trigger irreversible actions such as sending messages, approving prompts, deleting files, or changing settings. Because these actions operate at the X11 level, they can affect any focused application, which broadens the blast radius of operator mistakes or agent misuse.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 136)May include surrounding context.

systemctl status xvfb xfce-minimal x11vnc novnc

Restart if needed

sudo systemctl restart xvfb xfce-minimal x11vnc novnc

text

### Service Chain

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 174)May include surrounding context.

systemctl status xvfb xfce-minimal x11vnc novnc

Restart if needed

sudo systemctl restart xvfb xfce-minimal x11vnc novnc

text

### Service Chain

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 175)May include surrounding context.

systemctl status xvfb xfce-minimal x11vnc novnc

Restart if needed

sudo systemctl restart xvfb xfce-minimal x11vnc novnc

text

### Service Chain

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 184)May include surrounding context.

systemctl status xvfb xfce-minimal x11vnc novnc

Restart if needed

sudo systemctl restart xvfb xfce-minimal x11vnc novnc

text

### Service Chain

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The inline documentation claims the script only clicks at coordinates, but the implementation also sleeps and captures a screenshot. This mismatch can mislead reviewers, users, and calling code into authorizing a low-risk input action while unintentionally permitting screen data collection, which is especially sensitive in a full-desktop automation environment.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script performs an additional side-effect beyond its stated click functionality by automatically invoking a screenshot after a delay. In a desktop automation skill, screenshots can capture sensitive data such as credentials, private messages, or tokens visible after the click, so bundling this behavior into a click primitive violates least surprise and increases data-exposure risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script captures a screenshot automatically after clicking without any explicit warning or consent mechanism at the point of use. In this skill's context, the desktop may contain sensitive application state, and the 2-second delay may intentionally capture post-click results such as opened dialogs, revealed secrets, or account information, increasing privacy and exfiltration risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script unconditionally takes a screenshot immediately after a drag action, but neither the usage text nor comments clearly warn callers that screen contents will be captured. In a full-desktop automation skill, screenshots can contain sensitive information such as credentials, personal data, internal documents, or other application state, so this creates a real privacy and data-exposure risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script automatically captures a screenshot after completing the key-hold action, but there is no indication in this file that the user explicitly requested or consented to image capture for this specific action. In a full-desktop automation skill operating over X11 on headless servers, screenshots can expose sensitive on-screen data such as credentials, tokens, private documents, or internal systems, making undisclosed capture a meaningful privacy and data-exposure risk.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 196)May include surrounding context.

md
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 19)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 20)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 24)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 25)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 26)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 31)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · scripts/setup-vnc.sh (reported line 49)May include surrounding context.

sh
# Install packages
echo "[1/6] Installing packages..."
sudo apt update -qq
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify

# Copy minimal-desktop.sh to a stable location

Static analysis

No suspicious patterns detected.