CVE-2026-23359Linux内核BPF子系统的devmap组件存在栈溢出漏洞。函数`get_upper_ifindexes`在遍历并将上层设备索引写入数组时未进行边界检查。调用者错误地假设上层设备最大数量为`MAX_NEST_DEV`(8个),但在配置多个macvlan等场景下,实际数量可能远超该限制,导致栈越界写入,引发内核崩溃或权限提升风险。
该漏洞源于Linux内核BPF devmap模块对上层设备数量的处理不当。当使用带有`BPF_F_BROADCAST`和`BPF_F_EXCLUDE_INGRESS`标志的XDP程序进行数据包重定向时,内核会调用`get_upper_ifindexes`收集设备索引。该函数在栈上分配了固定大小(9个元素)的数组`excluded_devices`,但遍历逻辑缺乏长度校验。攻击者可通过创建超过8个macvlan接口,并在主接口上加载特定XDP程序,然后发送流量触发重定向路径。这将导致内核向栈上写入超过预设容量的数据,覆盖返回地址或局部变量,从而实现本地权限提升或拒绝服务攻击。