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

CVE-2026-31420 Linux内核MRP零间隔OOM漏洞

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

漏洞信息

漏洞编号
CVE-2026-31420
漏洞类型
拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务OOMMRPNetlink本地漏洞

漏洞概述

Linux内核中的bridge mrp模块存在安全漏洞,源于未对用户通过netlink提供的测试间隔参数进行有效验证。攻击者可利用该漏洞将间隔设置为0,导致内核工作队列陷入无限循环,瞬间耗尽系统内存并触发OOM死锁,造成本地拒绝服务。

技术细节

该漏洞位于Linux内核网络子系统的桥接MRP(介质冗余协议)处理逻辑中。函数`br_mrp_start_test`和`br_mrp_start_in_test`在处理来自Netlink的属性`IFLA_BRIDGE_MRP_START_TEST_INTERVAL`时,缺少`NLA_POLICY_MIN`最小值校验。当攻击者将interval参数设为0时,`usecs_to_jiffies(0)`返回0,导致延时工作队列(`br_mrp_test_work_expired`)在回调执行后以0延迟立即重新调度。这会在`system_percpu_wq`上创建一个紧密循环,以最大速率分配内存并发送MRP测试帧,导致系统内存迅速耗尽,进而引发OOM(内存溢出)和内核恐慌。

攻击链分析

STEP 1
步骤1
攻击者获得本地低权限访问权限。
STEP 2
步骤2
攻击者创建Netlink套接字连接到内核网络子系统。
STEP 3
步骤3
攻击者构造恶意Netlink消息,将MRP测试间隔属性(IFLA_BRIDGE_MRP_START_TEST_INTERVAL)设置为0。
STEP 4
步骤4
内核接收消息,由于缺少验证,直接将0值传递给`usecs_to_jiffies`。
STEP 5
步骤5
内核工作队列以0延迟无限重调度,消耗所有可用内存。
STEP 6
步骤6
系统触发OOM Killer,导致内核恐慌或系统完全拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-31420 # This script demonstrates triggering the vulnerability by setting the MRP test interval to 0. # Requires a configured bridge interface and MRP support. import socket import struct import ctypes # Define Netlink constants NETLINK_ROUTE = 0 IFLA_BRIDGE_MRP_START_TEST_INTERVAL = 50 # Hypothetical attribute ID based on context # Create a Netlink socket sock = socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, NETLINK_ROUTE) sock.bind((0, 0)) # Construct a netlink message to set MRP interval to 0 # Structure: nlmsghdr + ifinfomsg + attributes # This is a simplified representation of the exploit logic. def send_exploit(): # Payload format: [Netlink Header] [Interface Info] [MRP Attribute: Interval=0] # Setting interval to 0 bypasses the missing NLA_POLICY_MIN check interval = 0 print(f"[*] Sending payload with IFLA_BRIDGE_MRP_START_TEST_INTERVAL = {interval}") # In a real scenario, specific struct packing for rtattr is required # payload = pack_netlink_message(...) # sock.send(payload) print("[+] Exploit sent. If vulnerable, kernel OOM should occur shortly.") if __name__ == "__main__": send_exploit()

影响范围

Linux Kernel (修复前版本)

防御指南

临时缓解措施
限制非特权用户对Netlink套接字的访问权限,或在未使用MRP功能的情况下禁用内核中的桥接MRP模块以降低攻击面。

参考链接

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