CVE-2025-54981CVE-2025-54981是Apache StreamPark中的一个高危安全漏洞,CVSS评分达到7.5分。该漏洞源于系统在加密敏感认证数据(包括JWT令牌)时使用了不安全的加密算法。具体而言,系统采用AES对称加密算法的ECB(Electronic Codebook)模式进行数据加密,同时使用了弱随机数生成器来生成加密密钥。AES-ECB模式是分组密码的工作模式之一,其主要特点是将明文分成固定大小的块(通常为128位),然后对每个块独立进行加密。然而,这种模式存在严重的安全缺陷:相同的明文块总是产生相同的密文块,这使得攻击者可以通过分析密文模式来推断原始数据内容。弱随机数生成器的使用进一步削弱了加密系统的安全性,因为攻击者可能能够预测或暴力破解加密密钥,从而解密所有受保护的敏感数据。JWT令牌通常包含用户的身份认证信息和权限声明,一旦被攻击者获取并解密,攻击者可以伪装成合法用户进行未授权操作,严重威胁系统的机密性和完整性。
Apache StreamPark在2.0.0至2.1.7版本中使用AES-ECB模式加密JWT令牌等敏感认证数据。AES-ECB模式的工作原理是将明文分成16字节的固定块,每个块使用相同的密钥独立加密。由于相同的明文块总是产生相同的密文输出,攻击者可以通过分析密文模式识别重复的数据结构,这在加密结构化的认证令牌时尤为危险。JWT令牌具有标准化的结构(Header.Payload.Signature),其Base64编码后的内容遵循特定的模式,攻击者可以利用ECB模式的这一缺陷进行模式匹配攻击。此外,系统使用的弱随机数生成器(如Java的java.util.Random)产生的伪随机数具有可预测性,攻击者通过收集足够的密文样本可能推断出密钥生成算法,进而暴力破解加密密钥。一旦攻击者获得JWT令牌的加密密钥,即可解密令牌内容,伪造有效的认证凭证,以合法用户身份访问系统资源,执行未授权操作。攻击者还可能利用解密的JWT信息进行横向移动或提权攻击。