CVE-2026-25726Cloudreve是一款自托管文件管理和共享系统。在4.13.0版本之前,应用程序在首次启动时使用弱伪随机数生成器(math/rand,种子为time.Now().UnixNano())生成关键安全密钥,包括secret_key和hash_id_salt。由于该生成机制具有可预测性,攻击者可通过公开API获取管理员账户创建时间,从而缩小PRNG种子的搜索范围。通过暴力破解种子(普通PC上耗时不到3小时),攻击者可预测secret_key,伪造任意用户(包括管理员)的JWT令牌,导致账户被完全接管和权限提升。该问题已在4.13.0版本中修复。
该漏洞的根本原因在于Cloudreve使用了Go语言标准库中的`math/rand`作为随机数生成器,并使用`time.Now().UnixNano()`作为种子。这种方式生成的随机数序列是完全确定且可预测的,只要种子已知,即可复现所有生成的随机数。攻击者首先通过Cloudreve的公开API端点获取管理员账户的创建时间戳,这将PRNG种子的猜测范围缩小到了纳秒级的时间窗口。随后,攻击者利用系统生成的已知`hash_id_salt`对应的hashid值作为验证条件,编写脚本对该时间窗口内的种子进行暴力破解。一旦种子被还原,攻击者即可推导出用于JWT签名的`secret_key`。由于Cloudreve依赖JWT进行身份验证,掌握`secret_key`的攻击者可以使用任意算法(如HS256)为管理员账户签发有效的令牌,进而绕过认证机制获得系统最高权限。