mlxsw:spectrum_acl_erp:修复对象嵌套警告(CVE-2024-43880)
CVE编号
CVE-2024-43880利用情况
暂无补丁情况
N/A披露时间
2024-08-21漏洞描述
在Linux内核中,解决了以下漏洞:问题描述:在mlxsw设备驱动中,使用objagg库进行掩码聚合时,由于比较对象时忽略了A-TCAM和C-TCAM的指示,可能导致创建嵌套对象,而该库不支持嵌套对象,从而触发警告。解决方案:移除驱动和库中的对象比较函数,使得查找操作只返回精确匹配的结果,从而解决了嵌套对象的问题。具体细节:1. 在mlxsw设备中,ACL(访问控制列表)可以位于算法型TCAM(A-TCAM)或普通电路TCAM(C-TCAM)中。A-TCAM可以包含更多的ACL(即tc过滤器),但每个区域(即tc链)中的掩码数量有限。2. 为了缓解上述限制,设备允许过滤器在掩码仅相差最多8个连续位时共享单个掩码。例如,dst_ip/25可以使用dst_ip/24表示,只需1位差异。3. 驱动使用objagg库执行掩码聚合,将过滤器按照其掩码以及是否插入A-TCAM或C-TCAM进行分类,因为不同TCAM中的过滤器不能共享掩码。4. 创建的对象集依赖于过滤器的插入顺序,并不一定是最优的。因此,驱动会定期请求库计算更优化的集合(称为“提示”),方法是查看所有现有对象。5. 当库询问驱动是否可以聚合两个对象时,驱动只比较提供的掩码,并忽略A-TCAM/C-TCAM的指示。这一做法的目的是尽可能将更多过滤器移动到A-TCAM。然而,这也可能导致相同掩码的两个对象被错误地视为可聚合,这在有意将其中一个放在C-TCAM以避免A-TCAM中的冲突时是不应发生的。6. 这个问题可能会导致递归创建嵌套对象,而库不支持这种情况,从而触发警告并可能导致系统崩溃。7. 解决方案是移除驱动和库中的对象比较函数,使得查找操作只返回精确匹配的结果。这样,递归创建嵌套对象的情况就不会发生。注意:目前提示的实用性受到限制,因为它们包括C-TCAM的指示,并代表实际上无法发生的聚合。这个问题将在net-next中得到解决。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

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