CVE-2025-71085Linux内核中存在一个本地拒绝服务漏洞,该漏洞源于calipso_skbuff_setattr()函数中的整数溢出问题。当处理IPv6数据包的CALIPSO选项时,函数可能向skb_cow()传递超过INT_MAX的头部空间值,导致__skb_cow()中的隐式整数转换产生负数delta值,最终在pskb_expand_head()中触发BUG_ON断言,造成内核崩溃。本地攻击者可通过构造特制的IPv6数据包利用此漏洞,导致系统拒绝服务。
漏洞位于net/core/skbuff.c的pskb_expand_head()函数第2232行,BUG_ON(nhead < 0)检查失败。根本原因在于__skb_cow()中的隐式整数转换:当headroom参数超过INT_MAX时,比较操作(headroom > skb_headroom(skb))虽然通过,但delta = headroom - skb_headroom(skb)计算结果为负数。这个负值被传递给pskb_expand_head(),导致内存分配失败并触发内核bug。攻击者可通过netlabelctl工具配置CALIPSO映射,然后发送包含特制CMSG头部选项的IPv6数据包来触发漏洞,导致系统崩溃。