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

CVE-2026-31746 Linux内核s390/zcrypt内存泄漏漏洞

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

漏洞信息

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

相关标签

Linux KernelMemory LeakDoSs390zcryptLocalCVE-2026-31746

漏洞概述

Linux内核s390/zcrypt驱动存在内存泄漏漏洞。在CCA卡作为加速器处理明文密钥RSA请求时,因代码重构未完全移除旧分配逻辑,导致`ap_init_apmsg()`分配的内存无法释放。本地低权限攻击者可利用此漏洞持续消耗内存,造成系统拒绝服务。

技术细节

该漏洞位于Linux内核的s390架构zcrypt驱动模块中。在代码重构过程中,虽然引入了`ap_init_apmsg()`进行AP消息的内存分配,但在处理RSA加密的ME(模幂)和CRT(中国剩余定理)请求的代码路径中,旧的内存分配逻辑未被移除。这导致每次执行这些操作时,都会产生一块无法被释放的内存。攻击者利用本地低权限账户,通过持续发送特制的RSA加密请求,可触发这种内存泄漏。随着时间推移,内核可用内存将不断减少,最终可能导致系统崩溃或服务不可用(DoS)。该漏洞攻击复杂度低,无需用户交互,主要影响系统可用性。

攻击链分析

STEP 1
1. 获取访问权限
攻击者获得目标Linux系统(s390架构)的本地低权限用户访问权限。
STEP 2
2. 环境确认
确认系统启用了zcrypt模块并配置了CCA卡作为加速器。
STEP 3
3. 触发漏洞
运行恶意程序,持续向系统发送明文密钥RSA请求(特别是ME和CRT类型),触发内存分配逻辑错误。
STEP 4
4. 资源耗尽
由于分配的内存未释放,系统内核内存逐渐被耗尽。
STEP 5
5. 拒绝服务
最终导致系统内存溢出(OOM),引发系统崩溃或服务不可用。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-31746 (Conceptual) * Triggers memory leak in s390/zcrypt by sending continuous RSA requests. * Requires: s390 architecture, CCA card, zcrypt module loaded. */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> #define ZCRYPT_DEVICE "/dev/zcrypt90" int main() { int fd = -1; int iterations = 0; printf("Starting PoC for CVE-2026-31746...\n"); // Loop to trigger the memory leak indefinitely while (1) { fd = open(ZCRYPT_DEVICE, O_RDWR); if (fd < 0) { perror("Failed to open device"); sleep(1); continue; } // In a real scenario, specific IOCTLs would be used to send // clear key RSA requests (ME/CRT) to the CCA card. // This simulates the trigger. // ioctl(fd, ZCRYPT_IOCTL, ...); // The vulnerability occurs inside the kernel handling of these requests. // Simply opening/closing or sending dummy requests may not trigger it // without the correct crypto setup, but this represents the loop. close(fd); iterations++; if (iterations % 1000 == 0) { printf("[+] Sent %d requests. Check kernel memory usage (slabtop).\n", iterations); } } return 0; }

影响范围

Linux Kernel (s390架构, 修复提交 586222c37d40 之前)

防御指南

临时缓解措施
由于漏洞利用需要本地访问权限,且主要影响可用性,管理员可以通过监控内核内存使用情况(如使用slabtop工具观察kmalloc-对象的增长)来发现异常。此外,严格限制对/dev/zcrypt等设备文件的访问权限,仅允许必要的用户或服务访问,可降低被利用的风险。最根本的解决方法是安装内核更新。

参考链接

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