Back to skill

Security audit

digital staff

Security checks across malware telemetry and agentic risk

Overview

This is a real OpenClaw management dashboard, but it exposes powerful agent, skill, config, and network-changing controls without clear access protection.

Install only if you intend to run a powerful local admin dashboard for OpenClaw. Keep it bound to localhost, do not run the firewall-opening helper unless you understand the LAN exposure, review any skill installation before using it, and assume the dashboard can modify agents, skills, OpenClaw configuration, and local model credential copies. VirusTotal was pending and was not used as a negative signal.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (25)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The manifest advertises a skill with substantial capabilities—environment access, filesystem reads/writes, network use, and shell execution—but does not declare permissions or warn users about the breadth of access. This undermines informed consent and makes it easier for a seemingly simple dashboard skill to perform sensitive host operations unexpectedly.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The documented behavior goes well beyond a passive dashboard: it can modify OpenClaw configuration, create/delete agents, invoke CLI installation commands, manage persistent services, expose firewall ports, and contact third-party APIs. This description-behavior gap is dangerous because users may install a monitoring UI without realizing it can make destructive system and network changes.

Context-Inappropriate Capability

High
Confidence
88% confidence
Finding
The web server exposes an endpoint that triggers local skill installation by invoking the OpenClaw CLI, which materially changes host state and may fetch/install untrusted content. In a dashboard context, this is especially dangerous because a remote HTTP caller can convert a UI service into a package/skill installation mechanism, increasing the attack surface and potentially leading to execution of malicious skill content.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
This script intentionally alters host firewall state to expose the dashboard service on the LAN, which is a privileged system-administration action beyond a normal UI/dashboard function. In this skill context, that makes the dashboard reachable by other machines on the local network and broadens the attack surface if the service lacks authentication, rate limiting, or hardening.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The log shows the dashboard persistently backing up and writing `/home/mike/.openclaw/openclaw.json`, which goes beyond passive monitoring and gives the web UI authority to alter core agent platform behavior. In an agent-management context, persistent config writes can accidentally corrupt the platform, introduce unsafe settings, or let any weakness in the dashboard become a durable compromise of future agent runs.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
The log shows POST requests enabling and disabling agent skills, which is a state-changing control surface rather than mere observation. Because skills can expand agent capabilities, unauthorized or mistaken toggling could activate risky tools, disable protective ones, or alter agent behavior in ways the user does not expect.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The dashboard performs browser geolocation, IP-based geolocation, reverse geocoding, and weather lookups to multiple third-party services even though those features are unrelated to core agent-management functionality. This exposes users' approximate or precise location data to external providers and increases privacy and data-sharing risk without a clear operational need.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The README explicitly states that per-agent model configuration includes API keys, which implies credentials are duplicated from a global config into each new agent directory. Credential proliferation increases the chance of accidental disclosure through backups, logs, file sharing, weaker permissions, or later agent export/deletion workflows, especially because these files live under a user-writable application tree.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
Recommending `lsof -ti:5181 | xargs kill -9` without caution can terminate unrelated processes bound to that port and bypass graceful shutdown. In an admin-oriented skill, users may copy-paste this command, causing avoidable service disruption or data loss.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The uninstallation instructions perform permanent deletion of skill files and service definitions without warning, increasing the risk of accidental destructive actions. Users may run these commands without understanding that configuration or local modifications could be irreversibly removed.

Missing User Warnings

Medium
Confidence
85% confidence
Finding
This endpoint causes a state-changing action with significant security implications by installing and enabling a skill, yet the code shows no confirmation, approval workflow, or other guardrails. In a web-accessible dashboard, such silent high-impact changes increase the chance of accidental or induced compromise, especially if combined with missing auth or CSRF elsewhere.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script silently runs `pip install --user flask flask-cors` and suppresses stderr with `2>/dev/null`, then ignores failure with `|| true`. This modifies the user's Python environment without clear consent or reliable reporting, which can leave the install in a partially working state and make troubleshooting or dependency-review difficult.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The script enables a user systemd service, which persists across future logins and changes startup behavior. Although the script does ask for consent earlier, it does not clearly explain that `enable` creates persistence beyond the current session, so the user may not fully understand the long-term effect.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script runs firewall-opening commands with sudo but does not clearly warn the user that it is exposing a service to the LAN or describe the consequences. In a dashboard-management skill, this is especially risky because users may treat it as a convenience helper and unintentionally make a potentially sensitive management interface network-accessible.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
Location data is transmitted to external services without any visible consent flow, notice, or privacy disclosure in the UI. Even if the browser prompts for geolocation permission, the code also falls back to IP-based lookup and sends location-derived data onward, which can surprise users and violate privacy expectations or policy requirements.

Natural-Language Policy Violations

Low
Confidence
84% confidence
Finding
The reverse-geocoding request hard-codes `localityLanguage=zh`, forcing a language preference to a third party without user choice. This is primarily a privacy and UX issue rather than a direct compromise, but it reveals an unnecessary preference and may produce misleading results for users in other locales.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
if command -v ufw &> /dev/null; then
    echo ""
    echo "检测到 ufw 防火墙,正在开放端口..."
    sudo ufw allow from 192.168.0.0/16 to any port $PORT comment 'Dashboard LAN access'
    sudo ufw reload
    echo "✅ ufw 规则已添加"
fi
Confidence
89% confidence
Finding
sudo

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
echo ""
    echo "检测到 ufw 防火墙,正在开放端口..."
    sudo ufw allow from 192.168.0.0/16 to any port $PORT comment 'Dashboard LAN access'
    sudo ufw reload
    echo "✅ ufw 规则已添加"
fi
Confidence
84% confidence
Finding
sudo

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
# 同时添加到 iptables
echo ""
echo "添加 iptables 规则..."
sudo iptables -C INPUT -p tcp --dport $PORT -j ACCEPT 2>/dev/null || {
    sudo iptables -I INPUT -p tcp --dport $PORT -j ACCEPT
    echo "✅ iptables 规则已添加"
}
Confidence
86% confidence
Finding
sudo

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
echo ""
echo "添加 iptables 规则..."
sudo iptables -C INPUT -p tcp --dport $PORT -j ACCEPT 2>/dev/null || {
    sudo iptables -I INPUT -p tcp --dport $PORT -j ACCEPT
    echo "✅ iptables 规则已添加"
}
Confidence
93% confidence
Finding
sudo

Unpinned Dependencies

Low
Category
Supply Chain
Content
flask>=2.0.0
werkzeug>=2.0.0
Confidence
93% confidence
Finding
flask>=2.0.0

Unpinned Dependencies

Low
Category
Supply Chain
Content
flask>=2.0.0
werkzeug>=2.0.0
Confidence
93% confidence
Finding
werkzeug>=2.0.0

Known Vulnerable Dependency: flask — 8 advisory(ies): CVE-2025-47278 (Flask uses fallback key instead of current signing key); CVE-2018-1000656 (Flask is vulnerable to Denial of Service via incorrect encoding of JSON data); CVE-2019-1010083 (Pallets Project Flask is vulnerable to Denial of Service via Unexpected memory u) +5 more

High
Category
Supply Chain
Confidence
89% confidence
Finding
flask

Known Vulnerable Dependency: werkzeug — 10 advisory(ies): CVE-2026-27199 ( Werkzeug safe_join() allows Windows special device names); CVE-2024-34069 (Werkzeug debugger vulnerable to remote execution when interacting with attacker ); CVE-2020-28724 (Open Redirect in werkzeug) +7 more

High
Category
Supply Chain
Confidence
91% confidence
Finding
werkzeug

Tool Parameter Abuse

High
Category
Tool Misuse
Content
GET  /api/agents              # List all agents
POST /api/agents              # Create new agent
GET  /api/agents/<name>       # Get agent details
DELETE /api/agents/<name>     # Delete agent
GET  /api/skills              # List all skills
GET  /api/agents/<name>/skills # Get agent skills
POST /api/agents/<name>/skills/<id>/enable
Confidence
90% confidence
Finding
DELETE /api/agents/<name>

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.install_untrusted_source

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
data/config.json:89