IPBUF安全漏洞报告
English
CVE-2026-40975 CVSS 4.8 中危

CVE-2026-40975 Spring Boot弱随机数生成漏洞

披露日期: 2026-04-28

漏洞信息

漏洞编号
CVE-2026-40975
漏洞类型
信息泄露
CVSS评分
4.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Spring Boot

相关标签

Spring Boot信息泄露弱随机数CVE-2026-40975

漏洞概述

Spring Boot特定版本中的随机属性源存在安全缺陷,使用${random.value}、${random.int}和${random.long}生成的值不适合用作安全密钥。这些数值基于强度不足的伪随机数生成器(PRNG),具有可预测性。如果开发者将此类随机值用于生成敏感信息的凭证或密钥,攻击者可能通过预测算法推算出这些秘密值,从而导致信息泄露。受影响的版本范围较广,包括Spring Boot 2.7.x至4.0.x的多个旧版本,官方已在后续补丁版本中修复此问题。

技术细节

该漏洞的根本原因在于Spring Boot的`RandomValuePropertySource`类在处理`${random.value}`等属性时,底层依赖于`java.util.Random`类。`java.util.Random`是一个线性同余生成器(LCG),并非密码学安全的伪随机数生成器(CSPRNG)。其算法输出的随机序列在统计学上是可预测的,尤其是当攻击者能够获取部分随机值或知晓生成时间(通常基于系统时间戳作为种子)时,可以通过有限的计算量还原出随机数生成的状态,从而准确预测后续生成的随机数值。若应用程序错误地使用这些属性来生成JWT签名密钥、数据库密码或API Token,攻击者无需任何认证即可通过网络远程预测这些凭证,进而绕过身份验证或窃取敏感数据。值得注意的是,`${random.uuid}`的实现机制不同,不受此漏洞影响。

攻击链分析

STEP 1
侦察
攻击者识别目标系统使用的是存在漏洞的Spring Boot版本(如4.0.0至4.0.5)。
STEP 2
分析
攻击者确认应用程序在配置或代码中使用了${random.value}、${random.int}或${random.long}来生成安全密钥。
STEP 3
预测
攻击者观察应用启动时间或获取部分生成的随机值,利用java.util.Random的算法弱点推算出种子或预测当前的随机密钥。
STEP 4
利用
攻击者使用预测出的密钥进行签名伪造、身份验证绕过或访问受保护的敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; @SpringBootApplication public class VulnerableApp { public static void main(String[] args) { // Start the application with a vulnerable Spring Boot version SpringApplication.run(VulnerableApp.class, args); } @Bean public String demonstrateWeakRandom(Environment env) { // In vulnerable versions, this uses java.util.Random which is predictable String weakSecret = env.getProperty("random.value"); // Attackers can predict this value if they know the startup time System.out.println("Predictable Secret: " + weakSecret); return weakSecret; } }

影响范围

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

防御指南

临时缓解措施
若无法立即升级,应全面检查应用程序的配置文件和代码逻辑,确保未将Spring Boot的随机属性用于任何安全相关的场景(如密钥、密码或会话ID生成)。建议手动替换这些动态生成的随机值为强密码,并通过环境变量或安全的配置中心注入。

参考链接

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