CVE-2026-43374 (GCVE-0-2026-43374)

Vulnerability from cvelistv5 – Published: 2026-05-08 14:21 – Updated: 2026-08-05 12:27
VLAI
Title
net: nexthop: fix percpu use-after-free in remove_nh_grp_entry
Summary
In the Linux kernel, the following vulnerability has been resolved: net: nexthop: fix percpu use-after-free in remove_nh_grp_entry When removing a nexthop from a group, remove_nh_grp_entry() publishes the new group via rcu_assign_pointer() then immediately frees the removed entry's percpu stats with free_percpu(). However, the synchronize_net() grace period in the caller remove_nexthop_from_groups() runs after the free. RCU readers that entered before the publish still see the old group and can dereference the freed stats via nh_grp_entry_stats_inc() -> get_cpu_ptr(nhge->stats), causing a use-after-free on percpu memory. Fix by deferring the free_percpu() until after synchronize_net() in the caller. Removed entries are chained via nh_list onto a local deferred free list. After the grace period completes and all RCU readers have finished, the percpu stats are safely freed.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: f4676ea74b8549cd88dbfe2a592ce4530039e61f , < abf4feaee6405f1441929c6ebe7a250f2cd170a7 (git)
Affected: f4676ea74b8549cd88dbfe2a592ce4530039e61f , < ab5ebab9664214ba41a7633cb4e72f128204f924 (git)
Affected: f4676ea74b8549cd88dbfe2a592ce4530039e61f , < 9e08ad731862b22a87cc55f752e16d66cdc9e231 (git)
Affected: f4676ea74b8549cd88dbfe2a592ce4530039e61f , < b2662e7593e94ae09b1cf7ee5f09160a3612bcb2 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.9
Unaffected: 0 , < 6.9 (semver)
Unaffected: 6.12.78 , ≤ 6.12.* (semver)
Unaffected: 6.18.19 , ≤ 6.18.* (semver)
Unaffected: 6.19.9 , ≤ 6.19.* (semver)
Unaffected: 7.0 , ≤ * (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/nexthop.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "abf4feaee6405f1441929c6ebe7a250f2cd170a7",
              "status": "affected",
              "version": "f4676ea74b8549cd88dbfe2a592ce4530039e61f",
              "versionType": "git"
            },
            {
              "lessThan": "ab5ebab9664214ba41a7633cb4e72f128204f924",
              "status": "affected",
              "version": "f4676ea74b8549cd88dbfe2a592ce4530039e61f",
              "versionType": "git"
            },
            {
              "lessThan": "9e08ad731862b22a87cc55f752e16d66cdc9e231",
              "status": "affected",
              "version": "f4676ea74b8549cd88dbfe2a592ce4530039e61f",
              "versionType": "git"
            },
            {
              "lessThan": "b2662e7593e94ae09b1cf7ee5f09160a3612bcb2",
              "status": "affected",
              "version": "f4676ea74b8549cd88dbfe2a592ce4530039e61f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/nexthop.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.9"
            },
            {
              "lessThan": "6.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.78",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.19",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.19.*",
              "status": "unaffected",
              "version": "6.19.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.0",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.78",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.19",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.19.9",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: nexthop: fix percpu use-after-free in remove_nh_grp_entry\n\nWhen removing a nexthop from a group, remove_nh_grp_entry() publishes\nthe new group via rcu_assign_pointer() then immediately frees the\nremoved entry\u0027s percpu stats with free_percpu(). However, the\nsynchronize_net() grace period in the caller remove_nexthop_from_groups()\nruns after the free. RCU readers that entered before the publish still\nsee the old group and can dereference the freed stats via\nnh_grp_entry_stats_inc() -\u003e get_cpu_ptr(nhge-\u003estats), causing a\nuse-after-free on percpu memory.\n\nFix by deferring the free_percpu() until after synchronize_net() in the\ncaller. Removed entries are chained via nh_list onto a local deferred\nfree list. After the grace period completes and all RCU readers have\nfinished, the percpu stats are safely freed."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The freeing side is reached through `RTM_DELNEXTHOP` over rtnetlink, which is a local netlink configuration interface. Remote packets can hit the RCU read side, but an attacker must locally trigger nexthop deletion to create the UAF.\nAC:L - A local attacker can create nexthop groups, attach routes, generate concurrent route lookups, and delete a member nexthop, controlling both sides of the race. The bug is a straightforward RCU grace-period violation rather than a condition dependent on external state.\nPR:L - The rtnetlink non-GET path requires `CAP_NET_ADMIN` in the socket\u0027s network namespace. Because this is reachable with namespaced `CAP_NET_ADMIN` via user/network namespaces on affected systems, this is Low rather than High.\nUI:N - No victim interaction is required once the attacker has local access and the needed namespace capability. The attacker can perform the netlink operations and traffic generation directly.\nS:U - The vulnerability corrupts kernel memory within the same kernel security authority. It is a kernel privilege-impact bug, not a VM escape or cross-scope boundary bypass.\nC:H - This is a use-after-free of per-CPU nexthop group statistics reachable from RCU route readers. Following kernel CVSS guidance, UAF memory corruption is treated as enabling high confidentiality impact.\nI:H - The stale reader writes packet counters and sequence state through a freed per-CPU pointer, creating memory corruption that can plausibly be shaped into write/control-flow impact. Per the required guidance, UAF is scored as High integrity impact.\nA:H - The stale dereference of freed per-CPU memory can crash or otherwise destabilize the kernel. Any kernel UAF with crash potential is High availability impact."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:27:34.663Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/abf4feaee6405f1441929c6ebe7a250f2cd170a7"
        },
        {
          "url": "https://git.kernel.org/stable/c/ab5ebab9664214ba41a7633cb4e72f128204f924"
        },
        {
          "url": "https://git.kernel.org/stable/c/9e08ad731862b22a87cc55f752e16d66cdc9e231"
        },
        {
          "url": "https://git.kernel.org/stable/c/b2662e7593e94ae09b1cf7ee5f09160a3612bcb2"
        }
      ],
      "title": "net: nexthop: fix percpu use-after-free in remove_nh_grp_entry",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-43374",
    "datePublished": "2026-05-08T14:21:24.537Z",
    "dateReserved": "2026-05-01T14:12:56.006Z",
    "dateUpdated": "2026-08-05T12:27:34.663Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-43374",
      "date": "2026-08-23",
      "epss": "0.00125",
      "percentile": "0.02656"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-43374\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-05-08T15:16:48.547\",\"lastModified\":\"2026-06-17T10:49:28.727\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet: nexthop: fix percpu use-after-free in remove_nh_grp_entry\\n\\nWhen removing a nexthop from a group, remove_nh_grp_entry() publishes\\nthe new group via rcu_assign_pointer() then immediately frees the\\nremoved entry\u0027s percpu stats with free_percpu(). However, the\\nsynchronize_net() grace period in the caller remove_nexthop_from_groups()\\nruns after the free. RCU readers that entered before the publish still\\nsee the old group and can dereference the freed stats via\\nnh_grp_entry_stats_inc() -\u003e get_cpu_ptr(nhge-\u003estats), causing a\\nuse-after-free on percpu memory.\\n\\nFix by deferring the free_percpu() until after synchronize_net() in the\\ncaller. Removed entries are chained via nh_list onto a local deferred\\nfree list. After the grace period completes and all RCU readers have\\nfinished, the percpu stats are safely freed.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"net/ipv4/nexthop.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"f4676ea74b8549cd88dbfe2a592ce4530039e61f\",\"lessThan\":\"abf4feaee6405f1441929c6ebe7a250f2cd170a7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"f4676ea74b8549cd88dbfe2a592ce4530039e61f\",\"lessThan\":\"ab5ebab9664214ba41a7633cb4e72f128204f924\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"f4676ea74b8549cd88dbfe2a592ce4530039e61f\",\"lessThan\":\"9e08ad731862b22a87cc55f752e16d66cdc9e231\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"f4676ea74b8549cd88dbfe2a592ce4530039e61f\",\"lessThan\":\"b2662e7593e94ae09b1cf7ee5f09160a3612bcb2\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"net/ipv4/nexthop.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.9\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.9\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.78\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.19\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.19.9\",\"lessThanOrEqual\":\"6.19.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.0\",\"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:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-416\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.9\",\"versionEndExcluding\":\"6.12.78\",\"matchCriteriaId\":\"D1D90B78-24E3-418D-A238-3FE23C32239B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.18.19\",\"matchCriteriaId\":\"D394AC60-6F28-435F-872A-CCDF384B8331\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.19\",\"versionEndExcluding\":\"6.19.9\",\"matchCriteriaId\":\"E825E7C3-FEAC-4FD3-8A81-78D7387948C9\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:-:*:*:*:*:*:*\",\"matchCriteriaId\":\"3F2A4A3D-068A-4CF2-A09F-9C7937DDB0A5\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"F253B622-8837-4245-BCE5-A7BF8FC76A16\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"4AE85AD8-4641-4E7C-A2F4-305E2CD9EE64\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"F666C8D8-6538-46D4-B318-87610DE64C34\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/9e08ad731862b22a87cc55f752e16d66cdc9e231\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/ab5ebab9664214ba41a7633cb4e72f128204f924\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/abf4feaee6405f1441929c6ebe7a250f2cd170a7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/b2662e7593e94ae09b1cf7ee5f09160a3612bcb2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-02T12:46:40+00:00",
      "cve": "CVE-2026-43374",
      "id": "CVE-2026-43374",
      "initial_release_date": "2026-05-08T00: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: nexthop: fix percpu use-after-free in remove_nh_grp_entry",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-43374.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-06T01:20:18Z",
      "cve": "CVE-2026-43374",
      "id": "CVE-2026-43374",
      "initial_release_date": "2026-05-13T03:34:45Z",
      "product_status:first_fixed": "2",
      "product_status:known_affected": "17",
      "product_status:known_not_affected": "278",
      "product_status:recommended": "145",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-43374",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-43374.json",
      "version": "4"
    }
  }
}



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…

Loading…