首页安全服务安全公告
正文

紧急通告2015年第7号(java反序列化漏洞)

发布时间:2015-11-20 17:11   浏览次数:2287

 

尊敬的海峡用户:

最近几年,不断的有java反序列化漏洞被曝光,至2015年11月6日,FoxGlove Security安全团队的@breenmachine 介绍了如何利用Java反序列化漏洞来攻击WebLogic、WebSphere、JBoss、Jenkins、OpenNMS这些著名的Java应用,来实现远程代码执行,才引起了高度重视。这意味着黑客可以利用java反序列化漏洞,实现远程代码执行,这是一个极其严重的问题。

【漏洞危害】

    攻击者可以利用java反序列化漏洞实现远程代码的任意执行,如可调用java中方法Runtime.getRuntime().exec()来实现远程任意系统命令执行,危害极大。

【受威胁对象】

    只要有使用java中的类ObjectInputStream处理反序列化的应用系统均有可能存在java反序列化漏洞。由于目前互联网中已出现利用java反序列化漏洞对weblogic、WebSphere、JBoss、Jenkins的攻击代码,所以使用此类应用的系统,受黑客攻击的可能性较大,请特别注意使用这些应用的系统。

【漏洞成因】

     Java反序列化就是把字节流转换为java对象,如果Java应用对用户输入的不可信数据做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,非预期的对象在产生过程中就有可能带来任意代码执行。这个问题的根源在于java中的类ObjectInputStream中方法readObject()在反序列化时,没有对生成的对象的类型做限制。

【修复方案】

    因为受影响的多家厂商在今年1月拿到POC至今都没有对该问题做任何修复,所以短期内并不会有官方补丁放出,如果很重视这个安全问题并且想要有一个临时的解决方案,可以参考如下:

1、下载由NibbleSecurity公司在github上放出了一个临时补丁SerialKiller(下载地址:https://github.com/ikkisoft/SerialKiller)。下载这个jar后放置于classpath,将应用代码中的java.io.ObjectInputStream替换为SerialKiller,之后配置让其能够允许或禁用一些存在问题的类,SerialKiller有Hot-Reload,Whitelisting,Blacklisting几个特性,控制了外部输入反序列化后的可信类型。

2、在不影响业务的情况下,临时删除掉项目里的“org/apache/commons/collections/functors/InvokerTransformer.class”文件。

3、针对jboss应用可以选择关闭jmx-console。


【参考资料】

http://www.freebuf.com/vuls/86566.html

http://blog.chaitin.com/2015-11-11_java_unserialize_rce/?from=timeline&isappinstalled=0#rd


福建省海峡信息技术有限公司 版权所有  联系: hxzhb@heidun.net 闽ICP备06011901号 © 1999-2023 Fujian Strait Information Corporation. All Rights Reserved.

返回顶部