CVE-2026-23102 json
arm64/fpsimd: signal: Fix restoration of SVE context
published 2026-02-04 9 mo ago modified 2026-11-05 3 d ago also EUVD-2026-5440
- cvss
- 7.1
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.1%
- EPSS 0.1% chance of exploitation in 30 days, percentile 3%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
arm64/fpsimd: signal: Fix restoration of SVE context
When SME is supported, Restoring SVE signal context can go wrong in a few ways, including placing the task into an invalid state where the kernel may read from out-of-bounds memory (and may potentially take a fatal fault) and/or may kill the task with a SIGKILL.
(1) Restoring a context with SVE_SIG_FLAG_SM set can place the task into an invalid state where SVCR.SM is set (and sve_state is non-NULL) but TIF_SME is clear, consequently resuting in out-of-bounds memory reads and/or killing the task with SIGKILL.
This can only occur in unusual (but legitimate) cases where the SVE signal context has either been modified by userspace or was saved in the context of another task (e.g. as with CRIU), as otherwise the presence of an SVE signal context with SVE_SIG_FLAG_SM implies that TIF_SME is already set.
While in this state, task_fpsimd_load() will NOT configure SMCR_ELx (leaving some arbitrary value configured in hardware) before restoring SVCR and attempting to restore the streaming mode SVE registers from memory via sve_load_state(). As the value of SMCR_ELx.LEN may be larger than the task's streaming SVE vector length, this may read memory outside of the task's allocated sve_state, reading unrelated data and/or triggering a fault.
While this can result in secrets being loaded into streaming SVE registers, these values are never exposed. As TIF_SME is clear, fpsimd_bind_task_to_cpu() will configure CPACR_ELx.SMEN to trap EL0 accesses to streaming mode SVE registers, so these cannot be accessed directly at EL0. As fpsimd_save_user_state() verifies the live vector length before saving (S)SVE state to memory, no secret values can be saved back to memory (and hence cannot be observed via ptrace, signals, etc).
When the live vector length doesn't match the expected vector length for the task, fpsimd_save_user_state() will send a fatal SIGKILL signal to the task. Hence the task may be killed after executing userspace for some period of time.
(2) Restoring a context with SVE_SIG_FLAG_SM clear does not clear the task's SVCR.SM. If SVCR.SM was set prior to restoring the context, then the task will be left in streaming mode unexpectedly, and some register state will be combined inconsistently, though the task will be left in legitimate state from the kernel's PoV.
This can only occur in unusual (but legitimate) cases where ptrace has been used to set SVCR.SM after entry to the sigreturn syscall, as syscall entry clears SVCR.SM.
In these cases, the the provided SVE register data will be loaded into the task's sve_state using the non-streaming SVE vector length and the FPSIMD registers will be merged into this using the streaming SVE vector length.
Fix (1) by setting TIF_SME when setting SVCR.SM. This also requires ensuring that the task's sme_state has been allocated, but as this could contain live ZA state, it should not be zeroed. Fix (2) by clearing SVCR.SM when restoring a SVE signal context with SVE_SIG_FLAG_SM clear.
For consistency, I've pulled the manipulation of SVCR, TIF_SVE, TIF_SME, and fp_type earlier, immediately after the allocation of sve_state/sme_state, before the restore of the actual register state. This makes it easier to ensure that these are always modified consistently, even if a fault is taken while reading the register data from the signal context. I do not expect any software to depend on the exact state restored when a fault is taken while reading the context.
Patch / fix
- Linux Linux 6.1.162, 6.6.123, 6.18.8, 6.19
- linux Debian 12 6.1.162-1
- linux Debian 14 6.18.8-1
debian advisories DEBIAN-CVE-2026-23102
- linux Ubuntu 24.04 LTS 6.8.0-117.117
- linux-aws Ubuntu 24.04 LTS 6.8.0-1055.58
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1058.61
- linux-gke Ubuntu 24.04 LTS 6.8.0-1054.60
- linux-ibm Ubuntu 24.04 LTS 6.8.0-1055.56
- linux-azure Ubuntu 24.04 LTS 6.8.0-1056.62
- linux-gkeop Ubuntu 24.04 LTS 6.8.0-1041.44
- linux-raspi Ubuntu 24.04 LTS 6.8.0-1056.60
ubuntu advisories UBUNTU-CVE-2026-23102
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-64kb SLE Module for Basesystem 15 SP7 6.4.0-150700.53.34.1
- kernel-syms SLE Module for Development Tools 15 SP7 6.4.0-150700.53.34.1
- kernel-azure SLE Module for Public Cloud 15 SP7 6.4.0-150700.53.34.1
- kernel-source SLE Module for Development Tools 15 SP7, SLE Module for Basesystem 15 SP7 6.4.0-150700.53.34.1
- kernel-default SLE Workstation Extension 15 SP7, SLE Module for Legacy 15 SP7, SLE Module for Basesystem 15 SP7 +2 more 6.4.0-150700.53.34.1
- kernel-zfcpdump SLE Module for Basesystem 15 SP7 6.4.0-150700.53.34.1
- kernel-obs-build SLE Module for Development Tools 15 SP7 6.4.0-150700.53.34.1
- kernel-default-base SLE Module for Basesystem 15 SP7 6.4.0-150700.53.34.1.150700.17.23.1
suse advisories SUSE-SU-2026:1081-1SUSE-SU-2026:20873-1SUSE-SU-2026:20838-1SUSE-SU-2026:20931-1SUSE-SU-2026:20845-1SUSE-SU-2026:20876-1
- kernel-rt openSUSE Leap 16.0 6.12.0-160000.27.1
- dtb-aarch64 openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-64kb openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-syms openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-azure openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-obs-qa openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-source openSUSE Leap 16.0 6.12.0-160000.27.1
- kernel-default openSUSE Leap 16.0 6.12.0-160000.27.1
opensuse advisories openSUSE-SU-2026:20416-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-23102 updated cvss 5.5
kernel: Linux kernel: Denial of Service due to incorrect SVE context restoration
-
Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelaffected: no fix available
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 3 d ago
Exploit prediction
0.14% chance of exploitation in the next 30 days, higher than 3% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 7.1 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-125 Out-of-bounds Read
- Technology feeds
References
Sources
- CVE List CVE-2026-23102
- NVD CVE-2026-23102
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.