[MEDIUM] command_result/terminal-Routing ohne Owner-Bindung (Backend agent_ws + Agent vm_listener) #115

Closed
opened 2026-06-20 14:41:08 +00:00 by chinux · 3 comments
Owner

Schweregrad: MEDIUM (durch zufaellige UUIDs gemildert, aber Owner-Bindung fehlt)

Backend (agent_ws.py:488-661): manager.resolve / terminal.data-Routing prueft nicht, dass der antwortende Agent Owner des cmd_id/session_id ist.
Agent (vm_listener.rs:181-187): command.output/result mit ungebundener cmd_id aus VM-Frame weitergereicht → koennte fremden Output verfaelschen.

Fix

  • cmd_id/session_id an node_id (bzw. owning VM) binden; eingehende Resultate nur akzeptieren, wenn der Absender der zugewiesene Owner ist.
  • Agent: nur zugewiesene cmd_ids aus dem VM-Listener akzeptieren.

Akzeptanz

  • Antwort mit fremder/unbekannter cmd_id/session_id wird verworfen.

Quelle

Code-Review 20.06.2026.

## Schweregrad: MEDIUM (durch zufaellige UUIDs gemildert, aber Owner-Bindung fehlt) **Backend** (`agent_ws.py:488-661`): `manager.resolve` / `terminal.data`-Routing prueft nicht, dass der antwortende Agent **Owner** des `cmd_id`/`session_id` ist. **Agent** (`vm_listener.rs:181-187`): `command.output/result` mit ungebundener `cmd_id` aus VM-Frame weitergereicht → koennte fremden Output verfaelschen. ## Fix - `cmd_id`/`session_id` an `node_id` (bzw. owning VM) **binden**; eingehende Resultate nur akzeptieren, wenn der Absender der zugewiesene Owner ist. - Agent: nur zugewiesene `cmd_id`s aus dem VM-Listener akzeptieren. ## Akzeptanz - Antwort mit fremder/unbekannter cmd_id/session_id wird verworfen. ## Quelle Code-Review 20.06.2026.
Author
Owner

Backend-Owner-Bindung machbar (cmd_id→node_id in start_command tracken, resolve prüft Absender), aber der Fix umfasst laut Issue auch die Agent-Seite (vm_listener: nur zugewiesene cmd_ids). Cross-Cutting (manager + agent_ws + Node-Agent + VM-Agent). Durch zufällige UUIDs aktuell gemildert. Defer auf fokussierte Session mit Agent-Rebuild.

Backend-Owner-Bindung machbar (cmd_id→node_id in start_command tracken, resolve prüft Absender), aber der Fix umfasst laut Issue auch die Agent-Seite (vm_listener: nur zugewiesene cmd_ids). Cross-Cutting (manager + agent_ws + Node-Agent + VM-Agent). Durch zufällige UUIDs aktuell gemildert. Defer auf fokussierte Session mit Agent-Rebuild.
Author
Owner

Umgesetzt (deployed). Owner-Bindung beidseitig:

  • Backend: cmd_owner (cmd_id→node_id) — resolve()/on_partial_output() verwerfen Antworten/Output von Nicht-Owner-Nodes. Terminal/VNC-Frames nur vom Owner-Node (node_name-Match in terminal_sessions).
  • Node-Agent 2.10.40: cmd_vmid (cmd_id→vmid) — ein VM-Agent beantwortet command_result/output nur für seine eigene vmid, kann fremde Pending-Calls nicht evicten.
    Backend gesund, Agents self-updaten. Schließe.
Umgesetzt (deployed). Owner-Bindung beidseitig: - Backend: cmd_owner (cmd_id→node_id) — resolve()/on_partial_output() verwerfen Antworten/Output von Nicht-Owner-Nodes. Terminal/VNC-Frames nur vom Owner-Node (node_name-Match in terminal_sessions). - Node-Agent 2.10.40: cmd_vmid (cmd_id→vmid) — ein VM-Agent beantwortet command_result/output nur für seine eigene vmid, kann fremde Pending-Calls nicht evicten. Backend gesund, Agents self-updaten. Schließe.
Author
Owner

Pflicht-Begleiter fuer Public (Epic #184). Ohne cmd_id/session-Owner-Binding kann ein kompromittierter Node Ergebnisse fuer Befehle an ANDERE Nodes faelschen / fremde Sessions beanspruchen (Cross-Node-Interferenz). Die neue Challenge-Response-Auth verhindert Spoofing, aber NICHT diese Autorisierungsluecke. Muss vor Public-Betrieb erledigt sein.

**Pflicht-Begleiter fuer Public (Epic #184).** Ohne cmd_id/session-Owner-Binding kann ein kompromittierter Node Ergebnisse fuer Befehle an ANDERE Nodes faelschen / fremde Sessions beanspruchen (Cross-Node-Interferenz). Die neue Challenge-Response-Auth verhindert Spoofing, aber NICHT diese Autorisierungsluecke. Muss vor Public-Betrieb erledigt sein.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#115
No description provided.