T05 · Unauthorized Access and Privilege Escalation
- Location
dashboard.py:518- Finding
Unauthenticated Dashboard Exposes Sensitive Workspace and Agent Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent multi-agent automation purpose, but it exposes powerful local workflow controls too broadly and installs or runs code in ways users should review carefully.
Install only if you are comfortable with a skill that creates agents, writes OpenClaw workspace files, registers recurring automation, may push a public GitHub repo, and runs a dashboard with powerful controls. Before use, bind the dashboard to localhost only, add authentication, remove wildcard CORS, avoid exposing port 8080, review GitHub export contents, pin or vendor the framework integrations, and update the dashboard dependencies.
dashboard.py:518Unauthenticated Dashboard Exposes Sensitive Workspace and Agent Data
dashboard.py:728Unauthenticated API Can Trigger Agent Jobs and Modify Persistent Workflow State
dashboard.py:865Stored Cross-Site Scripting Through Unsafe Inline JSON Injection
SKILL.md:180Mutable Third-Party Repository Code Is Retrieved and Executed During Setup
The description presents a broad skill whose primary purpose is provisioning and managing a full OpenClaw multi-agent system, with many backend/bootstrap capabilities. However, the provided code chunk is only a frontend dashboard asset. It contains React DOM/runtime code and dashboard UI logic, including EventSource-based live updates and fallback polling, plus rendering of agent/task/alert/budget views. While this partially matches the dashboard portion of the description, it does not substantiate the core claimed capabilities such as one-command setup, environment bootstrapping, cron/dispatcher provisioning, export, or OS-level persistence. Therefore the supplied code materially underdelivers relative to the declared purpose and represents only a narrow subcomponent of the claimed skill.
The declared description promises a broad system for provisioning and managing a multi-agent AI team, with multiple operational commands and infrastructure automation. In contrast, this code chunk is a compiled/minified browser-side asset focused on rendering dashboard/chart components: legends, tooltips, layout calculations, responsive sizing, animation, and Redux-like state slices for chart layout and legend state. A dashboard is mentioned in the description, but this chunk only reflects generic UI/chart plumbing and does not substantiate the main claimed capabilities such as setup, rebuild, export, dispatch, communications, cron jobs, or agent orchestration. Therefore, the supplied code does not accurately represent the declared overall purpose.
The declared description presents a broad system bootstrapper with operational automation and deployment/export features. The provided code chunk is instead a minified/compiled client-side dashboard bundle centered on rendering charts and handling UI interactions. It includes React/Recharts components for pie/line/bar charts, axes, labels, tooltips, event handling, and some domain-specific dashboard formatting helpers for statuses, risks, due dates, and markdown export text. Those behaviors align only with the 'dashboard' portion of the description, and even there the code shown does not demonstrate SSE/file-watcher/live push plumbing—only frontend rendering logic. Because the primary claimed capabilities (setup wizard, bootstrapping infrastructure, dispatch, cron, export bundle, LaunchAgent) are absent from this code chunk, the description does not accurately represent what this supplied code actually does.
The declared description presents the skill primarily as a comprehensive setup and management tool for building a multi-agent AI team, with many capabilities spanning provisioning, orchestration, exporting, and dashboarding. The actual code chunk is much narrower: it is only a frontend React hook supporting live dashboard updates via SSE with polling fallback and reconnection behavior. While the description does mention a React + SSE live ops dashboard, this code covers only that supporting dashboard behavior and none of the core claimed setup/bootstrap functionality. Therefore, the supplied code chunk does not accurately represent the broad declared purpose and is materially narrower in behavior than described.
The declared description presents a broad interactive setup/bootstrapping skill whose primary purpose is to create and configure a full multi-agent AI team environment. The supplied code chunk does not implement that primary purpose. Instead, it implements only the dashboard portion: a local HTTP server with SSE live updates, filesystem watching, data aggregation from workspace JSON/Markdown files, and UI-serving behavior. Additionally, it includes mutable control actions not mentioned in the description for this chunk, such as triggering cron runs, toggling cron job enabled state by rewriting ~/.openclaw/cron/jobs.json, and updating task/HITL statuses in TASKS.json. While a dashboard is mentioned in the declared purpose, this code is materially narrower than the claimed setup wizard and also includes operational control capabilities that are not clearly declared. Therefore this chunk does not accurately match the declared description.
The supplied code only performs local template rendering and file generation from team.json into a workspace. It does support part of the declared setup story: creating agent persona/docs files, shared comms folders/files, infrastructure documents, and a portable bundle. However, the declared description claims a much broader and more sophisticated skill: an interactive setup wizard, operational dashboard, dispatcher logic, cron jobs, LaunchAgent persistence, and several named commands. None of those capabilities appear in this code chunk. The code’s primary purpose is narrower: static scaffolding generation. Therefore the description materially overstates what the provided code actually does.
The declared description presents the skill as a broad interactive setup and management wizard for creating a complete multi-agent team environment. The supplied code, however, is only the auto-dispatch portion of that system. It does not perform setup, provisioning, dashboard creation, export, rebuild, or status functions. Instead, it operates on an existing workspace by reading TASKS.json/comms files, deciding which agents to trigger, notifying the orchestrator about HITL tasks, applying cooldown/backoff/dependency logic, and persisting dispatcher state. While auto-dispatch is mentioned in the description, this chunk alone materially under-delivers relative to the declared primary purpose and represents a different operational behavior than an interactive bootstrap wizard.
The supplied code chunk only implements cron registration for an existing OpenClaw team definition. It reads a team JSON file, derives a timezone, checks existing cron names, and invokes openclaw cron add to create several scheduled jobs. This is at best one small supporting part of the declared system ('cron jobs'), but it does not match the declared primary purpose of a comprehensive interactive setup wizard that bootstraps an entire multi-agent AI team with dashboards, dispatcher, bundle export, and command interface. Therefore the description materially overstates and misrepresents what this code chunk actually does.
The framework installation step clones external code from GitHub, copies it into the skills directory, and then executes build_agents.py from that fetched content. This is a supply-chain risk: a compromised repository, branch, or transient network attack could lead to arbitrary code execution with the user's privileges.
git clone --depth 1 --filter=blob:none --sparse
https://github.com/oabdelmaksoud/openclaw-skills.git "$TMP"
cd "$TMP" && git sparse-checkout set -collab
cp -r -collab ~/.openclaw/skills/ && rm -rf "$TMP"
fi
python3 ~/.openclaw/skills/-collab/build_agents.py --force 2>/dev/null || true
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Status
launchctl list | grep coopercorp
curl -s http://localhost:8080/api/data | python3 -m json.tool | head -5
# Restart
launchctl stop ai.coopercorp.dashboard
brace-expansion 1.1.12 is affected by multiple DoS issues involving pathological expansion inputs that can hang or exhaust memory. Because this library is widely used in globbing and pattern parsing, a real vulnerability exists if any tooling path accepts attacker-controlled glob-like strings, even though in this project it is only a transitive dev dependency.
browserslist 4.28.1 is directly present in the toolchain and the advisories describe crash/prototype write conditions and memory growth from untrusted stats or query results. This is a real vulnerable dependency, but the exploitability in this React dashboard lockfile is mostly constrained to developer/build contexts rather than the shipped browser app.
flatted 3.3.3 has advisories for unbounded recursion DoS and prototype pollution during parse(). This is a real vulnerable dependency in the lockfile; while it is dev-only via caching/tooling paths, prototype pollution and parser abuse can still affect local automation or CI if untrusted serialized input is consumed.
js-yaml 4.1.1 is affected by multiple CPU exhaustion issues from crafted YAML structures. This is a true vulnerable dependency and, even though dev-only, YAML parsers are commonly exercised in lint/config workflows where attacker-supplied config or content in a repository could trigger denial of service in CI or local tooling.
nanoid 3.3.11 is reported vulnerable to infinite-loop and integer overflow edge cases in certain generator configurations. This appears to be a real dependency issue, but practical risk in this lockfile is limited because exploitation generally depends on specific API misuse with attacker-influenced size values and it is only transitively present through tooling.
picomatch 4.0.3 is affected by method-injection and ReDoS issues in glob matching. This is a real vulnerable dependency used in the Vite/globbing toolchain, and the danger increases if attacker-controlled file patterns or project contents are processed by the dashboard's development and rebuild workflows.
postcss 8.5.6 has multiple advisories including arbitrary file read and XSS-related issues tied to attacker-controlled source maps or CSS output. This is a real vulnerable dependency in the frontend toolchain, and the skill context makes it more concerning because it ships a React dashboard and likely processes frontend assets during active dev-server use.
vite 7.3.1 is flagged for multiple arbitrary file read and path traversal issues in the development server. This is a true vulnerability and especially relevant here because the skill explicitly provides a React + SSE live ops dashboard, making dev-server usage central to the feature set; if exposed beyond localhost, an attacker could read files outside the intended project scope.
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</head>
<body>
<!-- ── Header ─────────────────────────────────────────────── -->
<div id="header">
<div class="brand">Cooper<span>Corp</span> AGI</div>
<div class="live-indicator">
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<div class="nav-tab" data-tab="broadcast">Broadcast</div>
</nav>
<!-- ── Main ───────────────────────────────────────────────── -->
<main id="main">
<!-- OVERVIEW -->
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
</div>
</div>
<!-- TASKS -->
<div class="tab-panel" id="tab-tasks">
<div class="filter-bar" id="task-filter-bar">
<button class="filter-btn active" data-filter="all">All</button>
The README advertises a one-command GitHub export/push workflow but does not clearly warn users that workspace contents, generated agent files, prompts, task data, and possibly sensitive project material may be transmitted to an external third-party service. In a tool designed to bootstrap and manage multi-agent workspaces, that omission materially increases the risk of accidental data exfiltration by users who may assume export is local or fully safe by default.
The setup flow describes automated cron registration, framework installation, GitHub push, workspace commits, and persistent LaunchAgent/dashboard behavior without a prominent warning that these actions modify the local system, create persistence, install software, and may send data off-host. In an interactive bootstrapper, users may run setup expecting configuration only, making the missing safety disclosure a meaningful security and trust issue.
The skill clearly instructs use of shell, filesystem writes, network access, Git/GitHub operations, and environment-dependent commands, yet it declares no explicit tool scope or permissions. That makes the skill over-privileged by omission and prevents users or a runtime from constraining high-risk actions such as agent creation, cron registration, repo publishing, and local service startup.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
Store as `FRAMEWORKS` list. `all` → `["autogen", "crewai", "langgraph"]`.
### Step 5 — GitHub
> "Create a GitHub repo for the bundle? yes / no"
Store as `CREATE_GITHUB`.
No suspicious patterns detected.