
本文插图
因为fastjson在反序列化的时候会尝试执行里面的getter方法 , 而Exception类中都有一个getMessage方法 。 黑客只需要自定义一个异常 , 并且重写其getMessage就达到了攻击的目的 。 这个漏洞就是6月份全网疯传的那个"严重漏洞" , 使得很多开发者不得不升级到新版本 。 这个漏洞在 v1.2.69中被修复 , 主要修复方式是对于需要过滤掉的expectClass进行了修改 , 新增了4个新的类 , 并且将原来的Class类型的判断修改为hash的判断 。 其实 , 根据fastjson的官方文档介绍 , 即使不升级到新版 , 在v1.2.68中也可以规避掉这个问题 , 那就是使用safeModeAutoType 安全模式?可以看到 , 这些漏洞的利用几乎都是围绕AutoType来的 , 于是 , 在 v1.2.68版本中 , 引入了safeMode , 配置safeMode后 , 无论白名单和黑名单 , 都不支持autoType , 可一定程度上缓解反序列化Gadgets类变种攻击 。 设置了safeMode后 , @type 字段不再生效 , 即当解析形如{"@type": "com.java.class"}的JSON串时 , 将不再反序列化出对应的类 。 开启safeMode方式如下:ParserConfig.getGlobalInstance.setSafeMode(true);如在本文的最开始的代码示例中 , 使用以上代码开启safeMode模式 , 执行代码 , 会得到以下异常:Exception in thread "main" com.alibaba.fastjson.JSONException: safeMode not support autoType : com.hollis.lab.fastjson.test.Appleat com.alibaba.fastjson.parser.ParserConfig.checkAutoType(ParserConfig.java:1244)但是值得注意的是 , 使用这个功能 , fastjson会直接禁用autoType功能 , 即在checkAutoType方法中 , 直接抛出一个异常 。

本文插图
后话目前fastjson已经发布到了 v1.2.72版本 , 历史版本中存在的已知问题在新版本中均已修复 。 开发者可以将自己项目中使用的fastjson升级到最新版 , 并且如果代码中不需要用到AutoType的话 , 可以考虑使用safeMode , 但是要评估下对历史代码的影响 。 因为fastjson自己定义了序列化工具类 , 并且使用asm技术避免反射、使用缓存、并且做了很多算法优化等方式 , 大大提升了序列化及反序列化的效率 。 之前有网友对比过:

本文插图
当然 , 快的同时也带来了一些安全性问题 , 这是不可否认的 。 最后 , 其实我还想说几句 , 虽然fastjson是阿里巴巴开源出来的 , 但是据我所知 , 这个项目大部分时间都是其作者温少一个人在靠业余时间维护的 。 知乎上有网友说:"温少几乎凭一己之力撑起了一个被广泛使用JSON库 , 而其他库几乎都是靠一整个团队 , 就凭这一点 , 温少作为“初心不改的阿里初代开源人” , 当之无愧 。 "其实 , 关于fastjson漏洞的问题 , 阿里内部也有很多人诟病过 , 但是诟病之后大家更多的是给予理解和包容 。 fastjson目前是国产类库中比较出名的一个 , 可以说是倍受关注 , 所以渐渐成了安全研究的重点 , 所以会有一些深度的漏洞被发现 。 就像温少自己说的那样:"和发现漏洞相比 , 更糟糕的是有漏洞不知道被人利用 。 及时发现漏洞并升级版本修复是安全能力的一个体现 。 "就在我写这篇文章的时候 , 在钉钉上问了温少一个问题 , 他竟然秒回 , 这令我很惊讶 。 因为那天是周末 , 周末钉钉可以做到秒回 , 这说明了什么?他大概率是在利用自己的业余维护fastjson吧…最后 , 知道了fastjson历史上很多漏洞产生的原因之后 , 其实对我自己来说 , 我是"更加敢用"fastjson了…致敬fastjson!致敬安全研究者!致敬温少!
推荐阅读
-
-
邓伦|邓伦身材暴瘦罕见露面,坐豪车上下班,与男子穿情侣装牵手引猜测
-
尚州尚武|周日两场韩k联:04草津温泉vs北九州,06尚州尚武vs釜山偶像
-
周到|一场七八名的排位赛,申花为何还能保持很高的投入度和战斗欲?
-
中新社微信公众号|对于蓬佩奥的满嘴谎言,让事实来说话!
-
商英专业学生想利用假期提前预习或拓宽知识面,有哪些本专业或国际经济贸易专业书籍值得推荐
-
「华为mate30」再次的确认华为Mate30长期开着灭屏显示功能,会不会出现烧屏?
-
长城回应哈弗H6侧面碰撞异常问题:欢迎公开随机抽检
-
-
王者荣耀|皮肤返场投票开启,武陵仙君优化,碎片商店更新,没有夏洛特的玩家笑了
-
-
蝶衣羽化|在家5分钟搞定,网友:能不能去你家吃?,排队半小时买驴肉夹饼
-
【车与生活|存在重大不确定性,5天4板江淮汽车:控股股东引进战投事项处于筹划阶段】
-
-
颜值|家里的抱枕靠垫自己制作,一款华夫格靠枕教程,颜值不输在售商品
-
证据|男子疑对女伴下药,深圳检方回应存疑不捕:直接物证灭失
-
-
-
-
左小姐与右小姐|这2件事情别做,毫无意义,“无钱休入众﹐遭难莫寻亲”:落魄时