java爆出"年度加密漏洞"!网友:又多了坚持java8的理由。。

xhmj12 xhmj12     2023-03-13     333

关键词:

为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?

上一篇:办公室VR黄片,骚操作!微软HoloLens之父辞职!

文 | Travis

出品 | OSC开源社区(ID:oschina2013)
甲骨文于推送了安全更新修复了一个漏洞,该漏洞允许攻击者伪造某些种类的 SSL 证书和握手、双因素认证信息,以及由一系列广泛使用的开放标准产生的授权凭证。
这使得攻击者可以轻松地对文件和其他数据进行数字签名。


该漏洞影响了 Java 15 及以上版本中对 ECDSA(椭圆曲线数字签名算法)的实现。
ECDSA 是一种利用椭圆曲线密码学原理对信息进行数字认证的算法。与 RSA 或其他加密算法相比,ECDSA 的一个关键优势是它生成的密钥较小,非常适合用于包括基于 FIDO 的 2FA、SMAL 和 OpenID 等标准。
这个漏洞的 CVE ID 为 CVE-2022-21449,最初是由 ForgeRock 安全研究员 Neil Madden 所发现的,他在漏洞说明中写道:
如果你在这些安全机制中使用 ECDSA 签名,并且如果你的服务器在 2022 年 4 月关键补丁更新(CPU)之前运行任何 Java 15、16、17 或 18 版本,攻击者就可以轻而易举地完全绕过它们。
如今几乎所有的 WebAuthn/FIDO 设备(包括 Yubikeys)都使用 ECDSA 签名,许多 OIDC 提供商也在使用 ECDSA 签名的 JWT。

Madden 指出,上述这些受影响的 Java 版本主要是因为它们未能检查 ECDSA 中的两个关键变量,以确保它们是非零的。
ECDSA 签名依赖于一个伪随机数,通常表示为 K,用于推导两个额外的数字 R 和 S。要验证签名是否有效,必须检查涉及 R 和 S 的等式。当等式两边相等时,签名才有效。为了使过程正常工作,R 和 S 都不能为零。
这是因为如果值都是 0,等式两边将始终相等,签名也就一直有效。这意味着只需提交一个空白签名即可成功通过验证检查。
这个 bug 是由相关代码从 C++ 改写成 Java 时引入的,漏洞最早可以追溯到 2020 年 Java 15 发布的时候。该 bug 在去年 11 月就已被发现并报告给了甲骨文,而甲骨文在推出的 4 月关键补丁更新(CPU)中修复了该问题。
甲骨文在通用漏洞评分系统(Common Vulnerability Scoring System)中将该漏洞的严重性评级为 7.5(满分 10 分),但 Madden 根据他自己的评估,认为该漏洞的严重性评级为 10 分。
除了 Madden 认为该漏洞十分严重,另一位安全专家 Thomas Ptacek 更是将该漏洞评为 “年度加密漏洞”(crypto bug of the year)。

目前 Java 15 及以上版本并没有像 Java 早期版本那样被开发者广泛使用。安全公司 Snyk 在 2021 年统计的数据显示,当时 Java 15 仅占了 12% 的份额。
因为此“年度加密漏洞”仅影响 Java 15 及以上版本,所以有网友表示:又有一个坚持Java 8的理由了!

 · END ·

热门推荐:

PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看

java“年度加密漏洞”修复,网友:又多了坚持java8的理由

文|Travis出品|OSC开源社区(ID:oschina2013)甲骨文于昨日推送了安全更新修复了一个漏洞,该漏洞允许攻击者伪造某些种类的SSL证书和握手、双因素认证信息,以及由一系列广泛使用的开放标准产生的授权凭证... 查看详情

des加密c++java

谁可以把下面的javades加密算法写成c++的,要求java加密的可以用c++解密c++加密的可以用java解密哦privateStringencryptData(StringretData)if(!encryptFlag)returnretData;StringreturnData="";tryStringoriDataValue=retData;BASE64Decoderbase64decoder=newBASE64Decoder()... 查看详情

新版java惊现“年度加密漏洞”,网友:还好我只用java8

整理 |苏宓出品|CSDN(ID:CSDNnews)Java作为当前最流行的编程语言之一,常被用于企业级应用开发中。近日,安全公司 ForgeRock的研究员NeilMadden发现在 Java15、16、17、18版本的 ECDSA(椭圆曲线数字签名算法&#... 查看详情

java怎么样实现base64加密解密?

... ret=newBASE64Encoder().encode(str.getBytes()); System.out.println("加密前:"+str+"加密后:"+ret); str="amF2YTEyMzQ1"; try ret=newString(newBASE64Decoder().decodeBuffer(str)); catch(IOExceptione) e.printStackTrace(); System.out.println("解密前:&q... 查看详情

java中如何进行md5加密

JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。加密代码如下:String token = System.currentTimeMillis()+new Random().nextInt()+"";try  MessageDigest md = MessageDigest.getInstance("MD5"); byte[]&nb... 查看详情

下面的java加密用nodejs该怎么实现谢谢

publicstaticbyte[]aesEncrypt(Stringcontent,Stringpassword) try KeyGeneratorkgen=KeyGenerator.getInstance("AES"); SecureRandomsecureRandom=SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(password.getBytes()); kgen.init(128,secureRandom); SecretKeysecretKey=kg... 查看详情

java怎么把字符串进行md5加密

...gest.getInstance("MD5");byte[]output=md.digest(src.getBytes());//加密处理//将加密结果output利用Base64转换成字符串输出Stringret=Base64.encodeBase64String(output);returnret;catch(Exceptione)thrownewNoteException("密码加密失败",e);publicstaticvoidmain(String... 查看详情

显示当前年度

<?phpechodate("Y")?> 查看详情

java编写程序,输入年份,输出本年度各月份日历

importjava.util.*;publicclassTest publicstaticvoidmain(Stringargs[]) Calendartime=Calendar.getInstance(); intyear,month; Scannersc=newScanner(System.in); System.out.println("请输入年份:"); year=sc.nextInt(); time.set(Calendar.YEAR,year); int[]ap=newint[]31,28,31,30,31,30,31,3... 查看详情

java中md5加密

...oString();System.out.println("result:"+buf.toString());//32位的加密Syste 查看详情

如何用java进行3des加密解密

参考技术AJava进行3DES加密解密代码如下:<pre class="java" name="code">public static String byte2hex(byte[] b)   String hs = "";  String stmp = ""; &nb... 查看详情

关于js加密,这个是啥加密方式?如何进行加密和解密

以下JS代码是什么加密方式?加密用什么方法?解密用什么方法?完整JS代码: varsq="i",sw="/",se="o",as="s",ad="p",ap="BF",aq="vy",aw="g",ae="f",ar="a",at="gd",ay=... 查看详情

java的aes加密成多少位数

深圳远标帮你:1.默认Java中仅支持128位密钥,当使用256位密钥的时候,会报告密钥长度错误InvalidAESkeylength你需要下载一个支持更长密钥的包。这个包叫做JavaCryptographyExtension(JCE)UnlimitedStrengthJurisdictionPolicyFiles6看一下你的JRE环境,... 查看详情

求大神用java实现rc4的加密,解密功能,高分悬赏.

求大神用java实现RC4的加密,解密功能,高分悬赏.import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import javax.xml.bind.DatatypeConverter;public class Test  public static void main(String[] args) throws Excepti... 查看详情

获取当前年度

Greatforuseinsitefooters.<scripttype="text/javascript">document.write(newDate().getFullYear());</script> 查看详情

web端调接口用angularjs的post请求,接口传输数据一般用啥加密方式呀?要后台java那边可逆的。

...口用angularJS的post请求,js进行接口传输数据时一般用什么加密方式呀?要后台java那边可逆的。怎么用的?求具体一点一、平常使用的post提交和接收方式前端使用jquery提交数据。?123456789$.ajax(url:'/carlt/loginForm',method:'POST... 查看详情

javabase64加密解密导入哪个包

... ret=newBASE64Encoder().encode(str.getBytes()); System.out.println("加密前:"+str+"加密后:"+ret); str="amF2YTEyMzQ1"; try ret=newString(newBASE64Decoder().decodeBuffer(str)); catch(IOExceptione) e.printStackTrace(); System.out.println("解密前:&q... 查看详情

java某段时间内遍历出啊所有的年度季度月度日以及日期

...一个时间段比如2005-5-1至2015-12-31这个时间段要求取得每个年度季度月度日以及日期参考技术A这样可以吗,输入年份和月份后就会显示那年那月的第一天到最后一天是星期几importjava.util.Scanner;publicclassCalendar publicstaticvoidmain(String[]a... 查看详情