CVE-2026-11985: info-leak in zephyrproject zephyr
On the Zephyr ARM port, enabling the hardware FPU (CONFIG_FPU) forces the "Floating point ABI" choice, which defaults to CONFIG_FP_HARDABI. Both FP_HARDABI and FP_SOFTABI permit the compiler to emit hardware FP instructions in any function, even code that never uses floating-point types. However, the callee-saved FP registers (s16-s31 / d8-d15) are only saved and restored across a context switch when CONFIG_FPU_SHARING is enabled (arch/arm/core/cortex_m/swap_helper.S and arch/arm/core/cortex_a_r/swap_helper.S), and prior to this fix selecting an ABI did not enable FPU register sharing, which defaults off. In a build that enables the FPU with the default ABI but leaves CONFIG_FPU_SHARING disabled, the kernel preserves no callee-saved FP register state across thread switches. The documented precondition for this "unshared" mode — that only a single thread ever executes FP instructions — is silently violated because the compiler may generate FP instructions in every thread. Under CONFIG_USERSPACE, where threads are mutually isolated, this becomes an information-disclosure boundary crossing: a victim thread can leave secret-derived values in s16-s31, and a co-resident unprivileged thread can read those registers directly (FP register access is not privilege-gated), recovering data left behind by another thread. Without userspace the same defect causes cross-thread FP state corruption (a correctness fault). The leak is bounded to the 16 callee-saved single-precision registers and is opportunistic, so impact is low. The fix makes FP_HARDABI and FP_SOFTABI select CONFIG_FPU_SHARING and tags every thread with K_FP_REGS at creation, so callee-saved FP state is always preserved across context switches whenever the compiler may emit FP instructions.
AI Analysis
Technical Summary
On Zephyr ARM platforms, enabling the hardware FPU (CONFIG_FPU) forces a floating point ABI choice defaulting to CONFIG_FP_HARDABI. Both FP_HARDABI and FP_SOFTABI allow the compiler to emit hardware floating point instructions in any function, even those not explicitly using floating point types. However, callee-saved floating point registers (s16-s31 / d8-d15) are only saved and restored across context switches if CONFIG_FPU_SHARING is enabled. Prior to the fix, selecting an ABI did not enable FPU register sharing, which defaults to off. This leads to a scenario where the kernel does not preserve callee-saved FP register state across thread switches. Under CONFIG_USERSPACE, this causes an information disclosure boundary violation because unprivileged threads can read FP registers left by victim threads, as FP register access is not privilege-gated. Without userspace, this causes cross-thread FP state corruption. The vulnerability is bounded to 16 registers and is opportunistic, resulting in low impact. The fix makes FP_HARDABI and FP_SOFTABI select CONFIG_FPU_SHARING and tags threads with K_FP_REGS to ensure preservation of FP state across context switches.
Potential Impact
The vulnerability allows an unprivileged thread to read floating point registers left behind by another thread, causing information disclosure of data stored in those registers. The leak is limited to 16 callee-saved single-precision floating point registers and is opportunistic, resulting in low impact. Without userspace isolation, it causes cross-thread floating point state corruption, which is a correctness fault rather than a security breach.
Mitigation Recommendations
A patch is available that enables CONFIG_FPU_SHARING automatically when FP_HARDABI or FP_SOFTABI is selected, ensuring callee-saved floating point registers are preserved across context switches. Users should apply the official fix to prevent information leakage. Since this is a cloud service, the vendor manages remediation server-side; check the vendor advisory for confirmation and deployment status.
CVE-2026-11985: info-leak in zephyrproject zephyr
Description
On the Zephyr ARM port, enabling the hardware FPU (CONFIG_FPU) forces the "Floating point ABI" choice, which defaults to CONFIG_FP_HARDABI. Both FP_HARDABI and FP_SOFTABI permit the compiler to emit hardware FP instructions in any function, even code that never uses floating-point types. However, the callee-saved FP registers (s16-s31 / d8-d15) are only saved and restored across a context switch when CONFIG_FPU_SHARING is enabled (arch/arm/core/cortex_m/swap_helper.S and arch/arm/core/cortex_a_r/swap_helper.S), and prior to this fix selecting an ABI did not enable FPU register sharing, which defaults off. In a build that enables the FPU with the default ABI but leaves CONFIG_FPU_SHARING disabled, the kernel preserves no callee-saved FP register state across thread switches. The documented precondition for this "unshared" mode — that only a single thread ever executes FP instructions — is silently violated because the compiler may generate FP instructions in every thread. Under CONFIG_USERSPACE, where threads are mutually isolated, this becomes an information-disclosure boundary crossing: a victim thread can leave secret-derived values in s16-s31, and a co-resident unprivileged thread can read those registers directly (FP register access is not privilege-gated), recovering data left behind by another thread. Without userspace the same defect causes cross-thread FP state corruption (a correctness fault). The leak is bounded to the 16 callee-saved single-precision registers and is opportunistic, so impact is low. The fix makes FP_HARDABI and FP_SOFTABI select CONFIG_FPU_SHARING and tags every thread with K_FP_REGS at creation, so callee-saved FP state is always preserved across context switches whenever the compiler may emit FP instructions.
CVSS v3.1
Score 3.6low
Affected software
zephyrproject
zephyr
Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
On Zephyr ARM platforms, enabling the hardware FPU (CONFIG_FPU) forces a floating point ABI choice defaulting to CONFIG_FP_HARDABI. Both FP_HARDABI and FP_SOFTABI allow the compiler to emit hardware floating point instructions in any function, even those not explicitly using floating point types. However, callee-saved floating point registers (s16-s31 / d8-d15) are only saved and restored across context switches if CONFIG_FPU_SHARING is enabled. Prior to the fix, selecting an ABI did not enable FPU register sharing, which defaults to off. This leads to a scenario where the kernel does not preserve callee-saved FP register state across thread switches. Under CONFIG_USERSPACE, this causes an information disclosure boundary violation because unprivileged threads can read FP registers left by victim threads, as FP register access is not privilege-gated. Without userspace, this causes cross-thread FP state corruption. The vulnerability is bounded to 16 registers and is opportunistic, resulting in low impact. The fix makes FP_HARDABI and FP_SOFTABI select CONFIG_FPU_SHARING and tags threads with K_FP_REGS to ensure preservation of FP state across context switches.
Potential Impact
The vulnerability allows an unprivileged thread to read floating point registers left behind by another thread, causing information disclosure of data stored in those registers. The leak is limited to 16 callee-saved single-precision floating point registers and is opportunistic, resulting in low impact. Without userspace isolation, it causes cross-thread floating point state corruption, which is a correctness fault rather than a security breach.
Mitigation Recommendations
A patch is available that enables CONFIG_FPU_SHARING automatically when FP_HARDABI or FP_SOFTABI is selected, ensuring callee-saved floating point registers are preserved across context switches. Users should apply the official fix to prevent information leakage. Since this is a cloud service, the vendor manages remediation server-side; check the vendor advisory for confirmation and deployment status.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- zephyr
- Date Reserved
- 2026-06-11T14:04:09.251Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Is Cloud Service
- true
Threat ID: 6a7aaf24bf8831d53928ad6e
Added to database: 08/11/2026, 05:12:04 UTC
Last enriched: 08/11/2026, 05:31:47 UTC
Last updated: 09/23/2026, 01:47:41 UTC
Views: 54
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.