[HIGH] XSS vulnerability in swarm_live.html (WebSocket data not sanitized) #47

Closed
opened 2026-03-14 18:46:52 +00:00 by kimi · 0 comments
Collaborator

Problem

Line 201 in swarm_live.html uses unsanitized WebSocket data in innerHTML:

// Line 201 - UNSANITIZED
node.innerHTML = `
  <div class="mc-agent-icon">${icon}</div>
  <div class="mc-agent-info">
    <div class="mc-agent-name">${label}</div>
    <div class="mc-agent-desc">${desc}</div>
  </div>
`;

Variables icon, label, and desc come from WebSocket messages without sanitization.

Impact

  • Potential XSS attack via malicious agent names/descriptions
  • Could inject JavaScript into the dashboard
  • Other templates use DOMPurify correctly (agent_panel_chat.html, chat_message.html)

Acceptance Criteria

  • Add DOMPurify sanitization for icon, label, desc before innerHTML
  • Audit all other innerHTML usages in templates
  • Add Content Security Policy (CSP) nonce for inline scripts
  • Security test with malicious payloads

Priority: HIGH 🟡

## Problem Line 201 in `swarm_live.html` uses unsanitized WebSocket data in innerHTML: ```javascript // Line 201 - UNSANITIZED node.innerHTML = ` <div class="mc-agent-icon">${icon}</div> <div class="mc-agent-info"> <div class="mc-agent-name">${label}</div> <div class="mc-agent-desc">${desc}</div> </div> `; ``` Variables `icon`, `label`, and `desc` come from WebSocket messages without sanitization. ## Impact - Potential XSS attack via malicious agent names/descriptions - Could inject JavaScript into the dashboard ## Related - Other templates use DOMPurify correctly (agent_panel_chat.html, chat_message.html) ## Acceptance Criteria - [ ] Add DOMPurify sanitization for `icon`, `label`, `desc` before innerHTML - [ ] Audit all other innerHTML usages in templates - [ ] Add Content Security Policy (CSP) nonce for inline scripts - [ ] Security test with malicious payloads ## Priority: HIGH 🟡
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#47