{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-38735", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2025-04-16T04:51:24.034Z", "datePublished": "2025-09-05T17:20:35.459Z", "dateUpdated": "2026-08-05T12:04:25.933Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T12:04:25.933Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ngve: prevent ethtool ops after shutdown\n\nA crash can occur if an ethtool operation is invoked\nafter shutdown() is called.\n\nshutdown() is invoked during system shutdown to stop DMA operations\nwithout performing expensive deallocations. It is discouraged to\nunregister the netdev in this path, so the device may still be visible\nto userspace and kernel helpers.\n\nIn gve, shutdown() tears down most internal data structures. If an\nethtool operation is dispatched after shutdown(), it will dereference\nfreed or NULL pointers, leading to a kernel panic. While graceful\nshutdown normally quiesces userspace before invoking the reboot\nsyscall, forced shutdowns (as observed on GCP VMs) can still trigger\nthis path.\n\nFix by calling netif_device_detach() in shutdown().\nThis marks the device as detached so the ethtool ioctl handler\nwill skip dispatching operations to the driver." } ], "metrics": [ { "cvssV3_1": { "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" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerable ethtool ops are reached only via the local `SIOCETHTOOL` ioctl on an AF_INET socket or the ethtool netlink family, both of which require local access to the system. No remote or adjacent packet path reaches `gve_ethtool_ops`.\nAC:L - This is not a narrow race — after `gve_shutdown()` returns, the driver stays in the torn-down state with dangling `priv->adminq`/`priv->adminq_pool` until power-off, so any ethtool ioctl issued in that window deterministically hits freed/NULL pointers with no memory grooming or race-winning required. The attacker simply polls `ethtool` in a loop and system shutdown/reboot is a routine, guaranteed event; userspace is not quiesced during `device_shutdown()`, giving a wide and reliably-hit window.\nPR:L - `net/ethtool/ioctl.c:3266-3305` explicitly exempts `ETHTOOL_GSET`, `ETHTOOL_GLINKSETTINGS`, `ETHTOOL_GSTATS`, `ETHTOOL_GRXCLSRLCNT`, `ETHTOOL_GRSSH` and friends from the `CAP_NET_ADMIN` check, and `SIOCETHTOOL` in `net/core/dev_ioctl.c` adds no gate — so an ordinary unprivileged user running `ethtool eth0` or `ethtool -S eth0` reaches `gve_get_link_ksettings()`, `gve_get_rxnfc()` and `gve_get_ethtool_stats()`.\nUI:N - The attacker issues the ioctl directly from their own process with no victim participation; the shutdown is an ambient system event, not an action the attacker must socially engineer a user into performing.\nS:U - The corruption and crash are confined to the kernel of the same system whose ethtool interface was invoked, with no crossing into a hypervisor, IOMMU or other security authority.\nC:H - `gve_adminq_kick_and_wait()` reads command status out of the freed `priv->adminq` DMA buffer and `gve_adminq_query_flow_rules()` dereferences the kfree'd `struct dma_pool`, so contents of reallocated kernel memory are read back and influence returned data and control flow, giving a use-after-free read primitive over attacker-groomable heap.\nI:H - `gve_adminq_issue_cmd()` performs a 64-byte `memcpy()` into the freed `priv->adminq` allocation, and `dma_pool_alloc()` on the destroyed pool manipulates freed list heads and a freed spinlock — a use-after-free write into recycled memory that can be sprayed with attacker-chosen objects and leveraged toward control-flow hijack.\nA:H - `gve_get_ethtool_stats()` dereferences the NULLed `priv->stats_report` and `priv->ntfy_blocks`, producing the kernel panic described in the commit; because it fires mid-shutdown the machine hangs on the panic instead of completing its reboot, turning a routine restart into an unavailable host needing out-of-band recovery." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/ethernet/google/gve/gve_main.c" ], "versions": [ { "version": "974365e518617c9ce917f61aacbba07e4bedcca0", "lessThan": "48a4e89d50e8ea52e800bc7865970b92fcf4647c", "status": "affected", "versionType": "git" }, { "version": "974365e518617c9ce917f61aacbba07e4bedcca0", "lessThan": "ba51d73408edf815cbaeab148625576c2dd90192", "status": "affected", "versionType": "git" }, { "version": "974365e518617c9ce917f61aacbba07e4bedcca0", "lessThan": "a7efffeecb881b4649fdc30de020ef910f35d646", "status": "affected", "versionType": "git" }, { "version": "974365e518617c9ce917f61aacbba07e4bedcca0", "lessThan": "9d8a41e9a4ff83ff666de811e7f012167cdc00e9", "status": "affected", "versionType": "git" }, { "version": "974365e518617c9ce917f61aacbba07e4bedcca0", "lessThan": "75a9a46d67f46d608205888f9b34e315c1786345", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/ethernet/google/gve/gve_main.c" ], "versions": [ { "version": "5.17", "status": "affected" }, { "version": "0", "lessThan": "5.17", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.149", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.103", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.44", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.16.4", "lessThanOrEqual": "6.16.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.17", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.1.149" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.6.103" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.12.44" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.16.4" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.17", "versionEndExcluding": "6.17" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/48a4e89d50e8ea52e800bc7865970b92fcf4647c" }, { "url": "https://git.kernel.org/stable/c/ba51d73408edf815cbaeab148625576c2dd90192" }, { "url": "https://git.kernel.org/stable/c/a7efffeecb881b4649fdc30de020ef910f35d646" }, { "url": "https://git.kernel.org/stable/c/9d8a41e9a4ff83ff666de811e7f012167cdc00e9" }, { "url": "https://git.kernel.org/stable/c/75a9a46d67f46d608205888f9b34e315c1786345" } ], "title": "gve: prevent ethtool ops after shutdown", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T17:42:05.176Z" } }, { "x_adpType": "supplier", "providerMetadata": { "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e", "shortName": "siemens-SADP", "dateUpdated": "2026-05-12T12:06:01.502Z" }, "affected": [ { "vendor": "Siemens", "product": "SIMATIC CN 4100", "versions": [ { "status": "affected", "version": "0", "lessThan": "V5.0", "versionType": "custom" } ], "defaultStatus": "unknown" } ], "references": [ { "url": "https://cert-portal.siemens.com/productcert/html/ssa-032379.html" } ] } ] } }