Fleet Communication System
WarnAudited by ClawScan on May 10, 2026.
Overview
The skill matches its fleet-messaging purpose, but the bus is an unauthenticated network service that stores and exposes messages and has an unsafe dashboard rendering path.
Use this only on an isolated, trusted network after adding controls. Firewall port 18800, bind the bus to a trusted interface, add authentication/TLS or a VPN-only policy, avoid sending secrets, treat received tasks as untrusted requests, regularly clear stored logs, and fix the dashboard escaping issue before exposing it to other machines.
Findings (3)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Anyone who can reach the bus port may read recent fleet messages, spoof nodes, or broadcast task-like instructions that affect fleet coordination.
The bus binds to every network interface and exposes read-all and write-message routes. The surrounding handlers show no authentication or authorization checks, and sender identity is supplied by the request body.
server.listen(PORT, '0.0.0.0', ...); ... if (m === 'GET' && p === '/all') { return send(res, 200, allMsgs(100)); } ... if (m === 'POST' && p === '/send') { ... entry: appendMsg(msg) }Use only on a trusted private network, bind to localhost or a specific trusted interface, require per-node authentication and authorization, protect or remove `/all`, and treat incoming messages as untrusted until verified.
Sensitive task or result messages can remain on disk, and old or malicious messages can be reused later as fleet context.
Messages are persisted as durable shared local state, but the artifacts do not show retention limits, deletion controls, provenance tracking, or safeguards before later reads.
const MSG_FILE = path.join(DATA_DIR, 'messages.jsonl'); ... fs.appendFileSync(MSG_FILE, JSON.stringify(entry) + '\n');
Document persistence clearly, add retention and cleanup controls, restrict the data directory, record trusted origins, and require user review before treating stored messages as instructions.
If a user opens the dashboard, a malicious message could run script in that page and read or send bus messages from the dashboard context.
Untrusted message text is concatenated into HTML and assigned to `innerHTML` without escaping, so a crafted message can become executable browser content in the dashboard.
el.innerHTML=allMsgs.map(m=>{ ... return '<div class="'+cls+'">...: '+m.msg+'</div>'; }).join('');Render message fields with `textContent` or proper HTML escaping, add a restrictive Content Security Policy, and combine this with bus authentication.
