bpf:在 bpf_iter_bits_destroy() 中释放动态分配的位(CVE-2024-50254)
CVE编号
CVE-2024-50254利用情况
暂无补丁情况
N/A披露时间
2024-11-09漏洞描述
在Linux内核中,已经解决了以下漏洞:bpf模块中的bpf_iter_bits_destroy函数在释放动态分配的位时存在问题。该函数使用"kit->nr_bits <= 64"来检查位是否动态分配。然而,这个检查是不正确的,可能会导致kmemleak的出现,如下方所示:未引用的对象0xffff88812628c8c0(大小32):进程名为"swapper/0",进程ID为1,jiffies为4294727320前32字节的十六进制转储:b0 c1 55 f5 81 88 ff ff f0 f0 f0 f0 f0 f0 f0 f0 ...U...........f0 f0 f0 f0 f0 f0 f0 f0 00 00 00 00 00 00 00 00 ...回溯(crc 781e32cc):...(此处省略具体函数地址)这是因为当所有位都被迭代后,bpf_iter_bits_next()会将nr_bits设置为零。这会导致在bpf_iter_bits_destroy()中无法正确判断位是否动态分配,从而可能引发内存泄漏问题。修复这个问题的方法是,在bpf_iter_bits_next()函数的迭代完成时,将kit->bit设置为kit->nr_bits而不是将kit->nr_bits设置为零。此外,使用"!nr_bits || bits >= nr_bits"来判断迭代是否完成,仍然使用"nr_bits > 64"来判断位是否动态分配。"!nr_bits"的检查是必要的,因为在bpf_iter_bits_new()可能在设置kit->nr_bits之前失败,这个条件将在早期停止迭代,而不是访问清零或已释放的kit->bits。考虑到kit->bits的初始值为-1且kit->nr_bits的类型为无符号整数,将kit->nr_bits的类型更改为int。潜在的溢出问题将在下一个补丁中处理。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接 |
|
---|---|
https://git.kernel.org/stable/c/101ccfbabf4738041273ce64e2b116cf440dea13 | |
https://git.kernel.org/stable/c/9cee266fafaf79fd465314546f637f9a3c215830 |
受影响软件情况
# | 类型 | 厂商 | 产品 | 版本 | 影响面 | ||||
1 | |||||||||
---|---|---|---|---|---|---|---|---|---|
运行在以下环境 | |||||||||
系统 | debian_11 | linux | * | Up to (excluding) 5.10.226-1 | |||||
运行在以下环境 | |||||||||
系统 | debian_12 | linux | * | Up to (excluding) 6.1.115-1 |
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

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