Zombie user-agent sessions can block all new client approvals #74

Open
opened 2026-04-05 16:23:12 +00:00 by Skipper · 0 comments
Owner

Info

Severity: MEDIUM
Attack vector: network-only

Impact

Allows a single unresponsive user-agent session to block approval of all new SDK clients until the server restarts.

Description

The client approval controller waits for responses from all currently connected user agents and has no timeout or liveness detection. A half-open or non-responsive user-agent connection can remain registered indefinitely, preventing the approval future from ever resolving.

Example flow

  1. Open a user-agent connection and leave it half-open or non-responsive.
  2. Trigger a new client approval flow.
  3. Wait for the approval controller to send requests to all registered user agents.
  4. Never answer from the zombie session, so the approval flow never completes.

Mitigation

Add a timeout to the approval controller, treat timeout as denial, and implement heartbeat or keepalive handling for user-agent sessions.

# Info **Severity**: **MEDIUM** Attack vector: network-only ## Impact Allows a single unresponsive user-agent session to block approval of all new SDK clients until the server restarts. ## Description The client approval controller waits for responses from all currently connected user agents and has no timeout or liveness detection. A half-open or non-responsive user-agent connection can remain registered indefinitely, preventing the approval future from ever resolving. ## Example flow 1. Open a user-agent connection and leave it half-open or non-responsive. 2. Trigger a new client approval flow. 3. Wait for the approval controller to send requests to all registered user agents. 4. Never answer from the zombie session, so the approval flow never completes. ## Mitigation Add a timeout to the approval controller, treat timeout as denial, and implement heartbeat or keepalive handling for user-agent sessions.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MarketTakers/arbiter#74