目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-90015— Linux内核 xhci驱动内存管理漏洞

一分钟漏洞结论

影响对象
Linux Linux
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

在 Linux 内核中,已修复以下漏洞: xhci:修复跨多个环段(ring segment)的 TD 丢失 bounce buffer(弹跳缓冲区)的问题 当 TD(传输描述符,Transfer Descriptor)到达一个 link TRB(链接 TRB)时,如果其数据未按端点的 对齐, 会将无法对齐的尾部数据通过承载该 link TRB 的环段的 bounce buffer 进行暂存。随后, 会解除映射(unmap)该缓冲区,并针对 IN 传输,将数据复制回 URB 的缓冲区。 在入队(enqueue)路径

AI 预测 5.5 利用难度: 困难 EPSS 0.21% · P10

可能的 ATT&CK 技术 1 AI

T1499 · Endpoint Denial of Service

影响版本矩阵 18

厂商产品 版本范围状态
Linux Linux f9c589e142d04b8a19eb382162f804d17102b5ed< c8124b28f12dbdd126118e63d0ebf8093a01fb81 affected
f9c589e142d04b8a19eb382162f804d17102b5ed< e04d5304a248e5d2a7f4faa87541644bdd320cfb affected
f9c589e142d04b8a19eb382162f804d17102b5ed< a1629dfb011446d02905778f6df19f14c5f4f3b3 affected
f9c589e142d04b8a19eb382162f804d17102b5ed< 43239fc6dfb62c50ae1b9c0e82bac0f8cd2e285c affected
f9c589e142d04b8a19eb382162f804d17102b5ed< 3c9a2b5a4f1183696f02ac280ced1d34afb409b1 affected
f9c589e142d04b8a19eb382162f804d17102b5ed< efaab8938fb92979be6df359f7d1a43fb7e4717d affected
f9c589e142d04b8a19eb382162f804d17102b5ed< 7236bbd2cb7d9fc0eda896bbd34790341e2a4377 affected
f9c589e142d04b8a19eb382162f804d17102b5ed< ff44dfb03a293bf30e31f98772a1dd316a6071d1 affected
… +10 条更多
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-90015 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
xhci: fix lost bounce buffers on TDs spanning several ring segments
来源: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: xhci: fix lost bounce buffers on TDs spanning several ring segments When a TD reaches a link TRB with data that is not aligned to the endpoint's wMaxPacketSize, xhci_align_td() stages the unalignable tail through the bounce buffer of the ring segment holding that link TRB. xhci_unmap_td_bounce_buffer() later unmaps it and, for IN transfers, copies the data back into the URB's buffer. The enqueue path records the segment that was bounced in td->bounce_seg, under the assumption that a TD never spans more than two ring segments. That assumption does not hold: a TD large enough to span three or more segments crosses several link TRBs and can be bounced at each of them. Only the last one survives in td->bounce_seg, so every earlier bounce buffer is neither copied back nor DMA unmapped. The URB still completes with actual_length equal to the requested length and no error, so the transfer looks successful while a wMaxPacketSize sized hole in the destination buffer silently keeps its previous contents. It also leaks a DMA mapping per dropped bounce. Any sufficiently large and fragmented bulk transfer can hit this. It was found with a USB mass storage device behind xHCI backing a dm-verity target with 512 byte hash blocks, where the stale data is detected rather than silently consumed. The device enumerates as SuperSpeed, so wMaxPacketSize is 1024, while dm-bufio issues one 512 byte bio per hash block. verity_prefetch_io() makes the block layer merge hundreds of them into a single request of up to 512 scatterlist entries of 512 bytes each. At 256 TRBs per ring segment such a TD spans three segments, and every segment boundary falls on an odd multiple of 512, i.e. unaligned to wMaxPacketSize. dm-bufio then caches a hash block holding stale data and dm-verity declares the metadata block corrupted: device-mapper: verity: 8:2: metadata block 10850 is corrupted A reproducer running this under qemu is available at https://github.com/baloo/xhci-verity The bounce state (bounce_buf, bounce_dma, bounce_len, bounce_offs) already lives on the ring segment, so there is nothing extra to track. Keep recording the last bounced segment in td->bounce_seg and, on completion, walk the segments from td->start_seg up to it, unmapping every segment that still has a pending bounce. Stopping at td->bounce_seg rather than td->end_seg matters: a bounce implies the TD continues past that segment's link TRB, so bounce_seg is always strictly before end_seg, and a later TD may already have started in end_seg and been bounced there. Walking that far would copy a foreign bounce buffer into this URB and unmap it twice. It also keeps the walk correct if a TD ever wraps the whole ring so that end_seg == start_seg. [mn: Add ring->num_segs check to prevent unlikely infinite for loop.]
来源: CVE Program / CVE List V5
CVSS Information
N/A
来源: CVE Program / CVE List V5
Vulnerability Type
N/A
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
Linux Linux f9c589e142d04b8a19eb382162f804d17102b5ed ~ c8124b28f12dbdd126118e63d0ebf8093a01fb81 -
Linux Linux 4.8 -

二、漏洞 CVE-2026-90015 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-90015 的情报信息

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

CVE-2026-90015 其他参考 (8)

同批安全公告 · Linux · 2026-09-16 · 共 276 条

CVE-2026-90048 9.8 CRITICAL Linux内核NTFS3文件系统越界写漏洞
CVE-2026-90012 9.8 CRITICAL SPI DMA映射所有权修复
CVE-2026-89970 9.8 CRITICAL NVM Target SQ拆除时超时工作未同步
CVE-2026-89857 9.8 CRITICAL QLogic qla2xxx NVMe LS拒绝竞态条件漏洞
CVE-2026-89969 9.8 CRITICAL Linux内核 nvmet-tcp 越界写入漏洞
CVE-2026-89847 9.8 CRITICAL qla2xxx SCSI驱动异步IOCB超时双重完成漏洞
CVE-2026-89972 9.8 CRITICAL NVMe驱动错误路径SRCU宽限期缺失漏洞
CVE-2026-89990 9.8 CRITICAL Ceph ceph_mds_check_access 互斥锁缺失漏洞
CVE-2026-90036 9.8 CRITICAL Linux NFSd 阻塞锁收割时释放后使用漏洞
CVE-2026-90038 9.8 CRITICAL Linux内核NFSD导出撤销后使用漏洞
CVE-2026-90037 9.8 CRITICAL Linux内核NFSD close_lru释放后使用漏洞
CVE-2026-89788 9.8 CRITICAL Linux kernel ksmbd 释放后使用漏洞
CVE-2026-89783 9.8 CRITICAL Linux内核 xfrm6 越界写入漏洞
CVE-2026-90042 9.8 CRITICAL Ceph 虚拟内存分配缓冲区文件名解密漏洞
CVE-2026-89778 9.8 CRITICAL isofs 空 zisofs 块页面数组越界访问漏洞
CVE-2026-89916 9.3 CRITICAL KVM arm64 VNCR失效重试漏洞
CVE-2026-89915 9.3 CRITICAL KVM arm64 移除虚拟机级 VNCR 映射计数器
CVE-2026-90049 9.3 CRITICAL 内核网络子系统中skb_zerocopy处理中的缺陷
CVE-2026-89775 9.3 CRITICAL KVM arm64 VNCR TLB大小计算漏洞
CVE-2026-89918 9.3 CRITICAL KVM arm64 TLBI失效处理漏洞

显示前 20 条,共 276 条。 查看全部 &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-90015

暂无评论


发表评论