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

CVE-2025-37800 (GCVE-0-2025-37800)

Vulnerability from cvelistv5 – Published: 2025-05-08 06:26 – Updated: 2026-08-05 11:57
VLAI
Title
driver core: fix potential NULL pointer dereference in dev_uevent()
Summary
In the Linux kernel, the following vulnerability has been resolved: driver core: fix potential NULL pointer dereference in dev_uevent() If userspace reads "uevent" device attribute at the same time as another threads unbinds the device from its driver, change to dev->driver from a valid pointer to NULL may result in crash. Fix this by using READ_ONCE() when fetching the pointer, and take bus' drivers klist lock to make sure driver instance will not disappear while we access it. Use WRITE_ONCE() when setting the driver pointer to ensure there is no tearing.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 16574dccd8f62dc1b585325f8a6a0aab10047ed8 , < abe56be73eb10a677d16066f65ff9d30251f5eee (git)
Affected: 16574dccd8f62dc1b585325f8a6a0aab10047ed8 , < 2b344e779d9afd0fcb5ee4000e4d0fc7d8d867eb (git)
Affected: 16574dccd8f62dc1b585325f8a6a0aab10047ed8 , < 3781e4b83e174364998855de777e184cf0b62c40 (git)
Affected: 16574dccd8f62dc1b585325f8a6a0aab10047ed8 , < 18daa52418e7e4629ed1703b64777294209d2622 (git)
guessed Create a notification for this product.
Linux Linux Affected: 2.6.22
Unaffected: 0 , < 2.6.22 (semver)
Unaffected: 6.6.89 , ≤ 6.6.* (semver)
Unaffected: 6.12.26 , ≤ 6.12.* (semver)
Unaffected: 6.14.5 , ≤ 6.14.* (semver)
Unaffected: 6.15 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/base/base.h",
            "drivers/base/bus.c",
            "drivers/base/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "abe56be73eb10a677d16066f65ff9d30251f5eee",
              "status": "affected",
              "version": "16574dccd8f62dc1b585325f8a6a0aab10047ed8",
              "versionType": "git"
            },
            {
              "lessThan": "2b344e779d9afd0fcb5ee4000e4d0fc7d8d867eb",
              "status": "affected",
              "version": "16574dccd8f62dc1b585325f8a6a0aab10047ed8",
              "versionType": "git"
            },
            {
              "lessThan": "3781e4b83e174364998855de777e184cf0b62c40",
              "status": "affected",
              "version": "16574dccd8f62dc1b585325f8a6a0aab10047ed8",
              "versionType": "git"
            },
            {
              "lessThan": "18daa52418e7e4629ed1703b64777294209d2622",
              "status": "affected",
              "version": "16574dccd8f62dc1b585325f8a6a0aab10047ed8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/base/base.h",
            "drivers/base/bus.c",
            "drivers/base/core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.22"
            },
            {
              "lessThan": "2.6.22",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.89",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.26",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.14.*",
              "status": "unaffected",
              "version": "6.14.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.89",
                  "versionStartIncluding": "2.6.22",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.26",
                  "versionStartIncluding": "2.6.22",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14.5",
                  "versionStartIncluding": "2.6.22",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "2.6.22",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndriver core: fix potential NULL pointer dereference in dev_uevent()\n\nIf userspace reads \"uevent\" device attribute at the same time as another\nthreads unbinds the device from its driver, change to dev-\u003edriver from a\nvalid pointer to NULL may result in crash. Fix this by using READ_ONCE()\nwhen fetching the pointer, and take bus\u0027 drivers klist lock to make sure\ndriver instance will not disappear while we access it.\n\nUse WRITE_ONCE() when setting the driver pointer to ensure there is no\ntearing."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is reached by read(2) on a sysfs file (`/sys/devices/**/uevent`) and the racing unbind via ioctl on `/dev/bus/usb/*`, both requiring a local account on the system. There is no network-facing path into `dev_uevent()`.\nAC:L - The attacker controls both sides of the race: an unprivileged thread spins reading the world-readable `uevent` attribute while another thread toggles `USBDEVFS_DISCONNECT`/`USBDEVFS_CONNECT` (or CLAIM/RELEASE_INTERFACE) on the same USB interface, driving `dev-\u003edriver` between a valid pointer and NULL at will. No condition depends on state outside the attacker\u0027s influence, and the window can be retried indefinitely at high rate.\nPR:L - `dev_attr_uevent` is DEVICE_ATTR_RW (0644), so any unprivileged local user can read it, and the usbfs disconnect/connect ioctls have no `capable()` check \u2014 only rw access to a `/dev/bus/usb` node, which udev `uaccess` rules routinely grant to the logged-in seat user. No root or capability is required.\nUI:N - The attacker performs both the sysfs read and the driver unbind from their own processes; no victim action is needed. On kiosk-style systems the routine hotplug churn that also triggers it happens without any deliberate user step.\nS:U - The fault and its consequences are confined to the kernel of the same host; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - If the driver is unregistered and its module unloaded after the pointer is loaded, `drv-\u003ename` is read from freed memory and the resulting dangling `char *` is expanded by `add_uevent_var(env, \"DRIVER=%s\", ...)` into the env buffer that `uevent_show()` copies back to the unprivileged reader \u2014 a use-after-free read that leaks arbitrary kernel memory contents to userspace. The fix\u0027s klist_drivers lock exists specifically to stop the driver structure disappearing mid-read.\nI:N - The racy path only loads `dev-\u003edriver` and formats `drv-\u003ename` into a bounded, kernel-allocated uevent buffer; it performs no attacker-influenced write to kernel memory and yields no control-flow hijack primitive.\nA:H - Reloading `dev-\u003edriver` as NULL makes `dev-\u003edriver-\u003ename` a NULL-page dereference, and the freed-module variant faults on unmapped vmalloc memory \u2014 either way an oops in the driver-core read path, repeatable at will for a reliable local denial of service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:57:39.250Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/abe56be73eb10a677d16066f65ff9d30251f5eee"
        },
        {
          "url": "https://git.kernel.org/stable/c/2b344e779d9afd0fcb5ee4000e4d0fc7d8d867eb"
        },
        {
          "url": "https://git.kernel.org/stable/c/3781e4b83e174364998855de777e184cf0b62c40"
        },
        {
          "url": "https://git.kernel.org/stable/c/18daa52418e7e4629ed1703b64777294209d2622"
        }
      ],
      "title": "driver core: fix potential NULL pointer dereference in dev_uevent()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-37800",
    "datePublished": "2025-05-08T06:26:01.125Z",
    "dateReserved": "2025-04-16T04:51:23.941Z",
    "dateUpdated": "2026-08-05T11:57:39.250Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-37800",
      "date": "2026-09-16",
      "epss": "0.00197",
      "percentile": "0.09667"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-12T01:44:35.000Z",
      "cve": "CVE-2025-37800",
      "id": "msrc_CVE-2025-37800",
      "initial_release_date": "2025-07-11T00:00:00.000Z",
      "product_status:fixed": "2",
      "product_status:known_affected": "7",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "driver core: fix potential NULL pointer dereference in dev_uevent()",
      "url": "https://msrc.microsoft.com/csaf/vex/2025/msrc_cve-2025-37800.json",
      "version": "7"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-37800\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-05-08T07:15:50.420\",\"lastModified\":\"2026-07-30T06:22:21.297\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndriver core: fix potential NULL pointer dereference in dev_uevent()\\n\\nIf userspace reads \\\"uevent\\\" device attribute at the same time as another\\nthreads unbinds the device from its driver, change to dev-\u003edriver from a\\nvalid pointer to NULL may result in crash. Fix this by using READ_ONCE()\\nwhen fetching the pointer, and take bus\u0027 drivers klist lock to make sure\\ndriver instance will not disappear while we access it.\\n\\nUse WRITE_ONCE() when setting the driver pointer to ensure there is no\\ntearing.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: n\u00facleo del controlador: se corrige una posible desreferencia de puntero nulo en dev_uevent(). Si el espacio de usuario lee el atributo de dispositivo \\\"uevent\\\" al mismo tiempo que otro subproceso desvincula el dispositivo de su controlador, cambiar de un puntero v\u00e1lido a nulo en dev-\u0026gt;driver puede provocar un fallo. Se soluciona esto usando READ_ONCE() al obtener el puntero y bloqueando la lista de k de los controladores del bus para garantizar que la instancia del controlador no desaparezca al acceder a ella. Use WRITE_ONCE() al configurar el puntero del controlador para evitar cortes.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/base/base.h\",\"drivers/base/bus.c\",\"drivers/base/core.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"16574dccd8f62dc1b585325f8a6a0aab10047ed8\",\"lessThan\":\"abe56be73eb10a677d16066f65ff9d30251f5eee\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"16574dccd8f62dc1b585325f8a6a0aab10047ed8\",\"lessThan\":\"2b344e779d9afd0fcb5ee4000e4d0fc7d8d867eb\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"16574dccd8f62dc1b585325f8a6a0aab10047ed8\",\"lessThan\":\"3781e4b83e174364998855de777e184cf0b62c40\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"16574dccd8f62dc1b585325f8a6a0aab10047ed8\",\"lessThan\":\"18daa52418e7e4629ed1703b64777294209d2622\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/base/base.h\",\"drivers/base/bus.c\",\"drivers/base/core.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"2.6.22\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"2.6.22\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.89\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.26\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.14.5\",\"lessThanOrEqual\":\"6.14.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.15\",\"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:N/A:H\",\"baseScore\":7.1,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.2},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-476\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"6.6.89\",\"matchCriteriaId\":\"4D51CA5E-345A-4098-B85D-3F2BED7BF3A0\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.7\",\"versionEndExcluding\":\"6.12.26\",\"matchCriteriaId\":\"22F52099-F422-4D19-8283-45F9F9BF4392\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.14.5\",\"matchCriteriaId\":\"6B25CA7E-4CD0-46DB-B4EF-13A3516071FB\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"8D465631-2980-487A-8E65-40AE2B9F8ED1\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"4C9D071F-B28E-46EC-AC61-22B913390211\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.15:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"13FC0DDE-E513-465E-9E81-515702D49B74\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/18daa52418e7e4629ed1703b64777294209d2622\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/2b344e779d9afd0fcb5ee4000e4d0fc7d8d867eb\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/3781e4b83e174364998855de777e184cf0b62c40\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/abe56be73eb10a677d16066f65ff9d30251f5eee\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T09:29:22+00:00",
      "cve": "CVE-2025-37800",
      "id": "CVE-2025-37800",
      "initial_release_date": "2025-05-08T00:00:00+00:00",
      "product_status:known_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: driver core: fix potential NULL pointer dereference in dev_uevent()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-37800.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-29T01:21:42Z",
      "cve": "CVE-2025-37800",
      "id": "CVE-2025-37800",
      "initial_release_date": "2025-05-08T11:40:24Z",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "380",
      "product_status:recommended": "433",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-37800",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-37800.json",
      "version": "40"
    }
  }
}



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…