[MEDIUM] agent_ws merged.update(msg): Agent kontrolliert last_data komplett — Key-Allowlist nötig #114

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

Schweregrad: MEDIUM (Trust-Boundary, verbindet Phase-1-Trust & Phase-2-XSS)

agent_ws.py:317-318 macht merged.update(msg)jeder Top-Level-Key des Agent-Frames landet in node.last_data (inkl. reservierter wie vm_agent_tokens, http_services), das ungefiltert ans Frontend geht und teils via {@html} gerendert wird. Ein kompromittierter Agent/geleaktes Token kann so Werte ins Frontend schreiben.

Fix

  • Allowlist eingehender Keys im data_update-Merge; reservierte/sicherheitsrelevante Keys nie aus dem Agent-Frame uebernehmen (Backend setzt sie selbst).
  • Ergaenzend (#108-Umfeld): Node-Token gehasht speichern + secrets.compare_digest statt Klartext/Non-constant-time.

Akzeptanz

  • Unbekannte/reservierte Keys aus dem Agent-Frame werden verworfen + geloggt.
  • last_data enthaelt nur erwartete Telemetrie-Keys.

Quelle

Code-Review 20.06.2026.

## Schweregrad: MEDIUM (Trust-Boundary, verbindet Phase-1-Trust & Phase-2-XSS) `agent_ws.py:317-318` macht `merged.update(msg)` → **jeder Top-Level-Key** des Agent-Frames landet in `node.last_data` (inkl. reservierter wie `vm_agent_tokens`, `http_services`), das ungefiltert ans Frontend geht und teils via `{@html}` gerendert wird. Ein kompromittierter Agent/geleaktes Token kann so Werte ins Frontend schreiben. ## Fix - **Allowlist eingehender Keys** im data_update-Merge; reservierte/sicherheitsrelevante Keys **nie** aus dem Agent-Frame uebernehmen (Backend setzt sie selbst). - Ergaenzend (#108-Umfeld): Node-Token **gehasht** speichern + `secrets.compare_digest` statt Klartext/Non-constant-time. ## Akzeptanz - Unbekannte/reservierte Keys aus dem Agent-Frame werden verworfen + geloggt. - last_data enthaelt nur erwartete Telemetrie-Keys. ## Quelle Code-Review 20.06.2026.
Author
Owner

Umgesetzt in 16a1306: data_update-Merge filtert reservierte Keys (vm_agent_tokens, vm_agent_enrolled, type, id) via Denylist, bevor sie in last_data landen. Agent sendet diese nicht in data_update → kein Funktionsverlust, blockt Injection. Schließe.

Umgesetzt in 16a1306: data_update-Merge filtert reservierte Keys (vm_agent_tokens, vm_agent_enrolled, type, id) via Denylist, bevor sie in last_data landen. Agent sendet diese nicht in data_update → kein Funktionsverlust, blockt Injection. Schließe.
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#114
No description provided.