CVE-2025-39872 (GCVE-0-2025-39872)
Vulnerability from cvelistv5
Published
2025-09-23 06:00
Modified
2026-08-05 12:05
Summary
In the Linux kernel, the following vulnerability has been resolved: hsr: hold rcu and dev lock for hsr_get_port_ndev hsr_get_port_ndev calls hsr_for_each_port, which need to hold rcu lock. On the other hand, before return the port device, we need to hold the device reference to avoid UaF in the caller function.
Impacted products
Vendor Product Version
Linux Linux Version: ef964411c8ca775967355d855abc56aeaca3c867
Version: 9c10dd8eed74de9e8adeb820939f8745cd566d4a
Version: 9c10dd8eed74de9e8adeb820939f8745cd566d4a
Version: 6.12.63   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/ti/icssg/icssg_prueth.c",
            "net/hsr/hsr_device.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "9433ba79c2ec3ec7c9a711748701549339c3438c",
              "status": "affected",
              "version": "ef964411c8ca775967355d855abc56aeaca3c867",
              "versionType": "git"
            },
            {
              "lessThan": "68a6729afd3e8e9a2a32538642ce92b96ccf9b1d",
              "status": "affected",
              "version": "9c10dd8eed74de9e8adeb820939f8745cd566d4a",
              "versionType": "git"
            },
            {
              "lessThan": "847748fc66d08a89135a74e29362a66ba4e3ab15",
              "status": "affected",
              "version": "9c10dd8eed74de9e8adeb820939f8745cd566d4a",
              "versionType": "git"
            },
            {
              "lessThan": "6.12.64",
              "status": "affected",
              "version": "6.12.63",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/ti/icssg/icssg_prueth.c",
            "net/hsr/hsr_device.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.14"
            },
            {
              "lessThan": "6.14",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.64",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.16.*",
              "status": "unaffected",
              "version": "6.16.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.17",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.64",
                  "versionStartIncluding": "6.12.63",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16.8",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17",
                  "versionStartIncluding": "6.14",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nhsr: hold rcu and dev lock for hsr_get_port_ndev\n\nhsr_get_port_ndev calls hsr_for_each_port, which need to hold rcu lock.\nOn the other hand, before return the port device, we need to hold the\ndevice reference to avoid UaF in the caller function."
        }
      ],
      "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 vulnerable path is entered from local socket/netlink operations \u2014 a multicast group join on the HSR master propagates via `hsr_set_rx_mode()` to the ICSSG slave\u0027s `ndo_set_rx_mode`, which queues the work that calls `hsr_get_port_ndev()`. A remote peer on the HSR ring cannot induce multicast address changes or HSR port reconfiguration, so this is not network-reachable.\nAC:L - The attacker fully controls the traversal side of the race by looping `IP_ADD_MEMBERSHIP`/`IP_DROP_MEMBERSHIP` to repeatedly queue `emac_ndo_set_rx_mode_work`, and the walk runs in preemptible process context with no RCU or RTNL held, so no tight timing window must be won \u2014 only overlap with a port-list mutation, which can be retried indefinitely.\nPR:L - Triggering the vulnerable `hsr_get_port_ndev()` traversal requires only an ordinary unprivileged UDP socket performing a multicast group join on the HSR interface; no capability check exists anywhere on that path. Widening the race window via HSR port reconfiguration needs only CAP_NET_ADMIN, which per kernel CNA guidance is scored as Low.\nUI:N - The entire sequence is driven by the attacker\u0027s own socket operations against an already-configured HSR-offload interface. No victim action is needed.\nS:U - The use-after-free corrupts kernel memory within the same kernel security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The unlocked RCU walk dereferences a freed `hsr_port` and the returned `net_device` is used without a reference, and `netdev_priv()` on that freed device is read as a `prueth_emac` \u2014 a use-after-free read whose contents the attacker can groom via heap spray, yielding kernel memory disclosure and pointer leakage.\nI:H - `icssg_fdb_setup()` performs `++(emac-\u003eprueth-\u003eicssg_hwcmdseq)` \u2014 a pointer loaded out of the freed object and then written through \u2014 plus further writes into PRU shared memory at addresses derived from freed data, giving a controllable write primitive suitable for control-flow hijacking after heap reuse.\nA:H - Following a `kfree_rcu()`-freed list node and dereferencing a freed `net_device` reliably produces an oops/panic (and slab corruption) even when not exploited further, and the attacker can retrigger it repeatedly on an industrial redundancy device."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:05:48.806Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/9433ba79c2ec3ec7c9a711748701549339c3438c"
        },
        {
          "url": "https://git.kernel.org/stable/c/68a6729afd3e8e9a2a32538642ce92b96ccf9b1d"
        },
        {
          "url": "https://git.kernel.org/stable/c/847748fc66d08a89135a74e29362a66ba4e3ab15"
        }
      ],
      "title": "hsr: hold rcu and dev lock for hsr_get_port_ndev",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-39872",
    "datePublished": "2025-09-23T06:00:45.528Z",
    "dateReserved": "2025-04-16T07:20:57.144Z",
    "dateUpdated": "2026-08-05T12:05:48.806Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…