CVE-2025-39940CVE-2025-39940是Linux内核中dm-stripe(设备映射器条带化)模块存在的一个整数溢出漏洞。该漏洞位于stripe_io_hints函数中,当配置了过大的chunk size(条带块大小)时,可能导致整数溢出问题。dm-stripe是Linux内核Device Mapper框架的一个重要组件,用于将多个物理设备组合成一个逻辑条带化卷,以提升I/O性能和数据冗余。该漏洞由内核安全团队成员发现并修复,属于本地权限提升类安全问题,需要低权限用户即可触发,但不会影响机密性和完整性,仅对系统可用性产生高影响。漏洞已在2025年10月4日公开披露,CVSS评分为5.5分,属于中危级别。该漏洞的存在可能导致dm-stripe设备在特定配置下出现异常行为,甚至引发系统崩溃或拒绝服务。内核维护者已通过添加溢出检测机制来解决此问题,确保在发生溢出时不设置limits->io_min和limits->io_opt,从而避免不可预期的I/O行为。
该漏洞的技术原理位于Linux内核dm-stripe驱动的stripe_io_hints函数中。在该函数中,当系统处理条带化设备的I/O提示信息时,会根据chunk_size(条带块大小)和stripe_count(条带数量)计算相关的I/O限制参数。具体的溢出场景是:当chunk_size过大时,与其相关的乘法运算可能导致32位整数溢出,产生错误的计算结果。攻击者或管理员在配置dm-stripe设备时,如果指定了一个超出正常范围的chunk size值,就会触发此溢出。溢出后的值可能被用于设置limits->io_min和limits->io_opt参数,导致后续I/O调度器基于错误的限制值进行决策,可能引发系统不稳定、I/O性能异常或内核崩溃。修复方案是在计算过程中添加溢出检测,当检测到溢出发生时,跳过设置limits->io_min和limits->io_opt的操作,从而保证I/O子系统不会基于错误数据进行调度决策。由于该漏洞需要本地访问权限且需要低权限用户身份,攻击者通常需要先获得系统的本地访问能力才能利用此漏洞。