CVE-2026-31683Linux内核中的batman-adv模块存在一个高危安全漏洞,该漏洞源于在运行时切换OGM(起源消息)聚合状态时的处理逻辑缺陷。具体而言,当现有转发数据包仅分配了`packet_len`字节的空间,而后续数据包仍被选中进行聚合时,若目标skb的尾部空间无法容纳新数据包,追加操作将触发`skb_put`溢出。本地攻击者可利用此漏洞造成内核内存损坏或系统崩溃,进而可能获得更高的系统权限。
该漏洞位于Linux内核的batman-adv驱动中,涉及网络数据包的聚合逻辑。batman-adv协议使用OGM来交换节点状态信息。漏洞核心在于当系统在运行时动态开启或修改OGM聚合功能时,代码未正确验证目标skb(socket buffer)的剩余尾部空间(tailroom)。
在正常流程中,向skb追加数据前应确保有足够的空间。然而,在受影响的版本中,如果当前skb仅根据初始数据长度分配了内存,后续尝试聚合新数据包且未检查剩余空间,直接调用`skb_put()`函数将导致向缓冲区末尾写入越界数据。由于这是内核空间的操作,越界写入可能破坏相邻的内核数据结构。攻击者利用此漏洞(攻击向量为本地,权限要求低)可以导致系统崩溃(拒绝服务)或通过精心构造的数据覆盖函数指针等方式实现本地权限提升。