{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2023-53184", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2025-09-15T13:59:19.065Z", "datePublished": "2025-09-15T14:04:36.754Z", "dateUpdated": "2026-08-05T09:12:58.920Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T09:12:58.920Z" }, "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't 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": { "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 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." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/arm64/kernel/fpsimd.c" ], "versions": [ { "version": "aa5cf8bd1318b6e7d500668b318c07a71cde783b", "lessThan": "356e711640aea6ed145da9407499388b45264cb4", "status": "affected", "versionType": "git" }, { "version": "292f0453b0d021bb1d3f64648bfdfca093512214", "lessThan": "807ada0e4aa3c9090c66009a99fa530c462012c9", "status": "affected", "versionType": "git" }, { "version": "d4d5be94a87872421ea2569044092535aff0b886", "lessThan": "05d881b85b48c7ac6a7c92ce00aa916c4a84d052", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/arm64/kernel/fpsimd.c" ], "versions": [ { "version": "6.1.42", "lessThan": "6.1.43", "status": "affected", "versionType": "semver" }, { "version": "6.4.7", "lessThan": "6.4.8", "status": "affected", "versionType": "semver" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.1.42", "versionEndExcluding": "6.1.43" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.4.7", "versionEndExcluding": "6.4.8" } ] } ] } ], "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" } } } }