Nested kprobe hits mishandled in Linux kernel arm64 kprobes
Key facts
- Attack vector
- —
- Privileges required
- —
- User interaction
- —
- Attack complexity
- —
- Impact type
- —
- Confidentiality · integrity · availability
- —
- Fix status
- Partial Red Hat: 5 without a fix
No CVSS vector from any source. Fix status from CNA and Red Hat.
Summary
The Linux kernel arm64 kprobes code treats a kprobe hit during single-stepping of another kprobe as unrecoverable. A nested kprobe also overwrites the saved interrupt state, so interrupts can stay disabled after the outer single-step finishes.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
In the Linux kernel, the following vulnerability has been resolved: arm64: kprobes: Allow reentering kprobes while single-stepping A kprobe can be hit while another kprobe is in KPROBE_HIT_SS state. This can happen when tracing or perf code runs from the debug exception path while the first kprobe is preparing or executing its out-of-line single-step instruction. Currently arm64 treats a kprobe hit in KPROBE_HIT_SS as unrecoverable, the same as a hit in KPROBE_REENTER. This is too strict. A hit in KPROBE_HIT_SS is still a one-level reentry and can be handled by saving the current kprobe state and setting up single-step for the new probe, just like reentry from KPROBE_HIT_ACTIVE or KPROBE_HIT_SSDONE. The truly unrecoverable case is hitting another kprobe while already in KPROBE_REENTER, because the reentry save area has already been consumed. Move KPROBE_HIT_SS to the recoverable reentry cases and leave KPROBE_REENTER as the unrecoverable nested reentry case. This change also requires saving saved_irqflag in struct prev_kprobe. When a nested kprobe calls kprobes_save_local_irqflag(), it overwrites kcb->saved_irqflag with the currently masked DAIF value, losing the outer kprobe's original DAIF state. Without this fix, when the outer kprobe's single-step finishes, kprobes_restore_local_irqflag() applies the wrong DAIF mask and leaves interrupts permanently disabled. Extend struct prev_kprobe with a saved_irqflag field and save/restore it alongside kp and status. This ensures the outer kprobe's original interrupt state is preserved across reentry. This mirrors the x86 fix in commit 6a5022a56ac3 ("kprobes/x86: Allow to handle reentered kprobe on single-stepping").
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
Remediation
Fixed versions are Linux kernel 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, 6.18.53 and 7.2. Red Hat lists Red Hat Enterprise Linux 8, 9 and 10 and Red Hat OpenShift Container Platform 4 and 5 as affected, with the plan none available.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA Linux (Linux) Fixed in 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, 6.18.53, 7.2
Vendor assessments
Red Hat
Red Hat rating: Moderate. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Enterprise Linux 10 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 8 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 9 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 4 | Affected | No fix yet: Fix deferred |
| Red Hat OpenShift Container Platform 5 | Affected | No fix yet: Fix deferred |
Not affected: 2 products
- Red Hat Enterprise Linux 6
- Red Hat Enterprise Linux 7
Timeline
- 2026-10-23 Threatist record created from CVE-2026-98888
- 2026-10-23 Alias added: GHSA-g4px-h95h-7mgm
- 2026-10-26 Fix available: Linux/Linux@0 · CNA
- 2026-10-26 Affected versions changed · Red Hat
- 2026-10-26 CVSS score added · Red Hat
- 2026-11-06 Affected versions changed · Red Hat
References
Other 7
- https://git.kernel.org/stable/c/bb0fe9121aa0824211aafa33c7d0151fd25ddb75
- https://git.kernel.org/stable/c/f96a0606de6bcc8d937b80e6470fd7a174c17e26
- https://git.kernel.org/stable/c/1f342b3e44c3035a837b53b217d816f7511c0d0a
- https://git.kernel.org/stable/c/c8e84e292ed4cfc199824146da71bb4397b02a1f
- https://git.kernel.org/stable/c/68774caca799e9695db56d426c69acebd041c2ed
- https://git.kernel.org/stable/c/a21bf9cb893126e8d9730995708d0be5eb167652
- https://git.kernel.org/stable/c/23f851ac0078a908bf3422d6467ebc1db5828c46
More Linux vulnerabilities
- TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
- TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
- TI-2021-02452 Incorrect authorization in Ubuntu linux kernel KEVCVSS 3.1HIGH 8.8
- TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
- TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
- TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
Sources
- CVE-2026-98888 · CVE Program
- CVE-2026-98888 · NVD
- FIRST EPSS
- GHSA-g4px-h95h-7mgm · GitHub Advisory Database · CC BY 4.0
- CVE-2026-98888 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences