CVE-2026-43080
Medium · 5.5CVSS
5.5
EPSS
0.1%
Published
May 6, 2026
CISA due date
—
Cloudanix analysis
A local user or compromised program could abuse a Linux networking bug to disrupt the computer, especially on systems that use L2TP networking features.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw is an integer truncation/overflow in the Linux kernel L2TP transmit path for PPPoL2TP over UDP encapsulation. When a local process sends an oversized PPPoL2TP payload, l2tp_xmit_core calculates a UDP packet length that can exceed the 16-bit UDP length field. Vulnerable kernels may write the truncated value instead of rejecting the packet. Depending on kernel configuration and runtime settings, this can result in malformed UDP/L2TP traffic, kernel warnings, and potential local denial of service, especially on systems configured to panic on kernel WARN conditions.
Why it matters to the business
An authenticated local user or workload with access to the affected L2TP/PPPoL2TP functionality could disrupt host availability. The most likely outcome is a denial-of-service condition on Linux systems using or exposing L2TP-related kernel functionality, with greater operational risk on VPN, network gateway, telecom, or multi-tenant Linux hosts. Public exploitation is not currently indicated, the EPSS score is very low and stable, and the issue is not in CISA KEV, but it has been public for 98 days and should still be addressed through normal kernel maintenance because kernel availability bugs can have high operational impact when triggered locally.
How an attack unfolds
An attacker first obtains local code execution as a low-privileged user or compromises a workload running on an affected Linux host. They create a PPPoL2TP socket and an IPv6 UDP socket, connect the L2TP session through UDP encapsulation, and then write an oversized PPPoL2TP packet larger than the maximum representable UDP length. In vulnerable kernels, the L2TP transmit path fails to reject the oversized packet before assigning the UDP length field, causing the length to wrap or be truncated to 16 bits. The immediate effect may be malformed packet transmission and kernel warning output from the UDP/L2TP code path; on hardened or debugging-oriented systems where kernel warnings trigger a panic, this can crash the host and cause denial of service.
How to fix it
Upgrade to a Linux kernel version that includes the upstream L2TP fix to drop oversized UDP-encapsulated L2TP packets before assigning the 16-bit UDP length field. Because no exact fixed package versions were provided, use the security advisories and kernel packages from the relevant Linux distribution or vendor and verify that the patch for net/l2tp/l2tp_core.c is included. If immediate patching is not possible, reduce exposure by disabling or unloading unused L2TP/PPP-related kernel modules where operationally safe, restricting local shell/container access on systems that do not require it, limiting capabilities that allow creation or use of PPP/L2TP networking features, and ensuring production systems are not configured to panic on non-fatal kernel warnings unless that behavior is explicitly required.
How to confirm the fix worked
Confirm the running kernel has been updated to a vendor build containing the L2TP oversized UDP encapsulation fix. Validate that affected systems no longer produce kernel warnings from udp_set_len_short, l2tp_xmit_core, l2tp_xmit_skb, or pppol2tp_sendmsg when oversized PPPoL2TP traffic is attempted in an authorized test environment. Review kernel configuration and loaded modules to determine whether L2TP/PPP functionality is present, such as l2tp_core, l2tp_ppp, ppp_generic, and related modules. Use distribution tooling such as uname, package manager changelogs, vendor errata, or kernel source package references to confirm the patched kernel is installed and booted, not merely downloaded.
Typical attack path
- Gain local execution on a vulnerable Linux system as an authenticated user or within a local workload/container context that can access the relevant socket functionality.
- Confirm that the kernel includes L2TP/PPPoL2TP support and allows creation of PPPoL2TP and UDP sockets.
- Create a PPPoL2TP socket and a UDP socket, then bind/connect them into a UDP-encapsulated L2TP session.
- Send an oversized PPPoL2TP payload whose resulting UDP length exceeds 65535 bytes.
- Trigger the vulnerable L2TP transmit path so the UDP length field is truncated rather than the packet being dropped.
- Cause malformed network output, kernel warnings, service disruption, or a host crash if panic-on-warning behavior is enabled.
How to detect it
Look for evidence in kernel logs, system journals, crash dumps, and endpoint telemetry showing oversized PPPoL2TP send attempts or kernel warnings in the L2TP transmit path. Primary log sources include dmesg, journalctl -k, /var/log/kern.log, /var/log/messages, /var/log/syslog, kdump/vmcore records, auditd syscall logs, EDR process telemetry, and network device logs if malformed L2TP/UDP packets were emitted. Search for stack traces referencing udp_set_len_short, l2tp_xmit_core, l2tp_xmit_skb, and pppol2tp_sendmsg. Investigate local processes that created AF_PPPOX/PPPoL2TP sockets, issued large writev/sendmsg calls to PPPoL2TP sockets, or ran shortly before a kernel warning or crash. If panic_on_warn is enabled, correlate unexpected reboots or kernel panics with these stack frames. There are no known named threat actors or public exploitation campaigns associated with this issue based on the provided data.
- udp_set_len_short
- l2tp_xmit_core
- l2tp_xmit_skb
- pppol2tp_sendmsg
- WARNING: ./include/linux/udp.h:38
- len >= 65536u
- net/l2tp/l2tp_core.c:1293
- net/l2tp/l2tp_core.c:1327
- net/l2tp/l2tp_ppp.c:302
- socket$pppl2tp
- socket$inet6_udp
- connect$pppl2tp
- writev
What your security team should do
- Prioritize patching Linux systems that provide VPN, L2TP, PPP, network gateway, telecom, hosting, CI/CD runner, or multi-tenant workload services.
- Identify systems with L2TP/PPPoL2TP kernel support enabled or modules loaded, and treat those as the primary exposure set.
- Apply vendor kernel updates and reboot into the fixed kernel; verify the active kernel version after reboot.
- Where L2TP is not required, disable or prevent loading of L2TP/PPP-related modules as a defense-in-depth mitigation.
- Review sysctl and kernel panic settings, especially panic_on_warn, because this issue is more disruptive when WARN conditions cause a host panic.
- Monitor kernel logs for L2TP/UDP warning traces and unusually large PPPoL2TP write activity from local processes.
- Because EPSS is low, stable, and there is no KEV listing, handle through normal vulnerability management timelines unless the host is high availability, multi-tenant, or uses L2TP heavily.
The record
In the Linux kernel, the following vulnerability has been resolved: l2tp: Drop large packets with UDP encap syzbot reported a WARN on my patch series [1]. The actual issue is an overflow of 16-bit UDP length field, and it exists in the upstream code. My series added a debug WARN with an overflow check that exposed the issue, that's why syzbot tripped on my patches, rather than on upstream code. syzbot's repro: r0 = socket$pppl2tp(0x18, 0x1, 0x1) r1 = socket$inet6_udp(0xa, 0x2, 0x0) connect$inet6(r1, &(0x7f00000000c0)={0xa, 0x0, 0x0, @loopback, 0xfffffffc}, 0x1c) connect$pppl2tp(r0, &(0x7f0000000240)=@pppol2tpin6={0x18, 0x1, {0x0, r1, 0x4, 0x0, 0x0, 0x0, {0xa, 0x4e22, 0xffff, @ipv4={'\x00', '\xff\xff', @empty}}}}, 0x32) writev(r0, &(0x7f0000000080)=[{&(0x7f0000000000)="ee", 0x34000}], 0x1) It basically sends an oversized (0x34000 bytes) PPPoL2TP packet with UDP encapsulation, and l2tp_xmit_core doesn't check for overflows when it assigns the UDP length field. The value gets trimmed to 16 bites. Add an overflow check that drops oversized packets and avoids sending packets with trimmed UDP length to the wire. syzbot's stack trace (with my patch applied): len >= 65536u WARNING: ./include/linux/udp.h:38 at udp_set_len_short include/linux/udp.h:38 [inline], CPU#1: syz.0.17/5957 WARNING: ./include/linux/udp.h:38 at l2tp_xmit_core net/l2tp/l2tp_core.c:1293 [inline], CPU#1: syz.0.17/5957 WARNING: ./include/linux/udp.h:38 at l2tp_xmit_skb+0x1204/0x18d0 net/l2tp/l2tp_core.c:1327, CPU#1: syz.0.17/5957 Modules linked in: CPU: 1 UID: 0 PID: 5957 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(full) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 RIP: 0010:udp_set_len_short include/linux/udp.h:38 [inline] RIP: 0010:l2tp_xmit_core net/l2tp/l2tp_core.c:1293 [inline] RIP: 0010:l2tp_xmit_skb+0x1204/0x18d0 net/l2tp/l2tp_core.c:1327 Code: 0f 0b 90 e9 21 f9 ff ff e8 e9 05 ec f6 90 0f 0b 90 e9 8d f9 ff ff e8 db 05 ec f6 90 0f 0b 90 e9 cc f9 ff ff e8 cd 05 ec f6 90 <0f> 0b 90 e9 de fa ff ff 44 89 f1 80 e1 07 80 c1 03 38 c1 0f 8c 4f RSP: 0018:ffffc90003d67878 EFLAGS: 00010293 RAX: ffffffff8ad985e3 RBX: ffff8881a6400090 RCX: ffff8881697f0000 RDX: 0000000000000000 RSI: 0000000000034010 RDI: 000000000000ffff RBP: dffffc0000000000 R08: 0000000000000003 R09: 0000000000000004 R10: dffffc0000000000 R11: fffff520007acf00 R12: ffff8881baf20900 R13: 0000000000034010 R14: ffff8881a640008e R15: ffff8881760f7000 FS: 000055557e81f500(0000) GS:ffff8882a9467000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000200000033000 CR3: 00000001612f4000 CR4: 00000000000006f0 Call Trace: <TASK> pppol2tp_sendmsg+0x40a/0x5f0 net/l2tp/l2tp_ppp.c:302 sock_sendmsg_nosec net/socket.c:727 [inline] __sock_sendmsg net/socket.c:742 [inline] sock_write_iter+0x503/0x550 net/socket.c:1195 do_iter_readv_writev+0x619/0x8c0 fs/read_write.c:-1 vfs_writev+0x33c/0x990 fs/read_write.c:1059 do_writev+0x154/0x2e0 fs/read_write.c:1105 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline] do_syscall_64+0x14d/0xf80 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f636479c629 Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffffd4241c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX: 00007f6364a15fa0 RCX: 00007f636479c629 RDX: 0000000000000001 RSI: 0000200000000080 RDI: 0000000000000003 RBP: 00007f6364832b39 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13: 00007f6364a15fac R14: 00007f6364a15fa0 R15: 00007f6364a15fa0 </TASK> [1]: https://lore.kernel.org/all/20260226201600.222044-1-alice.kernel@fastmail.im/
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62303 Pistache is a high-performance REST toolkit written in C++. CWE-674
- CVE-2026-61847 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-674
- CVE-2026-61846 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-674
- CVE-2026-119762 Axigen Mail Server before 10.5.69, 10.6.x before 10.6.40, and 10.7.x before 10.7.2… CWE-674
- CVE-2026-119542 A flaw was found in the Ickle query parser in Infinispan. CWE-674
- CVE-2026-119591 SQLite before 3.54.0 contains a stack exhaustion vulnerability in… CWE-674
- CVE-2026-119376 SQLite before 3.54.0 contains a stack exhaustion vulnerability that allows attackers to… CWE-674
- CVE-2026-119371 SQLite before 3.54.0 contains a stack exhaustion vulnerability that allows attackers to… CWE-674