)]}'
{
  "commit": "4e7a7384ecbc8d519f6f4c11b36fa9d761fc8946",
  "tree": "5067c91a730b6d9483b1d565042f2b57742a8099",
  "parents": [
    "b25012b37bb33a8d0a59388aad6b32e43ce87225"
  ],
  "author": {
    "name": "Nicola Murino",
    "email": "nicola.murino@gmail.com",
    "time": "Sun Jan 25 19:08:01 2026 +0100"
  },
  "committer": {
    "name": "Neal Patel",
    "email": "nealpatel@google.com",
    "time": "Thu May 21 17:02:53 2026 -0700"
  },
  "message": "ssh: fix deadlock on unexpected global responses\n\nPreviously, the mux implementation handled global request responses by\nblocking until the response could be sent to the globalResponses channel.\nSince this channel has a buffer size of 1, unsolicited responses from a\nserver (or responses arriving after a timeout) would fill the buffer.\nSubsequent unsolicited responses would block handleGlobalPacket, stalling\nthe entire connection\u0027s read loop and causing a denial of service.\n\nThis change modifies handleGlobalPacket to use a non-blocking send. If\nno goroutine is waiting for a response (or the buffer is full), the\nmessage is dropped. This aligns with OpenSSH behavior, which ignores\nunexpected global responses.\n\nAdditionally, SendRequest now drains the globalResponses channel after\nacquiring the mutex but before sending the request. This ensures that\nany stale responses or \"spam\" buffered just before the lock was acquired\nare discarded, preventing race conditions where a legitimate request\nmight otherwise consume an unrelated response.\n\nThis issue was found during a security audit by NCC Group Cryptography\nServices, sponsored by Teleport.\n\nFixes golang/go#79564\nFixes CVE-2026-39830\n\nChange-Id: Ia0c46355203d557eadcd432c10b87c8a044e1089\nReviewed-on: https://go-review.googlesource.com/c/crypto/+/781640\nReviewed-by: Roland Shoemaker \u003croland@golang.org\u003e\nReviewed-by: Neal Patel \u003cnealpatel@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d2d24c635d32a950353254d076b10bfbf1ec5c81",
      "old_mode": 33188,
      "old_path": "ssh/mux.go",
      "new_id": "3bc4afbd0fbcf3b99f5fb5b1292d7e695594fb2b",
      "new_mode": 33188,
      "new_path": "ssh/mux.go"
    },
    {
      "type": "modify",
      "old_id": "95874fa97508e9da35c771d6618537479a78b410",
      "old_mode": 33188,
      "old_path": "ssh/mux_test.go",
      "new_id": "a0cae3413c5389363ad7a83235ebea8e6e036514",
      "new_mode": 33188,
      "new_path": "ssh/mux_test.go"
    }
  ]
}
