{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-49860",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-49860"
  ],
  "published": "2024-10-21T12:27:33Z",
  "summary": "ACPI: sysfs: validate return type of _STR method",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nACPI: sysfs: validate return type of _STR method\n\nOnly buffer objects are valid return values of _STR.\n\nIf something else is returned description_show() will access invalid\nmemory.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.113",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-49860"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/92fd5209fc014405f63a7db79802ca4b01dc0c05"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/2364b6af90c6b6d8a4783e0d3481ca80af699554"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/4b081991c4363e072e1748efed0bbec8a77daba5"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0cdfb9178a3bba843c95c2117c82c15f1a64b9ce"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/5c8d007c14aefc3f2ddf71e4c40713733dc827be"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/f0921ecd4ddc14646bb5511f49db4d7d3b0829f0"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/f51e5a88f2e7224858b261546cf6b3037dfb1323"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/f51f711d36e61fbb87c67b524fd200e05172668d"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/4bb1e7d027413835b086aed35bc3f0713bc0f72b"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.3,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The vulnerable code is reached by reading the world-readable sysfs attribute /sys/bus/acpi/devices/<dev>/description, which requires a local account (or a container/sandbox with /sys mounted). There is no network or physical-access requirement for the reading attacker.\nAC:L - On an affected platform a single read(2) of the sysfs file deterministically hits the type-confused dereference \u2014 no race, no memory-layout grooming, and no ASLR bypass is needed, and the read can be repeated at will since str_obj is cached at boot.\nPR:L - The description attribute is created via DEVICE_ATTR_RO (mode 0444) under a world-traversable /sys/bus/acpi/devices/ tree, so any unprivileged local user can read it; no capability, user namespace, or root access is required.\nUI:N - Exploitation consists solely of the attacker opening and reading a sysfs file; no victim action, mount, or configuration change is involved.\nS:U - The invalid access and its consequences are entirely within the kernel's own security authority \u2014 there is no hypervisor, IOMMU, or other security-boundary crossing.\nC:H - The type confusion feeds a firmware-supplied pointer and length into utf16s_to_utf8s(), whose output is copied straight to userspace \u2014 yielding an out-of-bounds heap read past the ACPI object (STRING case), disclosure of raw kernel pointers from the elements array (PACKAGE case), or a fully controlled arbitrary-address read (PROCESSOR/pblk_address on 64-bit, INTEGER on 32-bit), up to 4095 bytes per read and repeatable.\nI:L - No write primitive exists \u2014 the output is correctly bounded to the sysfs page \u2014 but the confusion makes the kernel dereference a firmware-controlled address that is semantically an I/O address, so reads landing on direct-mapped MMIO can alter device state through read-side-effect registers, a limited and non-targeted modification.\nA:H - The confused pointer is a NULL/low address in the POWER case and an arbitrary or out-of-bounds address in the others, so an unprivileged read reliably produces a kernel oops \u2014 a full panic on the panic_on_oops configurations common in embedded, automotive, and production deployments."
    }
  }
}
