漏洞概述
Linux 内核中的 net/sched: sch_qfq 模块存在一个空指针解引用漏洞。当在 qfq_reset 函数中对非活跃的聚合类(aggregate)执行去激活操作时,可能触发内核崩溃,导致系统拒绝服务(DoS)。该漏洞源于对共享 leaf_qdisc 的多个 qfq_class 对象状态判断不准确。
漏洞详情
- CVE 编号:CVE-2026-22976
- 漏洞类型:空指针解引用(NULL Pointer Dereference)
- CVSS 评分:暂无(NVD 尚未发布评分)
- 影响版本:包含 sch_qfq 调度模块的 Linux 内核版本(具体受影响版本需参考补丁提交记录)
影响范围
使用 QFQ(Quick Fair Queueing)流量控制调度器的 Linux 系统可能受此漏洞影响。特别是在以下场景中:
1. 设备根 qdisc 设置为 QFQ;
2. 存在临时引用的 QFQ qdisc(如通过 tc_new_tfilter 创建并待销毁的过滤器),且多个 qfq_class 共享同一个 leaf_qdisc。
风险分析
攻击者可通过构造特定的流量控制规则(如 tc filter 操作),在内核处理 qdisc 重置过程中触发空指针解引用,导致内核 oops 并引发系统崩溃。虽然目前未发现远程代码执行能力,但该漏洞可被用于本地拒绝服务攻击,影响系统可用性。
修复建议
- 建议尽快升级至包含官方修复补丁的 Linux 内核版本。相关修复已提交至主线内核,可通过以下 commit 获取:
0809c4bc06c9c961222df29f2eccfd449304056f、11bf9134613f6c71fc0ff36c5d8d33856f6ae3bb等(详见参考链接)。 - 若无法立即升级,可考虑避免在生产环境中使用 QFQ 调度器,或限制非特权用户对 tc 命令的访问权限,以降低攻击面。
参考链接
- https://git.kernel.org/stable/c/0809c4bc06c9c961222df29f2eccfd449304056f
- https://git.kernel.org/stable/c/11bf9134613f6c71fc0ff36c5d8d33856f6ae3bb
- https://git.kernel.org/stable/c/43497313d0da3e12b5cfcd97aa17bf48ee663f95
- https://git.kernel.org/stable/c/51ffd447bc37bf1a5776b85523f51d2bc69977f6
- https://git.kernel.org/stable/c/6116a83ec167d3ab1390cded854d237481f41b63
- https://git.kernel.org/stable/c/c1d73b1480235731e35c81df70b08f4714a7d095
- https://git.kernel.org/stable/c/cdb24200b043438a144df501f1ebbd926bb1a2c7
