本文章来源于观星 朋友圈 补天 。
下午15左右收到消息fastjson 爆出全版本存在远程代码执行漏洞
01fastjson介绍Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
Fastjson 源码地址:https://github.com/alibaba/fastjson
Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN
提供服务器端、安卓客户端两种解析工具,性能表现较好。
提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
允许转换预先存在的无法修改的对象(只有class、无源代码)。
Java泛型的广泛支持
允许对象的自定义表示、允许自定义序列化类
支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。
02 漏洞描述‘
Fastjson < 1.2.69 版本存在远程代码执行漏洞,可直接获取到服务器权限。该漏洞利用门槛低,风险影响范围较大,强烈建议使用了Fastjson的用户近期持续关注Fastjson官方公告。漏洞成因是Fastjson autotype开关的限制可被绕过,然后链式地反序列化某些原本是不能被反序列化的有安全风险的类。漏洞实际造成的危害与 gadgets 有关,gadgets中使用的类必须不在黑名单中,本漏洞无法绕过黑名单的限制。
03 影响范围 Fastjson < 1.2.69 04 安全建议等更新后升级为最新版1.2.69.
升级到 Fastjson 1.2.68 版本,通过配置以下参数开启 SafeMode 来防护攻击:ParserConfig.getGlobalInstance().setSafeMode(true);(safeMode 会完全禁用 autotype,无视白名单,请注意评估对业务影响)
推荐采用 Jackson-databind 或者 Gson 等组件进行替换。建议您在安装补丁前做好数据备份工作,避免出现意外