CVE-2023-54114
NoneCVSS
—
EPSS
0.2%
Published
Dec 24, 2025
CISA due date
—
Cloudanix analysis
A bug in the Linux kernel's network handling can cause the entire system to crash when processing certain network packets, disrupting services until fixed.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Incorrect mac_header restoration in nsh_gso_segment() error unwind path allows skb_push to exceed headroom, triggering skb_panic when inner GSO handlers reset network_header.
Why it matters to the business
Kernel crashes on systems processing NSH-encapsulated traffic with GSO enabled, causing denial of service and potential loss of network connectivity or stability for dependent services.
How an attack unfolds
An attacker sends specially crafted packets that trigger NSH GSO segmentation followed by an inner protocol GSO failure (such as MPLS), causing the unwind logic to compute an invalid mac_header that leads to a kernel panic on skb_push.
How to fix it
Update the Linux kernel to the commit 2f88c8d38ecf5ed0273f99a067246899ba499eb2 or later stable releases that contain the corrected mac_offset handling in nsh_gso_segment().
How to confirm the fix worked
Confirm the presence of the fix commit in the running kernel source or verify that nsh_gso_segment no longer uses the nhoff calculation for mac_header restoration on GSO error paths.
Typical attack path
- Craft packet with NSH header and inner protocol that exercises GSO
- Trigger skb_mac_gso_segment which calls inner GSO handler
- Inner handler resets network_header and returns error
- nsh_gso_segment error unwind computes mac_header from stale network_header offset
- skb_push in unwind path exceeds headroom and panics
How to detect it
Search kernel logs and dmesg for skb_panic traces referencing nsh_gso_segment, skb_push, and skb_mac_gso_segment; inspect crash dumps for invalid mac_header values after NSH GSO paths.
- skb_panic+0xda/0xe0
- nsh_gso_segment+0x4f3/0x570
- skb_push+0x91/0xa0
- invalid opcode: 0000 [#1] PREEMPT SMP KASAN
What your security team should do
- Prioritize kernel upgrades on systems exposing NSH or GSO paths to untrusted traffic
- Monitor for skb_panic call traces involving nsh_gso_segment
- Temporarily disable GSO for affected interfaces if immediate patching is not feasible
The record
In the Linux kernel, the following vulnerability has been resolved: net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() As the call trace shows, skb_panic was caused by wrong skb->mac_header in nsh_gso_segment(): invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI CPU: 3 PID: 2737 Comm: syz Not tainted 6.3.0-next-20230505 #1 RIP: 0010:skb_panic+0xda/0xe0 call Trace: skb_push+0x91/0xa0 nsh_gso_segment+0x4f3/0x570 skb_mac_gso_segment+0x19e/0x270 __skb_gso_segment+0x1e8/0x3c0 validate_xmit_skb+0x452/0x890 validate_xmit_skb_list+0x99/0xd0 sch_direct_xmit+0x294/0x7c0 __dev_queue_xmit+0x16f0/0x1d70 packet_xmit+0x185/0x210 packet_snd+0xc15/0x1170 packet_sendmsg+0x7b/0xa0 sock_sendmsg+0x14f/0x160 The root cause is: nsh_gso_segment() use skb->network_header - nhoff to reset mac_header in skb_gso_error_unwind() if inner-layer protocol gso fails. However, skb->network_header may be reset by inner-layer protocol gso function e.g. mpls_gso_segment. skb->mac_header reset by the inaccurate network_header will be larger than skb headroom. nsh_gso_segment nhoff = skb->network_header - skb->mac_header; __skb_pull(skb,nsh_len) skb_mac_gso_segment mpls_gso_segment skb_reset_network_header(skb);//skb->network_header+=nsh_len return -EINVAL; skb_gso_error_unwind skb_push(skb, nsh_len); skb->mac_header = skb->network_header - nhoff; // skb->mac_header > skb->headroom, cause skb_push panic Use correct mac_offset to restore mac_header and get rid of nhoff.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Linux | Kernel | 4.14.0 | 4.14.316 |
| SUSE:Linux Enterprise Micro 5.5 | kernel-rt | 0 | 5.14.21-150500.13.118.1 |
| SUSE:Linux Enterprise Micro 5.5 | kernel-source-rt | 0 | 5.14.21-150500.13.118.1 |
Related vulnerabilities
- CVE-2026-23226 In the Linux kernel, the following vulnerability has been resolved: ksmbd: add chann_lock… Also affects Kernel
- CVE-2026-23225 In the Linux kernel, the following vulnerability has been resolved: sched/mmcid: Don't… Also affects Kernel
- CVE-2026-23230 In the Linux kernel, the following vulnerability has been resolved: smb: client: split… Also affects Kernel
- CVE-2026-23224 In the Linux kernel, the following vulnerability has been resolved: erofs: fix UAF issue… Also affects Kernel
- CVE-2026-23227 In the Linux kernel, the following vulnerability has been resolved: drm/exynos: vidi: use… Also affects Kernel
- CVE-2026-23223 In the Linux kernel, the following vulnerability has been resolved: xfs: fix UAF in… Also affects Kernel
- CVE-2026-23228 In the Linux kernel, the following vulnerability has been resolved: smb: server: fix leak… Also affects Kernel
- CVE-2026-23229 In the Linux kernel, the following vulnerability has been resolved: crypto: virtio - Add… Also affects Kernel