Java AMF3曝远程代码执行漏洞
近期,德国安全团队@codewhitesec发现了Java AMF3的多个功能实现漏洞,美国CERT/CC也发出了安全预警。攻击者可以远程通过欺骗或控制服务连接方式,在AMF3反序列动作时执行任意代码。部分受影响产品的补丁已经发布。
AMF3实际上是Adobe Action Message Format的最新版本,是用于对ActionScript对象图形序列化的压缩二进制格式。AMF首次出现是在2001年的Flash Player 6之中,而AMF3则伴随Flash Player 9出现。
序列化是指,一个对象转为字节流的过程,以便将对象存储或传输到内存或文件中。而序列化的数据释放的过程就是反序列化——这个过程如果处理不到位就会出现重大安全问题。
CERT/CC的安全公告提到了3个漏洞,第一个漏洞可让攻击者欺骗或控制RMI(Remote Method Invocation)服务器来执行代码。第二个漏洞则可被攻击者利用实现任意代码执行——该漏洞影响到了Flamingo,Apache的Flex BlazeDS和GraniteDS。XXE漏洞也影响到了这些产品,另外还有WebORB。详情如下:
漏洞概述
Java AMF3功能存在不安全的反序列化和XML外部实体注入漏洞,导致多个应用程序产品受到影响,漏洞概要参见KB-CERT VU#307983,详细技术分析参见黒吧安全网。
漏洞描述
不可信数据的反序列化漏洞
一些Java AMF3反序列化器实现不是从推荐规范类flash.utils.IExternalizable,而是从java.io.Externalizable中派生类实例。因此,远程攻击者可以通过欺骗或控制用来序列化Java对象的RMI服务连接,实现反序列化动作时执行任意代码。
一些Java AMF3反序列化器不是从推荐规范类flash.utils.IExternalizable,而是从java.io.Externalizable中派生类实例。因此,远程攻击者可以通过欺骗或控制用来序列化Java对象的RMI服务连接,实现反序列化动作时执行任意代码。
受该漏洞影响的产品程序和CVE编号如下:
Atlassian JIRA, 4.2.4至6.3.0版本 – CVE-2017-5983
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3201
GraniteDS, 3.1.1.GA版本 – CVE-2017-3199
Pivotal/Spring spring-flex – CVE-2017-3203
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3207
使用以上这些库程序的其它产品也可能将受到影响。
动态托管代码资源的不正确控制漏洞
一些Java AMF3反序列化器实现可以通过其公开的无参数构造函数构造任意类实例,或调用任意Java Beans setter方法。漏洞的可利用情况于取决于使用反序列化的类路径中的类的可用性。远程攻击者可以发送预先设置好的序列化java对象,以欺骗或控制方式在反序列动作时执行任意代码。
受该漏洞影响的产品程序和CVE编号如下:
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3202
Flex BlazeDS , 4.6.0.23207版本和4.7.2版本 – CVE-2017-5641
GraniteDS, 3.1.1.GA版本 – CVE-2017-3200
使用以上这些库程序的其它产品也可能将受到影响。
XML外部实体引用的不当限制漏洞(XXE漏洞)
一些Java AMF3反序列化器实现允许从AMF3消息嵌入的XML文件中执行外部实体引用,一旦XML解析发生错误处理,将会泄露服务器敏感信息,同时也会导致DDoS、SSRF服务器端请求伪造攻击。
受该漏洞影响的产品程序和CVE编号如下:
Flex BlazeDS , 4.6.0.23207版本 – CVE-2015-3269
GraniteDS, 3.1.1.GA版本 – CVE-2016-2340 (see VU#279472)
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3208
使用以上这些库程序的其它产品也可能将受到影响。
漏洞影响
攻击者可以远程通过欺骗或控制服务连接,发送序列化的java对象,在反序列动作时执行任意代码。
解决方案
程序更新至最新版本;
程序开发者应该使用更新版本的JDK程序,如JDK 8 update 121、JDK 7 update 131 和JDK 6 update 141中都包含了序列化黑名单过滤器,而即将发布的JDK9则更安全;
开发者应该提高对不信任来源反序列化数据的安全警惕;
配置防火墙规则或文件系统限制。
目前受影响的供应商信息
部分库如GraniteDS和Flamingo都已经不再受支持;而Atlassian和Apache则已经针对自家产品发布了补丁。CERT/CC表示,HPE、SonicWall和VMware的产品可能也受到影响。
近期,德国安全团队@codewhitesec发现了Java AMF3的多个功能实现漏洞,美国CERT/CC也发出了安全预警。攻击者可以远程通过欺骗或控制服务连接方式,在AMF3反序列动作时执行任意代码。部分受影响产品的补丁已经发布。
AMF3实际上是Adobe Action Message Format的最新版本,是用于对ActionScript对象图形序列化的压缩二进制格式。AMF首次出现是在2001年的Flash Player 6之中,而AMF3则伴随Flash Player 9出现。
序列化是指,一个对象转为字节流的过程,以便将对象存储或传输到内存或文件中。而序列化的数据释放的过程就是反序列化——这个过程如果处理不到位就会出现重大安全问题。
CERT/CC的安全公告提到了3个漏洞,第一个漏洞可让攻击者欺骗或控制RMI(Remote Method Invocation)服务器来执行代码。第二个漏洞则可被攻击者利用实现任意代码执行——该漏洞影响到了Flamingo,Apache的Flex BlazeDS和GraniteDS。XXE漏洞也影响到了这些产品,另外还有WebORB。详情如下:
copyright 无奈人生
漏洞概述
Java AMF3功能存在不安全的反序列化和XML外部实体注入漏洞,导致多个应用程序产品受到影响,漏洞概要参见KB-CERT VU#307983,详细技术分析参见黒吧安全网。
漏洞描述
不可信数据的反序列化漏洞
一些Java AMF3反序列化器实现不是从推荐规范类flash.utils.IExternalizable,而是从java.io.Externalizable中派生类实例。因此,远程攻击者可以通过欺骗或控制用来序列化Java对象的RMI服务连接,实现反序列化动作时执行任意代码。
一些Java AMF3反序列化器不是从推荐规范类flash.utils.IExternalizable,而是从java.io.Externalizable中派生类实例。因此,远程攻击者可以通过欺骗或控制用来序列化Java对象的RMI服务连接,实现反序列化动作时执行任意代码。
受该漏洞影响的产品程序和CVE编号如下:
Atlassian JIRA, 4.2.4至6.3.0版本 – CVE-2017-5983
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3201
GraniteDS, 3.1.1.GA版本 – CVE-2017-3199
Pivotal/Spring spring-flex – CVE-2017-3203
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3207
使用以上这些库程序的其它产品也可能将受到影响。
动态托管代码资源的不正确控制漏洞
一些Java AMF3反序列化器实现可以通过其公开的无参数构造函数构造任意类实例,或调用任意Java Beans setter方法。漏洞的可利用情况于取决于使用反序列化的类路径中的类的可用性。远程攻击者可以发送预先设置好的序列化java对象,以欺骗或控制方式在反序列动作时执行任意代码。
受该漏洞影响的产品程序和CVE编号如下:
Flamingo amf-serializer by Exadel, 2.2.0版本 – CVE-2017-3202
Flex BlazeDS , 4.6.0.23207版本和4.7.2版本 – CVE-2017-5641
GraniteDS, 3.1.1.GA版本 – CVE-2017-3200
使用以上这些库程序的其它产品也可能将受到影响。
XML外部实体引用的不当限制漏洞(XXE漏洞)
一些Java AMF3反序列化器实现允许从AMF3消息嵌入的XML文件中执行外部实体引用,一旦XML解析发生错误处理,将会泄露服务器敏感信息,同时也会导致DDoS、SSRF服务器端请求伪造攻击。
受该漏洞影响的产品程序和CVE编号如下:
Flex BlazeDS , 4.6.0.23207版本 – CVE-2015-3269
GraniteDS, 3.1.1.GA版本 – CVE-2016-2340 (see VU#279472) copyright 无奈人生
WebORB for Java by Midnight Coders, 5.1.1.0版本 – CVE-2017-3208
使用以上这些库程序的其它产品也可能将受到影响。
漏洞影响
攻击者可以远程通过欺骗或控制服务连接,发送序列化的java对象,在反序列动作时执行任意代码。
解决方案
程序更新至最新版本;
程序开发者应该使用更新版本的JDK程序,如JDK 8 update 121、JDK 7 update 131 和JDK 6 update 141中都包含了序列化黑名单过滤器,而即将发布的JDK9则更安全;
开发者应该提高对不信任来源反序列化数据的安全警惕;
配置防火墙规则或文件系统限制。
目前受影响的供应商信息
部分库如GraniteDS和Flamingo都已经不再受支持;而Atlassian和Apache则已经针对自家产品发布了补丁。CERT/CC表示,HPE、SonicWall和VMware的产品可能也受到影响。
本文来自无奈人生安全网