美文网首页
Fastjson漏洞解决方案探讨

Fastjson漏洞解决方案探讨

作者: 逸如风飞 | 来源:发表于2019-08-02 10:04 被阅读0次

    漏洞介绍

    近日, fastjson出现高危远程代码执行漏洞,该漏洞是fastjson于2017年爆出的远程代码执行漏洞新的绕过利用方式,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。目前PoC已公开。fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean,由于具有执行效率高的特点,应用范围广泛。

    来说明下这个洞,fastjson目前流传的有两个洞比较厉害,
    一、fastjson版本<1.2.25,rce可以远程直接获取服务器权限
    (参考:https://github.com/alibaba/fastjson/wiki/security_update_20170315
    二、fastjson版本<1.2.51(本次需要升级事项)
    目前安全市面利用poc已经公开(公开的利用脚本影响version<1.2.48),利用脚本可以远程直接获取服务器权限,目前黑产已经开始批量获取webshell开始搞了。
    (参考链接:官方持续拒绝发布公开文档说明次安全升级工作),猜测可能阿里内部未完成升级工作,所以暂时不公开文档说明。
    本次的漏洞版本<1.2.51,影响相当广,已知多个国内Top N的互联网公司均遭到这个漏洞的web入侵事件。

    目前普遍的修复方案为:

    • 1.升级Fastjosn到1.2.58版本,并关闭Autotype;
    • 2.WAF拦截Json请求中的多种编码形式的‘@type’,‘\u0040type’等字样;
    • 3.建议尽可能使用Jackson或者Gson;
    • 4.升级JDK版本到8u121,7u13,6u141以上

    升级版本这种方案确实可行,但是如果系统多业务复杂的话,兼容性问题影响不可控。
    WAF费用问题是需要考虑的。
    更换Jackson或者Gson,工作量也是个问题。

    另类解决方案探讨

    针对修复方案可以扩展出一张影响较小的方案:

    能引起问题的地方,应该就是用户请求的数据会有漏洞。那么在用户请求参数转json之前,进行@type等关键字的过滤就行。
    如何过滤:
    1)Filter过滤?影响较大,不太推荐
    2)如果有统一处理参数转json的地方,那么可以在这个地方处理

    protected  JSONObject getJSONData(HttpServletRequest request){
            try {
                String data = request.getParameter("data");
            
                if(StringUtils.isNotEmpty(data)){ 
         
                    if(data.contains(JSONObject.DEFAULT_TYPE_KEY) || data.contains("\\u0040type")){
    //                  TODO 此处处理@type 的过滤
                    }
                    return JsonResult.parseObject(data);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return new JSONObject();
        }
    

    目前分析漏洞全面的可以跳这里
    https://paper.seebug.org/994/#0x01-fastjson
    https://www.freebuf.com/vuls/178012.html

    相关文章

      网友评论

          本文标题:Fastjson漏洞解决方案探讨

          本文链接:https://www.haomeiwen.com/subject/dgukdctx.html