GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2025-68775 (GCVE-0-2025-68775)

Vulnerability from cvelistv5 – Published: 2026-01-13 15:28 – Updated: 2026-08-05 12:11
VLAI
Title
net/handshake: duplicate handshake cancellations leak socket
Summary
In the Linux kernel, the following vulnerability has been resolved: net/handshake: duplicate handshake cancellations leak socket When a handshake request is cancelled it is removed from the handshake_net->hn_requests list, but it is still present in the handshake_rhashtbl until it is destroyed. If a second cancellation request arrives for the same handshake request, then remove_pending() will return false... and assuming HANDSHAKE_F_REQ_COMPLETED isn't set in req->hr_flags, we'll continue processing through the out_true label, where we put another reference on the sock and a refcount underflow occurs. This can happen for example if a handshake times out - particularly if the SUNRPC client sends the AUTH_TLS probe to the server but doesn't follow it up with the ClientHello due to a problem with tlshd. When the timeout is hit on the server, the server will send a FIN, which triggers a cancellation request via xs_reset_transport(). When the timeout is hit on the client, another cancellation request happens via xs_tls_handshake_sync(). Add a test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) in the pending cancel path so duplicate cancels can be detected.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 3b3009ea8abb713b022d94fba95ec270cf6e7eae , < 011ae80c49d9bfa5b4336f8bd387cd25c7593663 (git)
Affected: 3b3009ea8abb713b022d94fba95ec270cf6e7eae , < e1641177e7fb48a0a5a06658d4aab51da6656659 (git)
Affected: 3b3009ea8abb713b022d94fba95ec270cf6e7eae , < 3c330f1dee3cd92b57e19b9d21dc8ce5970b09be (git)
Affected: 3b3009ea8abb713b022d94fba95ec270cf6e7eae , < 15564bd67e2975002f2a8e9defee33e321d3183f (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.4
Unaffected: 0 , < 6.4 (semver)
Unaffected: 6.6.120 , ≤ 6.6.* (semver)
Unaffected: 6.12.64 , ≤ 6.12.* (semver)
Unaffected: 6.18.3 , ≤ 6.18.* (semver)
Unaffected: 6.19 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/handshake/request.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "011ae80c49d9bfa5b4336f8bd387cd25c7593663",
              "status": "affected",
              "version": "3b3009ea8abb713b022d94fba95ec270cf6e7eae",
              "versionType": "git"
            },
            {
              "lessThan": "e1641177e7fb48a0a5a06658d4aab51da6656659",
              "status": "affected",
              "version": "3b3009ea8abb713b022d94fba95ec270cf6e7eae",
              "versionType": "git"
            },
            {
              "lessThan": "3c330f1dee3cd92b57e19b9d21dc8ce5970b09be",
              "status": "affected",
              "version": "3b3009ea8abb713b022d94fba95ec270cf6e7eae",
              "versionType": "git"
            },
            {
              "lessThan": "15564bd67e2975002f2a8e9defee33e321d3183f",
              "status": "affected",
              "version": "3b3009ea8abb713b022d94fba95ec270cf6e7eae",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/handshake/request.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.4"
            },
            {
              "lessThan": "6.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.120",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.64",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.19",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.120",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.64",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.3",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/handshake: duplicate handshake cancellations leak socket\n\nWhen a handshake request is cancelled it is removed from the\nhandshake_net-\u003ehn_requests list, but it is still present in the\nhandshake_rhashtbl until it is destroyed.\n\nIf a second cancellation request arrives for the same handshake request,\nthen remove_pending() will return false... and assuming\nHANDSHAKE_F_REQ_COMPLETED isn\u0027t set in req-\u003ehr_flags, we\u0027ll continue\nprocessing through the out_true label, where we put another reference on\nthe sock and a refcount underflow occurs.\n\nThis can happen for example if a handshake times out - particularly if\nthe SUNRPC client sends the AUTH_TLS probe to the server but doesn\u0027t\nfollow it up with the ClientHello due to a problem with tlshd.  When the\ntimeout is hit on the server, the server will send a FIN, which triggers\na cancellation request via xs_reset_transport().  When the timeout is\nhit on the client, another cancellation request happens via\nxs_tls_handshake_sync().\n\nAdd a test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) in the pending cancel\npath so duplicate cancels can be detected."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - An unauthenticated remote client can reach the bug through a network-facing SUNRPC/NFS server by sending an AUTH_TLS NULL probe. TCP receive processing reaches svcauth_tls_accept(), svc_tcp_handshake(), and ultimately duplicate handshake cancellation.\nAC:L - The attacker can create and abandon concurrent AUTH_TLS connections to keep requests pending and drive both timeout and transport-teardown cancellations. No memory-layout guess or uncontrollable race is required.\nPR:N - AUTH_TLS is processed before RPC credentials are authenticated, and the probe requires no established identity, account, or kernel capability.\nUI:N - The server processes the probe, timeout, and socket teardown automatically without victim user action.\nS:U - Exploitation affects the same host-kernel security authority processing the request and does not cross a VM, IOMMU, or comparable security boundary.\nC:H - The extra sock_put() can prematurely free a still-referenced socket, producing a reclaimable kernel use-after-free capable of exposing arbitrary kernel memory.\nI:H - Reclaiming the prematurely freed socket object can provide attacker-controlled data to subsequent kernel accesses, enabling arbitrary modification or control-flow hijacking.\nA:H - The socket use-after-free can cause a kernel oops or panic, while repeated unauthenticated triggers can also leak sockets and exhaust resources."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:11:25.376Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/011ae80c49d9bfa5b4336f8bd387cd25c7593663"
        },
        {
          "url": "https://git.kernel.org/stable/c/e1641177e7fb48a0a5a06658d4aab51da6656659"
        },
        {
          "url": "https://git.kernel.org/stable/c/3c330f1dee3cd92b57e19b9d21dc8ce5970b09be"
        },
        {
          "url": "https://git.kernel.org/stable/c/15564bd67e2975002f2a8e9defee33e321d3183f"
        }
      ],
      "title": "net/handshake: duplicate handshake cancellations leak socket",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-68775",
    "datePublished": "2026-01-13T15:28:52.069Z",
    "dateReserved": "2025-12-24T10:30:51.035Z",
    "dateUpdated": "2026-08-05T12:11:25.376Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-68775",
      "date": "2026-09-16",
      "epss": "0.00535",
      "percentile": "0.43845"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-68775\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-01-13T16:15:57.073\",\"lastModified\":\"2026-07-30T06:24:43.687\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet/handshake: duplicate handshake cancellations leak socket\\n\\nWhen a handshake request is cancelled it is removed from the\\nhandshake_net-\u003ehn_requests list, but it is still present in the\\nhandshake_rhashtbl until it is destroyed.\\n\\nIf a second cancellation request arrives for the same handshake request,\\nthen remove_pending() will return false... and assuming\\nHANDSHAKE_F_REQ_COMPLETED isn\u0027t set in req-\u003ehr_flags, we\u0027ll continue\\nprocessing through the out_true label, where we put another reference on\\nthe sock and a refcount underflow occurs.\\n\\nThis can happen for example if a handshake times out - particularly if\\nthe SUNRPC client sends the AUTH_TLS probe to the server but doesn\u0027t\\nfollow it up with the ClientHello due to a problem with tlshd.  When the\\ntimeout is hit on the server, the server will send a FIN, which triggers\\na cancellation request via xs_reset_transport().  When the timeout is\\nhit on the client, another cancellation request happens via\\nxs_tls_handshake_sync().\\n\\nAdd a test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) in the pending cancel\\npath so duplicate cancels can be detected.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\\n\\nnet/handshake: las cancelaciones duplicadas de handshake fugan el socket\\n\\nCuando una solicitud de handshake es cancelada, es eliminada de la lista handshake_net-\u0026gt;hn_requests, pero a\u00fan est\u00e1 presente en la handshake_rhashtbl hasta que es destruida.\\n\\nSi llega una segunda solicitud de cancelaci\u00f3n para la misma solicitud de handshake, entonces remove_pending() devolver\u00e1 falso... y asumiendo que HANDSHAKE_F_REQ_COMPLETED no est\u00e1 establecido en req-\u0026gt;hr_flags, continuaremos procesando a trav\u00e9s de la etiqueta out_true, donde ponemos otra referencia en el sock y ocurre un desbordamiento negativo del contador de referencias.\\n\\nEsto puede ocurrir por ejemplo si un handshake agota el tiempo de espera, particularmente si el cliente SUNRPC env\u00eda la sonda AUTH_TLS al servidor pero no la sigue con el ClientHello debido a un problema con tlshd. Cuando se alcanza el tiempo de espera en el servidor, el servidor enviar\u00e1 un FIN, lo que activa una solicitud de cancelaci\u00f3n a trav\u00e9s de xs_reset_transport(). Cuando se alcanza el tiempo de espera en el cliente, ocurre otra solicitud de cancelaci\u00f3n a trav\u00e9s de xs_tls_handshake_sync().\\n\\nA\u00f1adir un test_and_set_bit(HANDSHAKE_F_REQ_COMPLETED) en la ruta de cancelaci\u00f3n pendiente para que las cancelaciones duplicadas puedan ser detectadas.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/handshake/request.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"3b3009ea8abb713b022d94fba95ec270cf6e7eae\",\"lessThan\":\"011ae80c49d9bfa5b4336f8bd387cd25c7593663\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3b3009ea8abb713b022d94fba95ec270cf6e7eae\",\"lessThan\":\"e1641177e7fb48a0a5a06658d4aab51da6656659\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3b3009ea8abb713b022d94fba95ec270cf6e7eae\",\"lessThan\":\"3c330f1dee3cd92b57e19b9d21dc8ce5970b09be\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3b3009ea8abb713b022d94fba95ec270cf6e7eae\",\"lessThan\":\"15564bd67e2975002f2a8e9defee33e321d3183f\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/handshake/request.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.4\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.4\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.120\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.64\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.3\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.19\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/011ae80c49d9bfa5b4336f8bd387cd25c7593663\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/15564bd67e2975002f2a8e9defee33e321d3183f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/3c330f1dee3cd92b57e19b9d21dc8ce5970b09be\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/e1641177e7fb48a0a5a06658d4aab51da6656659\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-21T20:46:50+00:00",
      "cve": "CVE-2025-68775",
      "id": "CVE-2025-68775",
      "initial_release_date": "2025-01-01T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net/handshake: duplicate handshake cancellations leak socket",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-68775.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-11T01:49:10Z",
      "cve": "CVE-2025-68775",
      "id": "CVE-2025-68775",
      "initial_release_date": "2026-01-15T00:26:40Z",
      "product_status:first_fixed": "2",
      "product_status:known_affected": "419",
      "product_status:known_not_affected": "312",
      "product_status:recommended": "384",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-68775",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-68775.json",
      "version": "37"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…