CVE-2024-50027 (GCVE-0-2024-50027)
Vulnerability from cvelistv5
Published
2024-10-21 19:39
Modified
2026-08-05 11:41
Summary
In the Linux kernel, the following vulnerability has been resolved: thermal: core: Free tzp copy along with the thermal zone The object pointed to by tz->tzp may still be accessed after being freed in thermal_zone_device_unregister(), so move the freeing of it to the point after the removal completion has been completed at which it cannot be accessed any more.
Impacted products
Vendor Product Version
Linux Linux Version: 3d439b1a2ad36c8b4ea151c8de25309d60d17407
Version: 3d439b1a2ad36c8b4ea151c8de25309d60d17407
Version: 3d439b1a2ad36c8b4ea151c8de25309d60d17407
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-50027",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-10-22T13:26:36.583525Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-10-22T13:28:46.345Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/thermal/thermal_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "eabe285e1c629a719d6e68fc319939c63b83bf22",
              "status": "affected",
              "version": "3d439b1a2ad36c8b4ea151c8de25309d60d17407",
              "versionType": "git"
            },
            {
              "lessThan": "bdb0d40507c85bee33c2a71fde7b2e857346f112",
              "status": "affected",
              "version": "3d439b1a2ad36c8b4ea151c8de25309d60d17407",
              "versionType": "git"
            },
            {
              "lessThan": "827a07525c099f54d3b15110408824541ec66b3c",
              "status": "affected",
              "version": "3d439b1a2ad36c8b4ea151c8de25309d60d17407",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/thermal/thermal_core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.4"
            },
            {
              "lessThan": "6.4",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.60",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.11.*",
              "status": "unaffected",
              "version": "6.11.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.12",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.60",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11.4",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12",
                  "versionStartIncluding": "6.4",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nthermal: core: Free tzp copy along with the thermal zone\n\nThe object pointed to by tz-\u003etzp may still be accessed after being\nfreed in thermal_zone_device_unregister(), so move the freeing of it\nto the point after the removal completion has been completed at which\nit cannot be accessed any more."
        }
      ],
      "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 dangling `tz-\u003etzp` is reached through the thermal generic-netlink family (AF_NETLINK socket, init netns) and the world-readable `/sys/class/thermal/thermal_zoneN/{slope,offset,k_*,sustainable_powe r}` attributes, and the free side is a local device/driver teardown; no remote peer parses any of this data.\nAC:L - The attacker drives the surviving side of the race itself \u2014 a tight loop of `THERMAL_GENL_CMD_TZ_GET_TEMP`/`TZ_GET_TRIP` pins the zone with `get_device()` while unregistration proceeds \u2014 and the freed window spans `device_del()` teardown, a netlink multicast delete notification and an unbounded `wait_for_completion()`, which is wide enough to reliably reclaim the 48-byte `tzp` from the heavily-trafficked kmalloc-64 cache; the attempt is repeatable at will.\nPR:L - None of the thermal genl ops set `GENL_ADMIN_PERM` (`thermal_genl_ops[]`), and `thermal_zone_get_by_id()` performs no capability check, so an ordinary unprivileged local user obtains and holds the zone reference; the `tzp` sysfs show handlers are likewise world-readable at 0444/0644.\nUI:N - The attacker\u0027s netlink polling loop needs no cooperation from any other user, and the unregistration it races is ordinary system activity (charger/battery power-supply removal, transceiver or CPU-package zone teardown, driver rebind) rather than an action the attacker must induce a victim to perform.\nS:U - The corrupted memory is kernel slab memory managed by the same kernel security authority; no hypervisor, IOMMU, or sandbox boundary is crossed.\nC:H - `thermal_zone_get_slope()`/`thermal_zone_get_offset()` and the power-allocator PID code read the freed `tzp`, and those values propagate into the temperature returned over netlink and sysfs, disclosing whatever kernel object has since been allocated into the reclaimed kmalloc-64 slot; as with any UAF the stale pointer generalises into an arbitrary-read primitive once the attacker controls the reallocation.\nI:H - The dangling pointer is also written through \u2014 `estimate_pid_constants()`/`get_sustainable_power()` store into `tz-\u003etzp-\u003ek_po`, `k_pu`, `k_i` and `sustainable_power`, and the `sustainable_power`/`k_*`/`slope`/`offset` sysfs store handlers assign directly through `tz-\u003etzp` \u2014 giving a heap write into a reallocated, groomable kmalloc-64 object and thus corruption of adjacent kernel structures usable for control-flow hijack and privilege escalation.\nA:H - Dereferencing the freed `tzp` (plus the `def_governor` fallback entering `power_allocator_manage()` with `tz-\u003egovernor_data` already NULLed) produces slab use-after-free corruption and oops/panic, and an unprivileged user can retry the race indefinitely."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:41:03.310Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/eabe285e1c629a719d6e68fc319939c63b83bf22"
        },
        {
          "url": "https://git.kernel.org/stable/c/bdb0d40507c85bee33c2a71fde7b2e857346f112"
        },
        {
          "url": "https://git.kernel.org/stable/c/827a07525c099f54d3b15110408824541ec66b3c"
        }
      ],
      "title": "thermal: core: Free tzp copy along with the thermal zone",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-50027",
    "datePublished": "2024-10-21T19:39:31.141Z",
    "dateReserved": "2024-10-21T12:17:06.066Z",
    "dateUpdated": "2026-08-05T11:41:03.310Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-50027\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-10-22T13:26:36.583525Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-10-22T13:26:40.483Z\"}}], \"cna\": {\"title\": \"thermal: core: Free tzp copy along with the thermal zone\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"3d439b1a2ad3\", \"lessThan\": \"eabe285e1c62\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"3d439b1a2ad3\", \"lessThan\": \"bdb0d40507c8\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"3d439b1a2ad3\", \"lessThan\": \"827a07525c09\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/thermal/thermal_core.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.4\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.4\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.60\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.11.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.11.*\"}, {\"status\": \"unaffected\", \"version\": \"6.12-rc3\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/thermal/thermal_core.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/eabe285e1c629a719d6e68fc319939c63b83bf22\"}, {\"url\": \"https://git.kernel.org/stable/c/bdb0d40507c85bee33c2a71fde7b2e857346f112\"}, {\"url\": \"https://git.kernel.org/stable/c/827a07525c099f54d3b15110408824541ec66b3c\"}], \"x_generator\": {\"engine\": \"bippy-9e1c9544281a\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nthermal: core: Free tzp copy along with the thermal zone\\n\\nThe object pointed to by tz-\u003etzp may still be accessed after being\\nfreed in thermal_zone_device_unregister(), so move the freeing of it\\nto the point after the removal completion has been completed at which\\nit cannot be accessed any more.\"}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2024-11-08T15:57:58.861Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-50027\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2024-11-08T15:57:58.861Z\", \"dateReserved\": \"2024-10-21T12:17:06.066Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-10-21T19:39:31.141Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.1"
    }
  }
}


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…