JavaSSLContext。getInstance(“TLS”)漏洞
我们将调用SSLContext.getInstance("TLS")
报告为漏洞。建议的修复方法是使用SSLContext.getInstance("TLSv1.2")
我知道TLSv1。1和TLSV1从2021年4月开始在java实现中被禁用,但是当我尝试了这个修复时,我发现这将禁用TLVS1。3(即使我通过sslSocket.setEnabledProtocols(protocols)
添加它)
当我使用SSLContext.getInstance("TLSv1.3")
时,sslSocket.getEnabledProtocols()
返回两个TLSv1。3和TLSv1。2,如果服务器端仅支持TLSv1。2、建立连接
这对我来说是出乎意料的。对我来说,这将是一次“算法降级”
文档中说只有“可能支持其他SSL/TLS版本”,所以当我指定“TLSv1.3”时,我不能期望回退到“TLSv1.2”会起作用,对吗
尽管看起来SSLContext.getInstance
参数是受支持的最高TLS版本
那么,如果服务器端可能支持TLSv1,那么实现SSL连接的正确方法是什么呢。2或TSLv1。3或两者都有(且未报告漏洞)
问候,, 安德烈亚斯
# 1 楼答案
您没有说明正在使用哪个漏洞检查器,但报告与此匹配:
假设是这样,您还应该阅读此声纳错误报告:
它指出
SSLContext.getInstance(...)
中的参数不约束所使用的TLS版本。因此,漏洞报告为假阳性。请随意使用不同的值使假阳性“消失”。但请注意,您没有解决潜在/真实的漏洞要正确地约束用于特定连接的SSL/TLS版本,可以配置
SSLEngine
对象:或者,您可以通过在命令行上设置JVM属性来在整个JVM范围内约束此JVM:
参考: