CVE-2023-53559CVE-2023-53559是Linux内核ip_vti(IPv6虚拟隧道接口)模块中存在的一个高危slab-use-after-free(释放后使用)漏洞。该漏洞的CVSS 3.1评分为7.8分,严重等级为HIGH。当ip_vti设备被设置为sfb(Stochastic Fair Blue)类型的qdisc(排队规则)时,在数据包入队过程中,发送的skb(socket buffer)的cb(control buffer)字段可能会被修改。由于ip_vti设备在发送IPv6数据包时调用了xfrm_decode_session函数来解析会话信息,而该函数会访问IP6CB(skb)->nhoff字段,但该字段在传输路径上并未被正确初始化,从而导致slab-use-after-free漏洞的发生。此漏洞允许具有低权限的本地攻击者通过特定操作触发内核内存的非法访问,可能导致系统崩溃、内核信息泄露,甚至权限提升。漏洞的利用需要本地访问权限和低权限认证,但无需用户交互,成功利用后会对系统的机密性、完整性和可用性造成严重影响。
该漏洞的根本原因在于ip_vti模块在发送IPv6数据包时未正确处理skb的cb(control buffer)字段。具体技术细节如下:
1. ip_vti是Linux内核中用于实现IPv6虚拟隧道接口的模块,通过xfrm(IPsec变换框架)实现加密通信。
2. 当ip_vti设备配置为sfb(Stochastic Fair Blue)类型的qdisc时,数据包在入队过程中会被sfb调度器修改其cb字段的内容。
3. 随后,当ip_vti设备发送IPv6数据包时,会调用xfrm_decode_session函数来解码会话信息,该函数会读取IP6CB(skb)->nhoff字段。
4. 问题在于xfrm_decode_session函数最初仅为接收路径(receive path)设计,在传输路径上IP6CB(skb)->nhoff字段并未被正确设置。如果该字段指向的内存已被释放或被sfb调度器修改为无效值,就会触发slab-use-after-free漏洞。
5. 修复方案是在发送数据包之前将skb的cb字段清零,避免使用未初始化的或已被修改的cb数据。
该漏洞的利用需要本地访问权限,攻击者可以通过创建ip_vti隧道接口、配置sfb qdisc,然后发送特制的IPv6数据包来触发漏洞。成功利用可能导致内核panic(系统崩溃)、敏感信息泄露或权限提升。