[alibaba/fastjson]fastjson 因漏洞升级到最新版本1.2.70导致(JSONArray)序列化失败(紧急)

2024-05-22 580 views
0

fastjson 因漏洞升级到最新版本1.2.70 通过json反序列化为map时{'dd':‘ee’,tt: ['33']},tt类型为JSONArray,导致再次进行调用ejb服务序列化的时候失败,报错信息如下: Caused by: java.io.InvalidClassException: ; enum descriptor has non-zero serialVersionUID: 1256758970417157 at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:636) at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:809) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1565) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480) at com.alibaba.fastjson.JSONArray.readObject(JSONArray.java:478) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)

回答

2

jdk版本1.6

1

原来是什么版本?

0

1.2.47

9

是不是两边的字段或者什么不一致哦

3

怎么可能,fastjson代码都debug了好几十遍了。将jsonstr通过JSONObject.parseObject(jsonstr,Map.class)转map,然后进行ejb调用,参数为转化后的map,map中其中一个节点的数据类型是JSONArray,在对map序列化的时候报如上错误JSONArray的readObject报错。并且我把数据修改成{'dd':‘ee’,tt: {'ww':'33'}} 反序列化map后tt的类型为JSONObject在进行ejb服务就没有问题,说白了JSONArray的readObject对list序列化会报错,个人感觉应该是weblogic底层ejb服务调用对JSONArray序列化存在冲突或者jdk版本影响。可以看下报错信息跟两边字段就一点关系就没有,说白了,ejb服务都没有进入到ejb层在对map进行序列化的时候就已经报错了。

3

大神,你这漏洞的坑多少人啊,我们全系统在升级,好几个系统都有这问题,安全监控很严的,在搞不定要失业了。

2

1.2.48这个版本没有安全漏洞把,目前我们这边安全检查要求跟当时官网公布的版本要一则,这要回退到老版本,这个版本做什么调整了,可否告知

4

1.2.48.sec10已修复已知漏洞

6

好的,多谢,请问最新版本会解决此兼容问题吗?如果解决会在那个版本进行解决?谢谢