CVE-2026-68398
ppp:将通道释放延迟到RCU宽限期,以修复pppol2tp RX UAF
- 已发布
- 2026年8月10日
- 已更新
- 2026年8月19日
- 分配 CNA
- Linux
- 观察到的证据
- 2026年8月20日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H低 · 未来 30 天
- 百分位
- 9.5%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
在 Linux 内核中,已修复以下漏洞:ppp:将通道释放延迟到 RCU 宽限期,以修复 pppol2tp RX 释放后使用(UAF)问题 pppol2tp_recv() 在 L2TP UDP 封装软中断 RX 路径中运行: l2tp_udp_encap_recv() -> l2tp_recv_common() -> pppol2tp_recv() -> ppp_input(&po->chan) 它在 rcu_read_lock() 下运行,仅持有 l2tp_session 引用,并且对 ppp_input() 所解引用的内部 PPP 通道(struct channel,chan->ppp)不获取任何引用。pppox 套接字是 SOCK_RCU_FREE,因此 'po' 及其中嵌入的 ppp_channel 是 RCU 安全的。但内部 struct channel 是单独分配的内存,ppp_release_channel() 使用普通的 kfree() 将其释放: close(data socket) -> pppol2tp_release() -> pppox_unbind_sock() -> ppp_unregister_channel() -> ppp_release_channel() -> kfree(pch) 对于已绑定(PPPIOCGCHAN)但未附加到 ppp 单元(未执行 PPPIOCCONNECT,pch->ppp == NULL)且未桥接的通道,其拆除过程会跳过 ppp_disconnect_channel() 的 synchronize_net() 和 ppp_unbridge_channels() 的 synchronize_rcu(),因此 kfree() 没有宽限期保护。pppol2tp_recv() 中的 rcu_read_lock() 无法防止普通的 kfree(),因此一个 CPU 上正在进行的 ppp_input() 可能会解引用另一个 CPU 上刚被 close() 释放的通道。该漏洞可被非特权用户利用。 通过 call_rcu() 将通道释放延迟到 RCU 回调中,使宽限期能够隔离任何正在进行的 ppp_input()。断开连接和取消桥接的拆除路径已通过 synchronize_net()/synchronize_rcu() 进行隔离;此处 call_rcu() 起到相同作用,且不会阻塞 close() 路径。
来源
1- CVE-2026-68398漏洞利用
CVE-2026-68398 Ubuntu PPPoL2TP 释放后使用本地权限提升
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。