CVE-2026-99270 (GCVE-0-2026-99270)

Vulnerability from cvelistv5 – Published: 2026-11-03 12:32 – Updated: 2026-11-03 19:14
VLAI
Title
tcp: Fix potential UAF in reqsk_timer_handler().
Summary
In the Linux kernel, the following vulnerability has been resolved: tcp: Fix potential UAF in reqsk_timer_handler(). When TCP socket migration fails at inet_ehash_insert() in reqsk_timer_handler(), we jump to the no_ownership: label and free the new reqsk immediately with __reqsk_free(). Thus, we must stop the new reqsk's timer before jumping to the label, but the timer might be missed since the cited commit, resulting in UAF. As we are in the original reqsk's timer context, we can safely call timer_delete_sync() for the new reqsk. Let's pass false to __inet_csk_reqsk_queue_drop() to stop the new reqsk's timer.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 6637 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af , < 97c8a3c1f73d828de43a5a88e8a9a143efb2b661 (git)
Affected: d3a1196bfc462943694623412d8e03aaf172bdc1 (git)
Affected: 4.1.11 , < 4.2 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 4.2
Unaffected: 0 , < 4.2 (semver)
Unaffected: 7.1 , ≤ * (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/ipv4/inet_connection_sock.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "97c8a3c1f73d828de43a5a88e8a9a143efb2b661",
              "status": "affected",
              "version": "83fccfc3940c4a2db90fd7e7079f5b465cd8c6af",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d3a1196bfc462943694623412d8e03aaf172bdc1",
              "versionType": "git"
            },
            {
              "lessThan": "4.2",
              "status": "affected",
              "version": "4.1.11",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/inet_connection_sock.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.2"
            },
            {
              "lessThan": "4.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "4.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.1.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: Fix potential UAF in reqsk_timer_handler().\n\nWhen TCP socket migration fails at inet_ehash_insert() in\nreqsk_timer_handler(), we jump to the no_ownership: label\nand free the new reqsk immediately with __reqsk_free().\n\nThus, we must stop the new reqsk\u0027s timer before jumping to the\nlabel, but the timer might be missed since the cited commit,\nresulting in UAF.\n\nAs we are in the original reqsk\u0027s timer context, we can safely\ncall timer_delete_sync() for the new reqsk.\n\nLet\u0027s pass false to __inet_csk_reqsk_queue_drop() to stop\nthe new reqsk\u0027s timer."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - A TCP SYN handled by tcp_v4_rcv()/tcp_v6_rcv() \u2192 tcp_conn_request() \u2192 reqsk_queue_hash_req() allocates the request_sock and arms reqsk_timer_handler(); a later ACK on that 4-tuple is processed by tcp_check_req()/inet_ehash_nolisten() and makes inet_ehash_insert(nreq, oreq) fail. Those handshake segments are the attacker-controlled input and they arrive on routable TCP.\nAC:H - The buggy nreq path in reqsk_timer_handler() runs only when inet_sk_state_load(sk_listener)!=TCP_LISTEN and reuseport_migrate_sock() clones the req, which requires a non-default net.ipv4.tcp_migrate_req (default 0) or a BPF_SK_REUSEPORT_SELECT_OR_MIGRATE program plus close/shutdown of the listener. A remote peer cannot create that listener state on demand, even though the subsequent own_req race is attacker-driven.\nPR:N - The SYN is accepted in tcp_conn_request() while the socket is still TCP_NEW_SYN_RECV, before accept() and before any application credential check; reqsk_queue_hash_req() arms the timer with no uid, capability, or session requirement on the peer.\nUI:N - The attacker sends the SYN that creates oreq and the ACK that unhashes it so inet_ehash_insert() fails in reqsk_timer_handler(); no local user must mount, open, or confirm anything.\nS:U - The use-after-free is of the cloned nreq request_sock (rsk_timer, rsk_listener, rsk_ops) in the host kernel\u0027s request_sock slab; it does not cross a VM, IOMMU, or sandbox boundary.\nC:H - On inet_ehash_insert() failure, no_ownership calls __reqsk_free(nreq) while nreq-\u003ersk_timer is still pending, so the next reqsk_timer_handler() reads rsk_listener and rsk_ops from freed memory. Further SYNs allocate from the same tcp_request_sock slab, giving a UAF read of attacker-shaped contents.\nI:H - The leftover nreq timer continues into reqsk_put/__reqsk_free on the already-freed object, decrementing a reused refcount and calling rsk_ops-\u003edestructor from sprayed request_sock memory, which is a UAF write and control-flow primitive.\nA:H - reqsk_timer_handler() running on the freed nreq dereferences a stale rsk_listener or double-frees the slab object in timer softirq, which oopses or panics the kernel for each migrated handshake whose ehash replace fails."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-11-03T19:14:43.225Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/97c8a3c1f73d828de43a5a88e8a9a143efb2b661"
        }
      ],
      "title": "tcp: Fix potential UAF in reqsk_timer_handler().",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-99270",
    "datePublished": "2026-11-03T12:32:09.364Z",
    "dateReserved": "2026-09-25T10:25:14.404Z",
    "dateUpdated": "2026-11-03T19:14:43.225Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-99270",
      "date": "2026-11-04",
      "epss": "0.0031",
      "percentile": "0.2397"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/ipv4/inet_connection_sock.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "97c8a3c1f73d828de43a5a88e8a9a143efb2b661",
                    "status": "affected",
                    "version": "83fccfc3940c4a2db90fd7e7079f5b465cd8c6af",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "d3a1196bfc462943694623412d8e03aaf172bdc1",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4.2",
                    "status": "affected",
                    "version": "4.1.11",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/ipv4/inet_connection_sock.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.2"
                  },
                  {
                    "lessThan": "4.2",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: Fix potential UAF in reqsk_timer_handler().\n\nWhen TCP socket migration fails at inet_ehash_insert() in\nreqsk_timer_handler(), we jump to the no_ownership: label\nand free the new reqsk immediately with __reqsk_free().\n\nThus, we must stop the new reqsk\u0027s timer before jumping to the\nlabel, but the timer might be missed since the cited commit,\nresulting in UAF.\n\nAs we are in the original reqsk\u0027s timer context, we can safely\ncall timer_delete_sync() for the new reqsk.\n\nLet\u0027s pass false to __inet_csk_reqsk_queue_drop() to stop\nthe new reqsk\u0027s timer."
          }
        ],
        "id": "CVE-2026-99270",
        "lastModified": "2026-11-03T20:18:32.750",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 8.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.2,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-11-03T13:17:24.097",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/97c8a3c1f73d828de43a5a88e8a9a143efb2b661"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

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.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    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.