CVE-2023-53184 (GCVE-0-2023-53184)
Vulnerability from cvelistv5
Published
2025-09-15 14:04
Modified
2026-08-05 09:12
Summary
In the Linux kernel, the following vulnerability has been resolved: arm64/sme: Set new vector length before reallocating As part of fixing the allocation of the buffer for SVE state when changing SME vector length we introduced an immediate reallocation of the SVE state, this is also done when changing the SVE vector length for consistency. Unfortunately this reallocation is done prior to writing the new vector length to the task struct, meaning the allocation is done with the old vector length and can lead to memory corruption due to an undersized buffer being used. Move the update of the vector length before the allocation to ensure that the new vector length is taken into account. For some reason this isn't triggering any problems when running tests on the arm64 fixes branch (even after repeated tries) but is triggering issues very often after merge into mainline.
Impacted products
Vendor Product Version
Linux Linux Version: aa5cf8bd1318b6e7d500668b318c07a71cde783b
Version: 292f0453b0d021bb1d3f64648bfdfca093512214
Version: d4d5be94a87872421ea2569044092535aff0b886
Create a notification for this product.
   Linux Linux Version: 6.1.42   
Version: 6.4.7   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/arm64/kernel/fpsimd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "356e711640aea6ed145da9407499388b45264cb4",
              "status": "affected",
              "version": "aa5cf8bd1318b6e7d500668b318c07a71cde783b",
              "versionType": "git"
            },
            {
              "lessThan": "807ada0e4aa3c9090c66009a99fa530c462012c9",
              "status": "affected",
              "version": "292f0453b0d021bb1d3f64648bfdfca093512214",
              "versionType": "git"
            },
            {
              "lessThan": "05d881b85b48c7ac6a7c92ce00aa916c4a84d052",
              "status": "affected",
              "version": "d4d5be94a87872421ea2569044092535aff0b886",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/arm64/kernel/fpsimd.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6.1.43",
              "status": "affected",
              "version": "6.1.42",
              "versionType": "semver"
            },
            {
              "lessThan": "6.4.8",
              "status": "affected",
              "version": "6.4.7",
              "versionType": "semver"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.43",
                  "versionStartIncluding": "6.1.42",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.8",
                  "versionStartIncluding": "6.4.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\narm64/sme: Set new vector length before reallocating\n\nAs part of fixing the allocation of the buffer for SVE state when changing\nSME vector length we introduced an immediate reallocation of the SVE state,\nthis is also done when changing the SVE vector length for consistency.\nUnfortunately this reallocation is done prior to writing the new vector\nlength to the task struct, meaning the allocation is done with the old\nvector length and can lead to memory corruption due to an undersized buffer\nbeing used.\n\nMove the update of the vector length before the allocation to ensure that\nthe new vector length is taken into account.\n\nFor some reason this isn\u0027t triggering any problems when running tests on\nthe arm64 fixes branch (even after repeated tries) but is triggering\nissues very often after merge into mainline."
        }
      ],
      "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 bug is reached via the local prctl(PR_SVE_SET_VL)/prctl(PR_SME_SET_VL) syscalls (or ptrace of a same-UID task), not via network packet processing or adjacent-link protocols.\nAC:L - An unprivileged attacker can reliably trigger the bug by increasing the vector length (allocating with the old VL) and then using SVE/SME so the kernel writes the new, larger size into the undersized buffer; no conditions outside attacker control are required.\nPR:L - PR_SVE_SET_VL and PR_SME_SET_VL are available to any unprivileged local user with no capability checks; only system_supports_sve()/sme() and non-compat task checks apply.\nUI:N - The attacker triggers the vulnerability entirely through their own syscalls and SVE/SME register use; no action by another user is required.\nS:U - Impact is confined to the host kernel privilege boundary (local privilege escalation / memory corruption), with no VM-escape or other cross-authority boundary crossed.\nC:H - The undersized sve_state buffer leads to a kernel heap out-of-bounds write (and subsequent corrupted-state reads), which can be leveraged for arbitrary kernel memory disclosure.\nI:H - Context save of attacker-controlled SVE register state into an undersized heap buffer is a controllable kernel heap overflow, enabling arbitrary write and control-flow hijacking.\nA:H - Use of the undersized buffer causes kernel memory corruption that can oops/panic the kernel, as observed after the buggy reallocation landed in mainline."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:12:58.920Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/356e711640aea6ed145da9407499388b45264cb4"
        },
        {
          "url": "https://git.kernel.org/stable/c/807ada0e4aa3c9090c66009a99fa530c462012c9"
        },
        {
          "url": "https://git.kernel.org/stable/c/05d881b85b48c7ac6a7c92ce00aa916c4a84d052"
        }
      ],
      "title": "arm64/sme: Set new vector length before reallocating",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-53184",
    "datePublished": "2025-09-15T14:04:36.754Z",
    "dateReserved": "2025-09-15T13:59:19.065Z",
    "dateUpdated": "2026-08-05T09:12:58.920Z",
    "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…