第三方库漏洞通用解决方案

fastjson近期曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,该漏洞评级为“高危”。公司要求立即进行版本升级解决该安全漏洞。

那什么是fastjson呢?

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

那漏洞的修复方案是什么呢?

针对本次0day缺陷,官方建议升级到1.2.61版本。

那在升级版本前,需要考虑哪些问题呢?

1、兼容性问题:众所周知,fastjson各版本间存在较大的兼容性问题。诸如1.2.28版本中Content-Type不支持通配符*,1.2.3之后的版本中Map的序列化没有做排序再输出,高版本反序列化对list类型的支持等。在此我们可以通过 https://github.com/alibaba/fastjson/wiki/incompatible_change_list 查看已知的不兼容问题,然后通过实际使用场景分析,来有选择的使用相应的sec01版本。

2、autotype报错:安全升级包禁用了部分autotype的功能,也就是"@type"这种指定类型的功能会被限制在一定范围内使用。如果你的使用场景中包括了这个功能,可以通过https://github.com/alibaba/fastjson/wiki/enable_autotype 所示的方法添加白名单或者打开autotype功能。但由于打开autotype之后可能会存在风险,不建议打开,而是使用一个较小范围的白名单。至于安卓客户端,目前未发生安全风险,可以暂时不升级。

以上就是开发同学需要在升级版本时考虑的问题。那fastjson升级结束后,测试应该如何入手呢?
1、服务是否能够正常启动。

2、因为fastjson用于Json字符串的序列化及反序列化,可以重点关注远程调用及相关存储场景(redis及数据库存储)。业务场景可以重点关注登录、验签及其他涉及存储的场景,通过重点回归的方式保证升级的正确性。回归后需要关注相关应用日志的异常及相关错误。由于涉及存储场景可以考虑通过新老版本的数据对比的方法,保证新老数据的一致性。

3、内外服务中fastjson的版本一致性,特别是第三方依赖库及公司外部系统是否有用到fastjson,如有,则需要考虑对应升级。

4、发布时关注新老服务并存的时候的业务正确性。

5、代码检视,是否有用到诸如TreeMap或者List的类型,是否需要保证相关元素的顺序性,如有可以构造相对复杂类型对象,提前进行单元测试。

以上是关于fastjson升级过程中,需要考虑的点,希望能给你带来思考。

其他文章可以关注微信公众号测试架构师养成记获取呀。
在这里插入图片描述

发布了49 篇原创文章 · 获赞 15 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43164644/article/details/101174437
今日推荐