PT-2026-85730 · Linux · Linux

CVE-2026-80852

·

Published

2026-09-04

·

Updated

2026-09-04

None

No severity ratings or metrics are available. When they are, we'll update the corresponding info on the page.
In the Linux kernel, the following vulnerability has been resolved:
tls: device: fix out-of-bounds write in tls append frag()
Found with syzkaller and a local syzbot instance running on top of a netdevsim TLS offload emulation; tls device.c is otherwise only reachable on a machine with a NIC that implements the offload.
tls push data() only checks whether the open record still has room for another frag at the bottom of its loop, and the MSG MORE early break skips that check. The record survives to the next syscall with the frag count it already had, and tls append frag() does not check either, so with TLS TX ZEROCOPY RO every splice(SPLICE F MORE) of a byte or two adds a non-coalescing pipe page and num frags walks off the end of tls record info.frags[MAX SKB FRAGS]. Once the record is pushed, tls push record() runs the same index over sg tx data[MAX SKB FRAGS] and the sg set page() writes land on the destruct work that follows it, which the workqueue then calls.
The byte limit is fine because copy drops to 0 and the loop falls through to the same check; the frag count has no such feedback.
Push the record rather than keep a full one open, which is what a plain TCP socket does - tcp sendmsg locked() uses tcp mark push() and new segment in both the copy and the MSG SPLICE PAGES paths, and tls sw already sets full record when the sk msg ring fills up, MSG MORE or not.
BUG: KASAN: slab-out-of-bounds in tls append frag ( net/tls/tls device.c:269) Write of size 8 at addr ffff8881104d1530 by task tls oob/450
CPU: 2 UID: 0 PID: 450 Comm: tls oob Not tainted 7.2.0-rc7+ #329 PREEMPT Call Trace: dump stack lvl (lib/dump stack.c:94 lib/dump stack.c:120) print report (mm/kasan/report.c:378 mm/kasan/report.c:482) kasan report (mm/kasan/report.c:595) tls append frag (net/tls/tls device.c:269) tls push data (net/tls/tls device.c:518) tls device sendmsg (net/tls/tls device.c:583) inet sendmsg (net/ipv4/af inet.c:865) sock sendmsg (net/socket.c:775 net/socket.c:790 net/socket.c:813) splice to socket (fs/splice.c:884) do splice (fs/splice.c:936 fs/splice.c:1349) do splice (fs/splice.c:1431) x64 sys splice (fs/splice.c:1634 fs/splice.c:1616) do syscall 64 (arch/x86/entry/syscall 64.c:63 arch/x86/entry/syscall 64.c:94) entry SYSCALL 64 after hwframe (arch/x86/entry/entry 64.S:121)
and, once the record is pushed:
UBSAN: array-index-out-of-bounds in net/tls/tls device.c:300:24 index 18 is out of range for type 'skb frag t [17]' UBSAN: array-index-out-of-bounds in net/tls/tls device.c:301:41 index 18 is out of range for type 'scatterlist [17]' UBSAN: array-index-out-of-bounds in net/tls/tls device.c:302:39 index 18 is out of range for type 'scatterlist [17]' UBSAN: array-index-out-of-bounds in net/tls/tls device.c:307:38 index 26 is out of range for type 'scatterlist [17]'
kernel tried to execute NX-protected page - exploit attempt? (uid: 0) BUG: unable to handle page fault for address: ffffea000411a680 #PF: supervisor instruction fetch in kernel mode #PF: error code(0x0011) - permissions violation Oops: Oops: 0011 [#1] SMP KASAN PTI Workqueue: ktls device destruct 0xffffea000411a680 RIP: 0010:0xffffea000411a680 Call Trace: worker thread (kernel/workqueue.c:3405 kernel/workqueue.c:3486) kthread (kernel/kthread.c:436) ret from fork (arch/x86/kernel/process.c:158) ret from fork asm (arch/x86/entry/entry 64.S:245)
Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-80852

Affected Products

Linux