CVE-2026-80852 in Linuxthông tin

Tóm tắt

Bởi VulDB • 04/09/2026

Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:

tls: device: sửa lỗi ghi vượt ra ngoài vùng nhớ trong tls_append_frag()

Lỗ hổng này được phát hiện bằng syzkaller và một instance local của syzbot chạy trên bản mô phỏng TLS offload netdevsim; tls_device.c nói chung chỉ có thể truy cập được trên máy chủ có card mạng (NIC) hỗ trợ tính năng offload.

tls_push_data() chỉ kiểm tra xem bản ghi mở còn chỗ cho frag tiếp theo ở cuối vòng lặp hay không, và lệnh break sớm MSG_MORE bỏ qua kiểm tra đó. Bản ghi vẫn tồn tại sang syscall tiếp theo với số lượng frag hiện có, và tls_append_frag() cũng không thực hiện kiểm tra nào; do đó, với TLS_TX_ZEROCOPY_RO, mỗi lần splice(SPLICE_F_MORE) một vài byte sẽ thêm vào một trang pipe không được hợp nhất (non-coalescing), khiến num_frags vượt quá giới hạn của tls_record_info.frags[MAX_SKB_FRAGS]. Khi bản ghi được đẩy ra, tls_push_record() chạy cùng chỉ số đó trên sg_tx_data[MAX_SKB_FRAGS] và các lệnh viết từ sg_set_page() rơi vào vùng nhớ destruct_work nằm ngay sau nó, mà workqueue sau đó sẽ gọi thực thi.

Giới hạn byte là ổn vì copy giảm xuống 0 và vòng lặp tiếp tục đến cùng kiểm tra; tuy nhiên, số lượng frag không có cơ chế phản hồi tương tự.

Hãy đẩy bản ghi ra thay vì giữ một bản ghi đầy ở trạng thái mở, đây là cách hoạt động của socket TCP thông thường - tcp_sendmsg_locked() sử dụng tcp_mark_push() và new_segment trong cả hai đường dẫn copy và MSG_SPLICE_PAGES, còn tls_sw đã đặt full_record khi vòng lặp sk_msg bị lấp đầy, bất kể có MSG_MORE hay không.

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: <TASK> 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) </TASK>

và, sau khi bản ghi được đẩy ra:

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: <TASK> 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) </TASK>

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

chịu trách nhiệm

Linux

Đặt trước

26/08/2026

Tiết lộ

04/09/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Do you know our Splunk app?

Download it now for free!