Skip to main content
← Back to list
01Issue
BugShippedExtensionsPublic
Assigneesstack72

Relationships

#3652 ssh: follow-ups from #3581 review — master rekey vs per-call known_hosts, settle error handling, atomic new-file mode

Opened by stack72 · 10/20/2026· Shipped 10/20/2026

Context

Non-blocking findings from the last verification review of swamp-club #3581 (PR swamp-club/swamp-extensions#523, commit b74181d8e). The gate passed, with no critical or high findings. These were deferred so the review loop could converge.

Findings

  1. Rekey on a long-lived ControlMaster (medium, unconfirmed).
    • pinned/tofu hosts verify against a per-call known_hosts file, which is deleted when the call ends. A ControlMaster opened by open, or by ControlPersist, outlives that file.
    • The reviewer says older OpenSSH clients re-verify the host key on every rekey by re-reading known_hosts; RHEL 8's 8.0 is the example given. If so, a rekey on a reused master would fail with "Host key verification failed" and drop the connection mid-transfer.
    • This fails closed. First confirm it on an OpenSSH 8.0 client.
    • Fix if confirmed: keep the known_hosts file for master-backed hosts next to the ControlPath, keyed by the policy digest, for as long as the master can live.
  2. A datastore error partway through settleHostKeys stops processing (low). Later hosts are not typed or pinned, and masters already pinned are retired. Run records are still written. Fix: catch per host and keep looping, and retire only hosts whose pin was not written.
  3. Atomic copy to a new dst applies the local mode exactly (low). It ignores the remote umask and keeps setuid/setgid, which differs from plain scp. The README documents this. Consider masking to 0o777 and applying the remote umask for new files.
  4. Misplaced doc comment (low, cosmetic). In operations.ts, settleAndRecord sits between writeRunResult and its JSDoc.
  5. Duplicated bytes-to-hex helpers (low, cosmetic) in host_keys.ts, operations.ts and control_master.ts.
  6. Same agent key in two encodings (low). The same private key in different encodings (PEM vs OpenSSH) still fails the agent path with a clear error. auto mode falls back to the temp file.
02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 10 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/20/2026, 1:34:41 AM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack7210/20/2026, 1:05:17 AM
Editable. Press Enter to edit.

system commented 10/20/2026, 12:58:05 AM

Classified automatically when this issue was filed.

  • Source: Extensions

If you feel this classification is incorrect, add a ripple to tell us so.

Sign in to post a ripple.