Fastjson反序列化远程代码执行漏洞

5月23日,绿盟科技CERT监测到Fastjson官方发布公告称在1.2.80及以下版本中存在新的反序列化风险,在特定条件下可绕过默认autoType关闭限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。

参考链接:https://github.com/alibaba/fastjson/wiki/security_update_20220523

影响范围

受影响版本

Fastjson ≤ 1.2.80

解决方案

  1. 升级到最新版本1.2.83

    下载链接:https://github.com/alibaba/fastjson/releases

    升级步骤如下:

    1.备份原fastjson依赖库,避免升级失败的情况发生。

    2.将低版本的fastjson库替换为1.2.83版本即可

    开发人员可通过配置Maven的方式对应用进行升级并编译发布,配置如下:

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>fastjsonartifactId>
        <version>1.2.83version>
    dependency>
    
  2. safeMode加固

    fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,完全禁用autoType。无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击

    参考链接:https://github.com/alibaba/fastjson/wiki/fastjson_safemode

    三种配置SafeMode的方式如下:

    1. 在代码中配置

      ParserConfig.getGlobalInstance().setSafeMode(true); 
      
    2. 加上JVM启动参数

       -Dfastjson.parser.safeMode=true 
      
    3. 通过fastjson.properties文件配置

      通过类路径的fastjson.properties文件来配置,配置方式如下:

      fastjson.parser.safeMode=true
      
  3. 怎么判断是否用到了autoType

    看序列化的代码中是否用到了SerializerFeature.WriteClassName

    JSON.toJSONString(obj, SerializerFeature.WriteClassName); // 这种使用会产生@type
    

你可能感兴趣的:(开发工具,安全,java,开发语言)