跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • fastjson 又爆 bug 了!快来看看是否受影响
未分類
1 6 月 2020

fastjson 又爆 bug 了!快来看看是否受影响

fastjson 又爆 bug 了!快来看看是否受影响

資深大佬 : siiiagtb 0

https://github.com/alibaba/fastjson/wiki/security_update_20200601

是否对你的业务有影响呢?

大佬有話說 (77)

  • 資深大佬 : jk1030

    bugjson

  • 資深大佬 : sagaxu

    出于什么考量用这个库呢?

  • 資深大佬 : raphael008

    jackson 不香吗?

  • 資深大佬 : qwerthhusn

    感觉这个库从 N 多年前就各种各样安全漏洞。。。

    但是 jackson 的话,不支持 JSONArray 和 JSONObject 抽象。
    有时候不想对某些 json 再做模型定义,然后用 JsonNode 的 API 太麻烦,全程用 LinkedHashMap 和 ArrayList 写起来也不太好看。

  • 資深大佬 : yty2012g

    已经因为 bugjson,升了 N 次版本了。。。

  • 資深大佬 : AngryMagikarp

    没用过,不过很奇怪,一个 JSON 库什么会有安全漏洞…

  • 資深大佬 : smartdone

    @AngryMagikarp 反序列化

  • 資深大佬 : GM

    @qwerthhusn JsonNode 很好用,超级方便,你是没领悟到它正确用法。

  • 資深大佬 : movistar

    Jackson 也一堆漏洞,经常有报 case….
    别以为用 jackson 就安全啊…..

  • 資深大佬 : ZSeptember

    @raphael008 哈哈哈哈,jackson 多少安全漏洞,国内没有报导而已。

  • 資深大佬 : micean

    没影响,一直是 jackson

  • 資深大佬 : ixx

    @AngryMagikarp #6 因为 json 会用在参数解析上,可以构建特殊 json 远程执行代码….

  • 資深大佬 : echo1937

    Spring 自带 Jackson,我又不喜欢额外引入过多依赖,一直就用 Jackson 了。

    这样有漏洞修补起来也轻松,直接升级 Spring 就行。

  • 資深大佬 : qwerthhusn

    @GM 额,我理解错了,我一直以为 JsonNode 就是那种 Low-Level 的语法,要解析各种 Token,刚刚仔细看了一下,和 fastjson 的 JSONArray 和 JSONObject 是类似的。。。。。。不过这套 API 没有 getArrayNode()或者 getObjectNode(),必须要先 get()获取父类,只能强转(或者用 instanceof 或者 getNodeType()检查一下)

    从今天开始,fastjson 对我来说,一点用都没了!!!我负责的项目下一个 milestone 中有一项就是 get rid of bugjson

  • 資深大佬 : Kamiyu0087

    所以 FastJSON 和 Jackson 都不能用?
    那么 GSON 如何呢?

  • 資深大佬 : onikage

    上周五也被 bugjson 坑了, {“value”:1,”id”:2}, 在 bugjson 转一遍输出就变成{“id”:2,”value”:1}了, 信息没丢,但是在有签名的场景这完全是两个字符串. 不知道为什么这么多人迷信这玩意.

  • 資深大佬 : murmur

    @onikage 所以说你传 json 不会传字符串么,验签后再反序列化

  • 資深大佬 : sagaxu

    @Kamiyu0087 gson 官方已经弃坑了

  • 資深大佬 : sagaxu

    @onikage object 本就是无序的,签名前先排序不是常识吗?

  • 資深大佬 : iFlicker

    JSONObject 呢

  • 資深大佬 : marcong95

    @onikage #16 JSONObject 理论上是个哈希表,应该是不保证顺序的,需要签名的场景一般不都是要先做排序的吗

  • 資深大佬 : wobuhuicode

    @onikage 明显是你自己对于 json 理解有问题。还能反咬一口框架

  • 資深大佬 : axbx

    @onikage 哈哈,上周也是遇到同样的问题

  • 資深大佬 : yuzo555

    @onikage 本来就是没有顺序的,还有的语言每次请求都随机顺序输出呢…

  • 資深大佬 : GM

    @onikage 签名要自己做排序,这是常识。不然的话,出错是必然,工作正常只是偶然(碰巧能正常工作)。

  • 資深大佬 : redtea

    那么到底该用哪个,更安全,性能更好?

  • 資深大佬 : beidounanxizi

    fastjson 这个破 json 序列化和反序列化 遵守 json 规范么? 还有号称的性能 呵呵哒
    用 jackson 不好么

  • 資深大佬 : whoami9894

    @AngryMagikarp
    因为它支持 @type 把 JSON 映射到对象

  • 資深大佬 : TomDu

    @sagaxu 官方有什么声明吗?我用得还挺多的= =

  • 資深大佬 : beidounanxizi

    @onikage 这个是你自己个人没保证顺序的原因

  • 資深大佬 : heiheidewo

    一个 json 解析还这么多 bug

  • 資深大佬 : hantsy

    @qwerthhusn Jackson 同样支持底层的强大 Node 操作(类似 Object, Array 操作非常简单),也支持高级的 Mapping,而且还支持 XML Mapping 。 还支持其它一些不太常见的格式。在 marshall/unmarshall 操作上,几乎是功能最全面的,在 Spring 是默认方案。

    现在的 JSON-P,JSON-B 标准受 Jackson,Gson,JAXB 等影响很大。

  • 資深大佬 : hantsy

    喜欢手动装配,用 JSON-P 标准就好了,https://github.com/hantsy/helidon-sample/blob/master/se-start/src/main/java/com/example/EntityUtils.java

  • 資深大佬 : Kyle18Tang

    Jackson 它不香么

  • 資深大佬 : sagaxu

    @TomDu 之前看到 gson 作者说过,开发基本上是停止了

  • 資深大佬 : keshawnvan

    JSON 反序列化用哪个库漏洞都很多,都需要经常更新

  • 資深大佬 : Vedar

    有点搞吧 验签排序确实是要做 但是你一个 json 库自作主张去排序就有毒了 这还能洗?

  • 資深大佬 : Meltdown

    龟速的 json 有 bug 么

  • 資深大佬 : sayuria

    @AngryMagikarp
    比如一只猫,序列化之后是 binary 序列。binary 是没有可读性的,看起来就是一堆乱码。
    这时候黑客把一只狗序列化成 binary 序列,替换掉猫的序列。
    json 反序列化之后,就会去执行狗的反序列后的代码。

  • 資深大佬 : kiddult

    @Vedar 不是去排序,而是这个对象映射是 map,本身就是无序的

  • 資深大佬 : mgzu

    问一下各位老哥,有 maven 或 eclipse 、idea 插件提示依赖安全漏洞的插件么

  • 資深大佬 : skull

    @onikage 你自己的坑

  • 資深大佬 : wm5d8b

    gson 没有 bug 的话,开发基本停止好像也没问题?

  • 資深大佬 : JasonLaw

    @sayuria 我还是有点不明白,就算替换了内容,那也是数据(对象的属性)改变了,代码执行的逻辑还是不变的。可以具体讲解一下“怎么造成安全漏洞”的吗?

  • 資深大佬 : 526326991

    一直用 gson 路过~~~

  • 資深大佬 : cco

    不管谁 bug 多,谁 bug 少。Spring 已经自带了 jackson,那我就懒得引入第三个 json,目前的业务也都满足。小声说:顶多在价格 gson- -!

  • 資深大佬 : binbinyouliiii

    老老实实用 springboot 默认的 jackson 不好吗,一个 json 工具又不需要中文文档

  • 資深大佬 : symeonchen

    fastjson
    https://help.aliyun.com/noticelist/articleid/1060026793.html
    https://help.aliyun.com/noticelist/articleid/1060052050.html
    https://help.aliyun.com/noticelist/articleid/1060056174.html
    https://help.aliyun.com/noticelist/articleid/1060243541.html
    https://help.aliyun.com/noticelist/articleid/1060253179.html
    https://help.aliyun.com/noticelist/articleid/1060343604.html
    看了下近一年的公告,确实需要蛮频繁地升级……

    jackson 不太熟悉,简单搜了下,感觉也不少,抛砖引玉
    https://cert.360.cn/warning/detail?id=f3aa86acf2688e0e410dee9e6ab79bc1
    https://cert.360.cn/warning/detail?id=1fe3b5ea888750006e0d64fb0df1e6ee
    https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=jackson

    (补充一下,我对漏洞不太了解,这只是搜到的文章和数量,不代表我支持或 diss 任意一方。)

  • 資深大佬 : siteshen

    @yuzo555 Go:我怀疑你在说我,但是我没有证据。

  • 資深大佬 : hjyjzsn

    @onikage 一般签名场景 都会对字段重新进行排序的吧

  • 資深大佬 : tairan2006

    Jackson 啥功能都有啊…升级 spring 很方便。

  • 資深大佬 : mars0prince

    毕竟没有漏洞就没有 kpi

  • 資深大佬 : liuawei

    那些一直推荐 Jackson 这个玩意也有漏洞 反序列化的漏洞可以通过 bash 反弹控制服务器呀。

  • 資深大佬 : whoami9894

    @JasonLaw
    JSON 映射到对象其实就是 build and assign,先实例化对象,然后对成员变量赋值,赋值时如果对象有 setXX 方法会调用,在 setXX 方法中可能有一些可以达到代码执行的操作 比如 JNDI injection
    比如`com.sun.rowset.JdbcRowSetImpl`,调用它的`setAutoCommit`时会自动对成员变量`dataSourceName`进行一次 JNDI lookup,在低版本 JDK 中就可以直接加载远程字节码

  • 資深大佬 : kennylam777

    @GM JsonNode + 1, 該有的 type safety 都有

  • 資深大佬 : fanshuzaizai

    高级用法才有 bug,像我这种只用来 JSON.parseObject()和 JSON.toJSONString,从来没有 bug

  • 資深大佬 : JasonLaw

    @whoami9894 产生对象的 class 是自己写的,setXX 能做什么不是完全由自己决定的吗?实例化 class 的一个对象后,会根据序列化之后的内容对属性设置不同的值。如果 setXX 方法除了赋值之外还做了“其他的事情”,不管是什么方式的反序列化,都会做“其他的事情”的呀

  • 資深大佬 : Seneca

    良心福报厂 养活一批安全从业者

  • 資深大佬 : lzvezr

    @onikage 兄弟,你这是用法不对啊,哪有 JSON 不排序就做签名的

  • 資深大佬 : stormsuncc

    上边说 jackjson 也有问题的不知道啥心理。
    下雨天没有伞房子还漏雨的人说你看隔壁也没伞出门(人家房子完好)。

  • 資深大佬 : zhuzeitou

    @sagaxu JakeWharton 最近的推上有说,gson 基本属于弃坑,2/3 的开发者参与了 moshi 开发,moshi 可以认为是 gson3

  • 資深大佬 : onikage

    @murmur
    client 和 server 端都在我们自己手里, 可以控制, 中间过了一道 http 的第三方的服务. 问题是这个服务输入输出不一致…
    不过这个第三方服务不出错.

  • 資深大佬 : onikage

    @wobuhuicode
    问题是中间过的第三方服务做的, 我们自己的 client 和 server 用 http 直连测过以后再连人家服务发现这个问题的.

  • 資深大佬 : wzw

    我用 msgpack……不知道怎么样

  • 資深大佬 : ZSeptember

    @stormsuncc 不知道你是什么心理。都说转 jackson,提出 jackson 也有漏洞,有什么问题?国外的框架有漏洞不让说?

  • 資深大佬 : LostPrayers

    没有高级反序列化,就没有伤害

  • 資深大佬 : zzNucker

    @ZSeptember 他都说了人家房子完好,说明是选择性失明+失智

    没啥好说的啦

  • 資深大佬 : Loyelee

    一直用的 gson

  • 資深大佬 : qoras

    这玩意不报 bug 才不正常

  • 資深大佬 : mxalbert1996

    @TomDu
    https://www.reddit.com/r/androiddev/comments/684flw/comment/dgx3gpm
    https://twitter.com/JakeWharton/status/1265998249476993026?s=19

  • 資深大佬 : back0893

    有 bug 不是正常?

  • 資深大佬 : youxiachai

    有点迷,这算是没关注比有关注强吗。。。。
    特别有几位大佬一个劲的批判也不知道为啥。。

  • 資深大佬 : wanguorui123

    反序列化注入漏洞,年年都报

  • 資深大佬 : ConradG

    @JasonLaw
    因为“产生对象的 class 是自己写的”这句话在某些情况下是不对的。
    除了常见的“标准”json 外,还存在“标记了反序列化目标类型“的非标准 json 。json 反序列化的大部分漏洞都是通过更改这类 json 的类型标记,实例化一些敏感类进行攻击。

  • 資深大佬 : xuxanwan

    在哪里能看到 fastjson 所有历史缺陷,及 jackson 的所有历史缺陷,想坐下选型前的对比。

  • 資深大佬 : lcj2class

    对性能有要求的,直接上 protobuf 吧

  • 資深大佬 : metrxqin

    马上就 618 了,现在紧急更新等于找骂。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具