IPBUF安全漏洞报告
English
CVE-2026-40973 CVSS 7.0 高危

CVE-2026-40973 Spring Boot本地目录劫持漏洞

披露日期: 2026-04-28

漏洞信息

漏洞编号
CVE-2026-40973
漏洞类型
本地权限提升
CVSS评分
7.0 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Spring Boot

相关标签

Spring Boot本地权限提升RCE反序列化目录劫持

漏洞概述

该漏洞是由于Spring Boot在处理会话持久化时,未能对`ApplicationTemp`临时目录的所有权进行严格验证导致的。当应用设置`server.servlet.session.persistent`为`true`时,本地攻击者可以劫持该目录。攻击者利用此漏洞能够读取敏感的会话信息,从而劫持已认证用户的身份。此外,攻击者还可以部署恶意的对象链,在应用程序重启后触发反序列化,最终以应用程序用户的身份执行任意代码,造成严重的安全泄露。

技术细节

漏洞的核心在于Spring Boot的`ApplicationTemp`类在创建或使用临时目录时,缺少对目录所有者的有效性校验。攻击者首先需要获得宿主机上的本地低权限账户。在应用程序未运行或重启期间,攻击者利用系统默认的临时目录命名规则,提前创建或接管`ApplicationTemp`对应的目录。由于`server.servlet.session.persistent`配置开启,Spring Boot会将Session序列化数据写入该目录。攻击者随后可以替换目录中的合法Session文件,写入包含恶意Gadget Chain的序列化数据。当应用程序重启并尝试从持久化存储中恢复会话状态时,会自动反序列化这些被篡改的文件。如果环境中存在可利用的依赖库,反序列化过程将触发恶意代码执行,导致权限提升或服务器被完全控制。整个过程无需用户交互,且攻击链隐蔽性强。

攻击链分析

STEP 1
1. 获取本地访问权限
攻击者获取目标主机上的低权限用户访问权限。
STEP 2
2. 预测并劫持目录
攻击者预测Spring Boot使用的ApplicationTemp目录路径,并在应用启动前创建或接管该目录。
STEP 3
3. 植入恶意载荷
攻击者在被劫持的目录中写入包含恶意Gadget Chain的序列化文件,替换合法的会话文件。
STEP 4
4. 触发反序列化
等待应用程序重启。应用读取持久化会话并反序列化攻击者植入的数据。
STEP 5
5. 执行恶意代码
反序列化过程触发恶意代码执行,导致攻击者获取应用用户权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os import pickle # Simulating the attacker creating a malicious session file # in the predictable ApplicationTemp directory. # Path prediction (simplified for PoC) temp_dir = "/tmp/spring-boot-session-dir" malicious_file = os.path.join(temp_dir, "session-123.ser") # Ensure directory exists (controlled by attacker) os.makedirs(temp_dir, exist_ok=True) # Malicious payload (Gadget chain placeholder) class MaliciousPayload: def __reduce__(self): # Simulate command execution return (os.system, ('touch /tmp/pwned',)) # Serialize the payload with open(malicious_file, 'wb') as f: pickle.dump(MaliciousPayload(), f) print(f"[+] Malicious session file created at {malicious_file}") print("[+] Waiting for application restart to trigger deserialization...")

影响范围

Spring Boot 4.0.0 - 4.0.5
Spring Boot 3.5.0 - 3.5.13
Spring Boot 3.4.0 - 3.4.15
Spring Boot 3.3.0 - 3.3.18
Spring Boot 2.7.0 - 2.7.32

防御指南

临时缓解措施
建议立即升级至修复版本以彻底解决该漏洞。在无法立即升级的情况下,应确保操作系统级别的权限隔离,防止低权限用户操作系统临时目录。同时,评估业务需求,若非强制要求会话持久化,请立即关闭`server.servlet.session.persistent`功能以阻断攻击路径。

参考链接

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