fastjson 远程代码实行漏洞处置建议

发布时间 2019-06-26

漏洞编号和级别


CVE编号:暂无,危险级别:高危,CVSS分值:官方未评定


影响版本


受影响的版本


fastjson < 1.2.30

1.2.41 < fastjson < 1.2.45


漏洞概述


fastjson是alibaba的开源JSON解析库,它可以解析JSON格式的字符串,支撑将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean,由于具有实行效率高的特点,应用范围很广。


近日,收集到关于fastjson javaweb框架的0day漏洞情报,由于fastjson在进行实例化对象时没有对输入数据进行严格限制,攻击者只要精心构造json数据,即可造成远程代码实行。


默认开启了autoType功能,可以在json中通过@type指定类进行自动实例化。例如,“{“@type”:“com.cmbc.Test”}”在使用Fastjson内JSON.parse()、JSON.parseObject()、JSONObject.parseObject(  )、 JSON.parseAarry(  )等接口处理上述json格式的时,会调用com.cmbc.Test类的默认构造函数实例化一个对象。如果大家构造json格式如: {“@type”:“com.cmbc.Test”,“val1”:“test”,“val2”:“test2”},那么Fastjson在实例化对象的时候会同时去调用com.cmbc.Test的setVal1(String val1)和setVal2(String val2)函数。利用Fastjson的这种特性,只要构造相应代码,发送给存在fastjson处理的模块就会造成远程代码实行。


对于当前项目,可通过查看版本来判断是否受影响,进入项目目录找到fastjson组件,通过文件名可获取当前版本,如果当前版本在受影响范围内,则说明当前系统存在风险。


使用maven部署的项目,可打开pom.xml文件,搜索如下内容:


<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>x.x.x</version>

</dependency>


其中 x.x.x 即为版本号。


漏洞验证


暂无POC/EXP。


修复建议


根据现有的情报,最新的1.2.58版本不受影响,可访问以下链接进行下载:http://repo1.maven.org/maven2/com/alibaba/fastjson/1.2.58/。


使用maven部署的项目可修改依赖进行版本更新:


<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.58</version>

</dependency>


参考链接