CVE-2026-80852 in Linux情報

要約

〜によって VulDB • 2026年09月04日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

tls: device: tls_append_frag()における配列外書き込みの修正

syzkallerおよびnetdevsim TLSオフロードエミュレーション上で実行されるローカルのsyzybotインスタンスによって発見されました。tls_device.cは通常、オフロード機能を実装したNICを搭載したマシンでのみ到達可能です。

tls_push_data()関数は、ループの下部でオープン中のレコードにさらにフラグメントを追加する余地があるかどうかのみをチェックしており、MSG_MOREによる早期脱出がそのチェックをスキップします。その結果、レコードは既存のフラグメントカウントのまま次のシステムコールへと引き継がれ、tls_append_frag()も同様のチェックを行わないため、TLS_TX_ZEROCOPY_RO設定下では1〜2バイトのsplice(SPLICE_F_MORE)操作ごとに非結合パイプページが追加され、num_frags変数がtls_record_info.frags[MAX_SKB_FRAGS]の配列外へアクセスしてしまいます。レコードがプッシュされると、tls_push_record()はsg_tx_data[MAX_SKB_FRAGS]に対して同様のインデックス操作を行い、sg_set_page()による書き込みがその直後に配置されたdestruct_work構造体を上書きし、ワークキューによってそれが呼び出されてしまいます。

バイト制限については問題ありません。copy処理で0に低下するため、ループは同じチェックへフォールスルーするからです。しかし、フラグメントカウントにはそのようなフィードバック機構がありません。

本来TCPソケットが行うようにレコードをプッシュし、フル状態のレコードを開いたままにしないのが正しい対処法です。tcp_sendmsg_locked()関数はコピーパスおよびMSG_SPLICE_PAGESパスの両方でtcp_mark_push()とnew_segmentを使用しており、tls_swもsk_msgリングが満杯になると(MSG_MOREの有無にかかわらず)full_recordフラグを設定します。

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>

そして、レコードがプッシュされた後:

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>

If you want to get best quality of vulnerability data, you may have to visit VulDB.

責任者

Linux

予約する

2026年08月26日

モデレーション

承諾済み

エントリ

VDB-398976

EPSS

0.00000

アクティビティ

非常低い

ソース

Interested in the pricing of exploits?

See the underground prices here!