在Controller里调用getKv()会触发fasjson反序列化漏洞吗?

@JFinal @杜福忠

今天我们的系统被安全部门通报说请求的接口存在gatling-Fastjson 反序列化漏洞。系统依赖的fastjson是1.2.83。

我们在Controller里使用getKv()方法获取传递的参数,然后出来完业务后,通过renderJson(data)的方式返回给调用者json数据。在ConfigMain的configConstant()里没有配置其他json工厂,采用的是JFinalJson。我查看了Controller里的getKv方法,JsonRequest的构造函数里是这么写的:

public JsonRequest(String jsonString, HttpServletRequest req) {
    Object json = com.alibaba.fastjson.JSON.parse(jsonString);
    if (json instanceof com.alibaba.fastjson.JSONObject) {
        jsonObject = (com.alibaba.fastjson.JSONObject)json;
    } else if (json instanceof com.alibaba.fastjson.JSONArray) {
        jsonArray = (com.alibaba.fastjson.JSONArray)json;
    }
    this.req = req;
}

这里第一行直接调用fastjson的JSON.parse方法解析json串,这里有没有可能存在触发gatling-Fastjson 反序列化漏洞的可能。琢磨了一上午了,我本地又没办法重现。就来这里请教一下!



评论区

杜福忠

2025-04-17 13:58

如果 configConstant 配置了me.setResolveJsonRequest(true)是会触发JsonRequest的。fastjson禁用AutoType功能后也是没问题的(我没测试过)。

我们之前给某Y 做的系统就是有源码扫描,直接匹配源码的。我们是直接拿掉了fastjson改为了HuToolJson,虽然fastjson好用性能强,不过系统的瓶颈也不在这里,其他 json 工具也是够用了。

如果你项目没有用到fastjson的骚用法,可以直接上fastjson2,没啥影响

zzutligang

2025-04-17 14:52

@杜福忠 确实是启用了me.setResolveJsonRequest(true),那我是不是只要在configConstant 里再增加ParserConfig.getGlobalInstance().setSafeMode(true);就可以全局禁用autoType了?

杜福忠

2025-04-17 21:27

@zzutligang 禁用autoType 你测试后反馈一下社区里,我没做过测试

zzutligang

2025-04-18 09:52

@杜福忠 已经做测试。结果如下:1、根据官方说明,可以在configConstant 里再增加ParserConfig.getGlobalInstance().setSafeMode(true)代码,可以全局开启fastjson的autotype的黑名单功能,只要@type指定的类名在fastjson的jar包里的黑名单里,就可以控制住。但需要依赖fastjson库里黑名单的不断完善,有可能过不了等保扫描。2、把依赖库fastjson-1.2.83.jar换成fastjson-1.2.83_noneautotype.jar,这样就完全屏蔽了autotype功能,彻底解决fastjson的这个安全问题。3、升级到fastjson2,我测试的是这个坐标:

com.alibaba
fastjson
2.0.57

这是兼容fastjson1但实际使用的是fastjson2的库,测试也可以通过,但一样是需要在在configConstant 里再增加ParserConfig.getGlobalInstance().setSafeMode(true)代码。
最后感谢杜总的大力支持!

zzutligang

2025-04-18 09:53

上面回复里maven坐标标签没了。知道是什么意思就行了

北流家园网

2025-04-18 14:44

@zzutligang 意思是将fastjson-1.2.83换成fastjson-2.0.57?然后加ParserConfig.getGlobalInstance().setSafeMode(true)吗?其他都不用改什么了吧

热门反馈

扫码入社