CVE-2025-22228

 前言:

最新扫描jar包发现spring-security-crypto新出了个漏洞CVE-2025-22228,详细信息如下:

https://spring.io/security/cve-2025-22228

 

漏洞分析:

 看了下具体漏洞位于密码比对的地方位于org.springframework.security.crypto.bcrypt下的String hashpw(byte[] passwordb, String salt, boolean for_check)方法

看了下只要是超过72位后加密的密码都相同,测试了下,代码如下

package org.example;

import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class Main {
    public static void main(String[] args) {

        // 原始密码
        String password1 = "123456789012345678901234567890123456789012345678901234567890123456789012";
        String password2 = "123456789012345678901234567890123456789012345678901234567890123456789012aaaaaaa";
        // 生成盐值
        String salt = BCrypt.gensalt();

        // 使用推荐的方法进行哈希处理
        String hashedPassword1 = BCrypt.hashpw(password1, salt);
        String hashedPassword2 = BCrypt.hashpw(password2, salt);

        // 输出哈希后的密码
        System.out.println("Hashed Password: " + hashedPassword1);
        System.out.println("Hashed Password: " + hashedPassword2);


    }
}

可以看到只要加密的密码长度大于72个字符,后面的字符无论是什么加密产生的结果都相同 

 这个就很鸡肋了,有谁设置密码会大于等于72个字符,所以基本没啥用;

漏洞修复: 

5.8.16及以下版本不再提供修复版本,除非付费的企业用户

因此需要修改源代码来修复该问题,首先安装环境需要jdk11及以上版本,另外需要安装 apache-groovy-sdk

https://groovy.jfrog.io/ui/native/dist-release-local/groovy-zips/apache-groovy-sdk-3.0.10.zip

 安装成功后,需要修复如下代码

org.springframework.security.crypto.bcrypt的private static String hashpw(byte passwordb[], String salt, boolean for_check) 方法中添加

		if (passwordb.length > 72) {
			throw new IllegalArgumentException("password cannot be more than 72 bytes");
		}

 另外org.springframework.security.crypto.bcrypt下添加检测方法enforcePasswordLength

	@Test
	public void enforcePasswordLength() {
		BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
		String password72chars = "123456789012345678901234567890123456789012345678901234567890123456789012";
		assertThat(encoder.matches(password72chars, encoder.encode(password72chars))).isTrue();
		String password73chars = password72chars.concat("a");
		assertThatIllegalArgumentException()
			.isThrownBy(() -> encoder.matches(password73chars, encoder.encode(password73chars)));
	}

 完成后另外需要修改

 gradlew.bat :spring-security-crypto:checkFormatMain

当出现如上错误证明代码格式存在问题,需要关闭 build.gradle中的sonar检测,由于会默认进行安全检查,如果系统没有安装相关插件建议关闭,注释如下位置

另外gradle.properties中添加

sonar.skip=true

完成后检查格式是否正确 

gradlew.bat format

格式修复完成后编译成功: 

 gradlew.bat :spring-security-crypto:build

后记:

漏洞原理非常简单,就是加密的长度不能超过72个字符,超过的地方就不会进行加密,这样就可能导致在验证密码的地方进行绕过,但是没见过密码设置超过72个字符的人,所以这个漏洞现实意义不大; 

<think>好的,用户正在询问关于CVE-2025-21549的安全漏洞信息,包括详情、影响范围和解决方案。首先,我需要检查提供的参考引用,看看是否有任何提到这个CVE编号的内容。 用户提供的引用包括四个不同的CVE漏洞:CVE-2023-45866、CVE-2025-1094、CVE-2025-0282以及四个VMware相关的2024年漏洞。但CVE-2025-21549并没有在引用中提及。这说明用户的问题超出了现有参考内容的范围,因此需要明确告知用户当前资料中缺乏相关信息。 接下来,我应该考虑用户可能的真实需求。用户可能正在处理安全漏洞评估,或者需要应对某个特定漏洞的威胁。由于现有的引用没有相关信息,我需要建议用户通过其他可靠渠道获取信息,例如官方安全公告、CVE数据库或厂商的通报。 同时,用户可能不熟悉如何查找CVE的详细信息,因此在回答时,可以提供一些通用的步骤,比如访问CVE官方网站、联系厂商支持、关注安全公告等。此外,提醒用户保持系统更新和遵循安全最佳实践也是重要的,即使具体漏洞的细节尚不明确。 需要确保回答准确,避免猜测或提供不实信息。必须明确说明当前无法提供该CVE的具体细节,并引导用户到正确的资源。最后,生成的相关问题应围绕如何查找漏洞信息、处理未知漏洞的方法以及常规的安全建议,以帮助用户进一步解决问题。</think>关于您查询的 **CVE-2025-21549**,根据当前提供的引用内容,我未能在现有资料中找到直接相关的漏洞详情、影响范围及解决方案。这可能是因为该漏洞信息尚未公开或未被包含在现有参考文档中[^1][^2][^3][^4]。 ### 建议操作步骤: 1. **官方渠道查询** 访问 **CVE官方网站**(如 [MITRE CVE List](https://cve.mitre.org/) 或 [NVD](https://nvd.nist.gov/)),输入 **CVE-2025-21549** 进行检索,获取漏洞的官方描述和技术细节。 2. **厂商安全公告** 如果漏洞涉及特定厂商(如操作系统、软件供应商),请直接查看其安全公告页面。例如: - VMware、Microsoft、Cisco 等厂商通常会针对其产品发布安全补丁说明。 3. **行业安全动态** 关注网络安全机构(如 CERT、CNVD)或技术论坛(如 GitHub Security、Exploit-DB)的更新,此类平台可能包含漏洞复现或缓解措施。 4. **临时防护措施** 若漏洞未公开,建议采取通用安全策略: - 确保系统和软件更新至最新版本。 - 启用防火墙和入侵检测系统(IDS)。 - 限制不必要的网络端口和服务暴露。 ### 参考案例分析: 以引用中提到的 **CVE-2023-45866**(蓝牙HID漏洞)为例,其解决方案包括更新固件、禁用非必要协议等。类似地,**CVE-2025-1094**(PostgreSQL SQL注入漏洞)需通过输入验证和补丁升级来缓解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值