Skip to content

Decide socket DoS budgets: fix in-map or defer #109

Closed

Description

@tonibergholm

Question

Audit finding #5 (medium), the map's one defer-or-fix scope call (HITL): authorized socket peers can perform low-cost availability attacks — frame size is capped but there are no connection, in-flight-request, or read/write-idle limits, and commit/rollback requests queue without a per-peer budget (evidence: crates/agenticd/src/server.rs:140, crates/agentic-proto/src/framing.rs:70).

Threat-model context for the call: the v1.0 topology is a co-located sidecar over a Unix socket with UID-allowlisted peers, pre-design-partner — the "attacker" is your own worker.

To settle:

  • Fix in-map now, or defer to post-launch backlog?
  • If FIX: graduate the fog (connection limits, frame-read deadlines, per-UID concurrency/rate budgets, queue-depth metrics) into concrete tickets on this map.
  • If DEFER: open a regular tracked issue (not a wayfinder child) capturing the finding, and record the defer rationale here.

Resolution records: the call, plus either new ticket links or the backlog issue link.

Activity

  1. self-assigned this
    on Jul 9, 2026
  2. tonibergholm commented on Jul 9, 2026

    @tonibergholm
    MemberAuthor

    Resolution (grilling session with Toni, 2026-07-10)

    Decision: defer, with a carve-out (option b).

    The v1.0 threat model makes the bulk of this non-blocking: agenticd is a co-located Cloud Run sidecar over a Unix socket with UID-allowlisted peers, so the only party who can open the socket is the operator's own Coding worker at a known UID — no untrusted caller exists until design-partner onboarding (post-launch). The audit ranked this lowest of the six findings, and stapling a multi-part hardening effort onto the map would stretch the destination past what the audit made urgent.

    Carved out and kept in-map: Read-idle timeout on the agenticd connection loop — a few lines closing the cheapest, most embarrassing slice (a peer that opens a socket and never completes a frame holding a spawn_local task forever). Wired as a blocker of the map-close verification.

    Deferred to backlog (regular tracked issue, not a wayfinder child): Socket availability hardening: connection caps, per-UID budgets, queue-depth metrics — per-connection/per-UID concurrency caps, rate budgets, commit_lock queue-depth metric, write-idle deadline. Revisit trigger recorded there: any deployment shape beyond the single-tenant co-located sidecar, or the first design partner.

    Grounding facts: the accept loop spawn_locals connection handlers unboundedly (crates/agenticd/src/main.rs:298); the connection loop has no read/write-idle deadline (server.rs:140); frame size is capped but frame timing is not (framing.rs:70); commit_lock queues without a depth bound.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

wayfinder:grillingWayfinder ticket: HITL decision via /grilling

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions