#今天又看了啥 #security
io_uring ZCRX Freelist LPE — 从 u32 到 root -- ze3tar
https://ze3tar.github.io/post-zcrx.html
漏洞概要
- Linux 6.15~6.19 中 io_uring 新子系统 ZCRX(零拷贝收包)存在 OOB(越界)堆写入漏洞
- 漏洞位置:
- 写入值:niov 索引,范围 [0, N-1] —— 看似没用,实则致命
触发条件
- 需要 CAP_NET_ADMIN 权限
- 需要支持 ZCRX 的物理网卡(Mellanox ConnectX-6+、Intel E800、NFP 等)
- 触发方式:网卡 down(
一句话:io_uring 新版 ZCRX 没做边界检查,网卡 down 时重复入栈写穿 slab,一个 0~31 的小整数一路打到 root。 🔥
需要高端网卡,散了散了
io_uring ZCRX Freelist LPE — 从 u32 到 root -- ze3tar
https://ze3tar.github.io/post-zcrx.html
漏洞概要
- Linux 6.15~6.19 中 io_uring 新子系统 ZCRX(零拷贝收包)存在 OOB(越界)堆写入漏洞
- 漏洞位置:
freelist[] 管理空槽索引时,free_count 无上界检查,导致写入 freelist[num_niovs](超尾 4 字节)- 写入值:niov 索引,范围 [0, N-1] —— 看似没用,实则致命
触发条件
- 需要 CAP_NET_ADMIN 权限
- 需要支持 ZCRX 的物理网卡(Mellanox ConnectX-6+、Intel E800、NFP 等)
- 触发方式:网卡 down(
SIOCSIFFLAGS ~IFF_UP)→ page_pool_destroy() → 两条路径(ptr_ring drain + scrub loop)重复入栈导致 free_count 溢出一句话:io_uring 新版 ZCRX 没做边界检查,网卡 down 时重复入栈写穿 slab,一个 0~31 的小整数一路打到 root。 🔥
需要高端网卡,散了散了