Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
南湖船老大 2017年03月16日

Fastjson 爆出远程代码执行高危漏洞,更新版本已修复

南湖船老大 南湖船老大 发布于2017年03月16日 收藏 39

腾讯云-1小时搭建人工智能应用,让技术更容易入门>>>  

fastjson近日曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,漏洞评级为“高危”。

基本介绍
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。


漏洞介绍
fastjson在1.2.24以及之前版本近日曝出代码执行漏洞,当用户提交一个精心构造的恶意的序列化数据到服务器端时,fastjson在反序列化时存在漏洞,可导致远程任意代码执行漏洞。


风险:高风险
方式:黑客通过利用漏洞可以实现远程代码执行
影响:1.2.24及之前版本
安全版本:>=1.2.28


修复方法

1.请将fastjson升级到1.2.28或者更新版本

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.28</version>
</dependency>

2. 直接下载

1.2.28版本下载地址 http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.28/

常见问题

1. 升级遇到不兼容问题怎么办?

1.2.28已经修复了绝大多数兼容问题,但是总会有一些特殊的用法导致不兼容,如果你遇到不兼容问题,通过 https://github.com/alibaba/fastjson/wiki/incompatible_change_list 查看不兼容问题,链接的后面提供了遇到不兼容问题之后的使用相应的sec01版本解决办法。

2. 升级之后报错autotype is not support

安全升级包禁用了部分autotype的功能,也就是"@type"这种指定类型的功能会被限制在一定范围内使用。如果你使用场景中包括了这个功能,https://github.com/alibaba/fastjson/wiki/enable_autotype 这里有一个介绍如何添加白名单或者打开autotype功能。

3. 通过配置打开autotype之后是否存在安全漏洞

在1.2.28以及所有的.sec01版本中,有多重保护,但打开autotype之后仍会存在风险,不建议打开,而是使用一个较小范围的白名单。

4. Android环境使用是否需要升级

目前未发现漏洞对Android系统产生影响,在Android环境中使用不用升级。

5. 升级遇到问题希望提供支持怎么办?

作者愿意帮助大家一起解决问题,如果遇到文档中没说明到的问题,请通过如下方式联系作者:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
分享
评论(27)
精彩评论
3
json工具,纯粹的字符解析工具,本应是个本地工具,居然能有远程执行高危漏洞[/惊讶]
2

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用
没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug
1
其实不是什么大BUG:
https://github.com/alibaba/fastjson/issues/585

loadClass的问题,客户端可以指定某个bean反序列化后的具体类型, 新版本加了权限拦截:
http://blog.nsfocus.net/analysis-protection-fastjson-remote-code-execution-vulnerability/#i-3
1

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug
本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。
1
容我喝杯Java压压惊
最新评论
0

引用来自“书三生”的评论

其实不是什么大BUG:
https://github.com/alibaba/fastjson/issues/585

loadClass的问题,客户端可以指定某个bean反序列化后的具体类型, 新版本加了权限拦截:
http://blog.nsfocus.net/analysis-protection-fastjson-remote-code-execution-vulnerability/#i-3
腻害:thumbsup:
0

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug

引用来自“乌龟壳”的评论

本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。

引用来自“mark35”的评论

php的字符串拼接操作符是点,所以1+'2' === 3倒也可以理解

引用来自“乌龟壳”的评论

有道理,这个我倒是没想到,但是if('0')这坑确实被坑过
php, if ('0') // ==false这个是个坑。 js里面 if ('0') // 结果是true
0

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug

引用来自“乌龟壳”的评论

本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。

引用来自“mark35”的评论

php的字符串拼接操作符是点,所以1+'2' === 3倒也可以理解
有道理,这个我倒是没想到,但是if('0')这坑确实被坑过
0

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug

引用来自“乌龟壳”的评论

本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。
php的字符串拼接操作符是点,所以1+'2' === 3倒也可以理解
0
想知道漏洞是怎么被利用的,源码是哪部分,有没有大神知道
1
其实不是什么大BUG:
https://github.com/alibaba/fastjson/issues/585

loadClass的问题,客户端可以指定某个bean反序列化后的具体类型, 新版本加了权限拦截:
http://blog.nsfocus.net/analysis-protection-fastjson-remote-code-execution-vulnerability/#i-3
0

引用来自“Andyfoo”的评论

漏洞如何利用?

引用来自“南湖船老大”的评论

官方不会明说,但是从这个commit 可以揣摩出来
https://github.com/alibaba/fastjson/commit/d075721cf396d5cb70e24c824b901e3a9a5b342b
厉害了我的哥,原来fastjson居然可以启动新的线程
3
json工具,纯粹的字符解析工具,本应是个本地工具,居然能有远程执行高危漏洞[/惊讶]
0

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug

引用来自“乌龟壳”的评论

本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。
那些模式是为了某些方面来说的开发的简单
0
其实我只是好奇,有没有人技术足够好,然后有意创造一些隐性的高危漏洞呢?
0
那么问题来了,淘宝的数据泄露了吗?
0
擦! 这么严重!shit
1

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用

引用来自“eechen”的评论

没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug
本来逻辑本身就该if/else什么的才明确清晰,java的一些设计模式,甚至这种靠反射、靠字节码、靠动态改变等功能实现的逻辑。以及如php的过分的自动类型转换比如1+'2' === 3,if('0') === false之类的。

这些都为了让代码看起来简单,把本来可以很明显的逻辑变得隐蔽起来,对后来维护的人和系统整体安全性都有造成了额外的负担。
0
已升级,感谢作者及时修复
0
已升级
0

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用
人品垃圾的很多嘛
2

引用来自“limchuenyu”的评论

面试过一家公司,面试官说fastjson有后门,他们公司从不用
没有说服力,有本事就指出FastJSON后门的源代码在哪里.
Struts 的远程代码执行漏洞,不知道你怎么看,反正国内京东因为这个泄露了12GB数千万条用户数据.
https://www.oschina.net/news/79867/jd-data-was-leaked-due-to-struts-bug
0
通过@type这个特殊的key可以载入任意类, 剩下的,就是找一个合适的类名
1
容我喝杯Java压压惊
0

引用来自“Andyfoo”的评论

漏洞如何利用?

引用来自“南湖船老大”的评论

官方不会明说,但是从这个commit 可以揣摩出来
https://github.com/alibaba/fastjson/commit/d075721cf396d5cb70e24c824b901e3a9a5b342b
怎样利用的啊,搞个例子出来学习下呐,。:laughing:
顶部