Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-38166— bpf: fix ktls panic with sockmap

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于未正确处理KTLS,可能导致内核崩溃。

CVSS 7.8 · High EPSS 0.20% · P9

Possible ATT&CK Techniques 1 AI

T1068 · Exploitation for Privilege Escalation

Affected Version Matrix 12

VendorProduct Version RangeStatus
Linux Linux d3b18ad31f93d0b6bae105c679018a1ba7daa9ca< 328cac3f9f8ae394748485e769a527518a9137c8 affected
d3b18ad31f93d0b6bae105c679018a1ba7daa9ca< 2e36a81d388ec9c3f78b6223f7eda2088cd40adb affected
d3b18ad31f93d0b6bae105c679018a1ba7daa9ca< 57fbbe29e86042bbaa31c1a30d2afa16c427e3f7 affected
d3b18ad31f93d0b6bae105c679018a1ba7daa9ca< 603943f022a7fe5cc83ca7005faf34798fb7853f affected
d3b18ad31f93d0b6bae105c679018a1ba7daa9ca< 54a3ecaeeeae8176da8badbd7d72af1017032c39 affected
4.20 affected
< 4.20 unaffected
6.1.142≤ 6.1.* unaffected
… +4 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2025-38166

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
bpf: fix ktls panic with sockmap
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: bpf: fix ktls panic with sockmap [ 2172.936997] ------------[ cut here ]------------ [ 2172.936999] kernel BUG at lib/iov_iter.c:629! ...... [ 2172.944996] PKRU: 55555554 [ 2172.945155] Call Trace: [ 2172.945299] <TASK> [ 2172.945428] ? die+0x36/0x90 [ 2172.945601] ? do_trap+0xdd/0x100 [ 2172.945795] ? iov_iter_revert+0x178/0x180 [ 2172.946031] ? iov_iter_revert+0x178/0x180 [ 2172.946267] ? do_error_trap+0x7d/0x110 [ 2172.946499] ? iov_iter_revert+0x178/0x180 [ 2172.946736] ? exc_invalid_op+0x50/0x70 [ 2172.946961] ? iov_iter_revert+0x178/0x180 [ 2172.947197] ? asm_exc_invalid_op+0x1a/0x20 [ 2172.947446] ? iov_iter_revert+0x178/0x180 [ 2172.947683] ? iov_iter_revert+0x5c/0x180 [ 2172.947913] tls_sw_sendmsg_locked.isra.0+0x794/0x840 [ 2172.948206] tls_sw_sendmsg+0x52/0x80 [ 2172.948420] ? inet_sendmsg+0x1f/0x70 [ 2172.948634] __sys_sendto+0x1cd/0x200 [ 2172.948848] ? find_held_lock+0x2b/0x80 [ 2172.949072] ? syscall_trace_enter+0x140/0x270 [ 2172.949330] ? __lock_release.isra.0+0x5e/0x170 [ 2172.949595] ? find_held_lock+0x2b/0x80 [ 2172.949817] ? syscall_trace_enter+0x140/0x270 [ 2172.950211] ? lockdep_hardirqs_on_prepare+0xda/0x190 [ 2172.950632] ? ktime_get_coarse_real_ts64+0xc2/0xd0 [ 2172.951036] __x64_sys_sendto+0x24/0x30 [ 2172.951382] do_syscall_64+0x90/0x170 ...... After calling bpf_exec_tx_verdict(), the size of msg_pl->sg may increase, e.g., when the BPF program executes bpf_msg_push_data(). If the BPF program sets cork_bytes and sg.size is smaller than cork_bytes, it will return -ENOSPC and attempt to roll back to the non-zero copy logic. However, during rollback, msg->msg_iter is reset, but since msg_pl->sg.size has been increased, subsequent executions will exceed the actual size of msg_iter. ''' iov_iter_revert(&msg->msg_iter, msg_pl->sg.size - orig_size); ''' The changes in this commit are based on the following considerations: 1. When cork_bytes is set, rolling back to non-zero copy logic is pointless and can directly go to zero-copy logic. 2. We can not calculate the correct number of bytes to revert msg_iter. Assume the original data is "abcdefgh" (8 bytes), and after 3 pushes by the BPF program, it becomes 11-byte data: "abc?de?fgh?". Then, we set cork_bytes to 6, which means the first 6 bytes have been processed, and the remaining 5 bytes "?fgh?" will be cached until the length meets the cork_bytes requirement. However, some data in "?fgh?" is not within 'sg->msg_iter' (but in msg_pl instead), especially the data "?" we pushed. So it doesn't seem as simple as just reverting through an offset of msg_iter. 3. For non-TLS sockets in tcp_bpf_sendmsg, when a "cork" situation occurs, the user-space send() doesn't return an error, and the returned length is the same as the input length parameter, even if some data is cached. Additionally, I saw that the current non-zero-copy logic for handling corking is written as: ''' line 1177 else if (ret != -EAGAIN) { if (ret == -ENOSPC) ret = 0; goto send_end; ''' So it's ok to just return 'copied' without error when a "cork" situation occurs.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于未正确处理KTLS,可能导致内核崩溃。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux d3b18ad31f93d0b6bae105c679018a1ba7daa9ca ~ 328cac3f9f8ae394748485e769a527518a9137c8 -
Linux Linux 4.20 -

II. Public POCs for CVE-2025-38166

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-38166

请登录查看更多情报信息。

Same Patch Batch · Linux · 2025-07-03 · 78 CVEs total

CVE-2025-38139 9.8 CRITICAL netfs: Fix oops in write-retry from mis-resetting the subreq iterator
CVE-2025-38123 9.8 CRITICAL net: wwan: t7xx: Fix napi rx poll issue
CVE-2025-38146 9.4 CRITICAL net: openvswitch: Fix the dead loop of MPLS parse
CVE-2025-38120 9.4 CRITICAL netfilter: nf_set_pipapo_avx2: fix initial map fill
CVE-2025-38111 7.8 HIGH net/mdiobus: Fix potential out-of-bounds read/write access
CVE-2025-38116 7.8 HIGH wifi: ath12k: fix uaf in ath12k_core_init()
CVE-2025-38108 7.8 HIGH net_sched: red: fix a race in __red_change()
CVE-2025-38102 7.8 HIGH VMCI: fix race between vmci_host_setup_notify and vmci_ctx_unset_notify
CVE-2025-38101 7.8 HIGH ring-buffer: Fix buffer locking in ring_buffer_subbuf_order_set()
CVE-2025-38098 7.8 HIGH drm/amd/display: Don't treat wb connector as physical in create_validate_stream_for_sink
CVE-2025-38097 7.8 HIGH espintcp: remove encap socket caching to avoid reference leak
CVE-2025-38095 7.8 HIGH dma-buf: insert memory barrier before updating num_fences
CVE-2025-38106 7.8 HIGH io_uring: fix use-after-free of sq->thread in __io_uring_show_fdinfo()
CVE-2025-38115 7.8 HIGH net_sched: sch_sfq: fix a potential crash on gso_skb handling
CVE-2025-38117 7.8 HIGH Bluetooth: MGMT: Protect mgmt_pending list with its own lock
CVE-2025-38118 7.8 HIGH Bluetooth: MGMT: Fix UAF on mgmt_remove_adv_monitor_complete
CVE-2025-38127 7.8 HIGH ice: fix Tx scheduler error handling in XDP callback
CVE-2025-38129 7.8 HIGH page_pool: Fix use-after-free in page_pool_recycle_in_ring
CVE-2025-38133 7.8 HIGH iio: adc: ad4851: fix ad4858 chan pointer handling
CVE-2025-38141 7.8 HIGH dm: fix dm_blk_report_zones

Showing top 20 of 78 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2025-38166

No comments yet


Leave a comment