sched:sch_cake:修复批量流量会计逻辑以实现主机公平性(CVE-2024-46828)
CVE编号
CVE-2024-46828利用情况
暂无补丁情况
N/A披露时间
2024-09-27漏洞描述
在Linux内核中,已经解决了一个漏洞,具体描述如下:关于调度器(sched)中的sch_cake模块,修复了批量流计费逻辑的缺陷以保证主机公平性。在sch_cake中,我们在主机公平模式下跟踪每个主机的活动批量流的计数。这个计数被用作遍历流时的轮询权重。每当流状态发生变化时,活动批量流的计数都会更新。这个问题与哈希碰撞处理有特殊的交互:当发生哈希碰撞(在集合关联哈希之后)时,哈希桶的状态会简单地更新以匹配碰撞的新数据包。如果启用了主机公平性,这也意味着为流分配新的主机状态。因此,分配给流的主机的批量流计数器在分配新状态之前会减少(并且可能不属于同一主机的计数器会再次增加)。当初引入此代码时,主机公平模式是默认启用的,因此减少是无条件的。当引入配置标志时,增量变为有条件,但减量仍然是无条件的。这自然可能导致一个虚假的减少(以及相关的环绕到U16_MAX)。据我所知,当禁用主机公平性时,减少和环绕会在发生哈希碰撞时立即发生(这在集合关联哈希本身并不常见)。然而,在大多数情况下,这是无害的,因为这个值只在启用主机公平模式时使用。因此,为了触发数组溢出,sch_cake首先必须在禁用主机公平性的情况下配置,并且在以这种模式运行时,必须发生哈希碰撞导致溢出。然后,qdisc必须重新配置以启用主机公平性,这会导致数组越界,因为环绕的值被保留并用作数组索引。似乎syzbot设法触发了这一点,这在某种程度上是相当令人印象深刻的。此补丁通过引入与增量相同的条件检查来修复这个问题。原始错误出现在蛋糕的上游之前,但修复标签中列出的提交触及了那段代码,这意味着在此之前的补丁不适用。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论