您现在的位置是:时尚 >>正文
jackson databind反序列化漏洞
时尚41人已围观
简介 jackson databind反序列化漏洞 2017年那个夏天,安全圈被一个CVE编号刷了屏——CVE-2017-7525。jackson-databind的enableDefaultTyping ...
jackson databind反序列化漏洞
2017年那个夏天,序列安全圈被一个CVE编号刷了屏——CVE-2017-7525。化漏jackson-databind的序列enableDefaultTyping()方法成了众矢之的。攻击者只需要构造一段恶意JSON,化漏就能让服务器执行任意代码。序列我当时在测试环境复现,化漏看着一个简单的序列{ "@class":"com.sun.rowset.JdbcRowSetImpl"}直接弹出了计算器,后背发凉。化漏这不是序列什么花哨的0day,而是化漏用了两年多的老洞。
问题出在哪儿?序列enableDefaultTyping()允许JSON中携带类型信息,反序列化时就直接按这个类名去实例化。化漏设计初衷是序列为了多态支持——你有个Animal接口,想反序列化成Dog还是化漏Cat,全靠JSON里的序列@class字段说了算。但攻击者根本不关心你的业务类,他们瞄上的是JDK自带的一些“危险”类。比如JdbcRowSetImpl,它有个特性:设置dataSourceName后,调用getConnection()就会发起JNDI查询。配合一个恶意的LDAP/RMI服务,就能加载远程class,直接RCE。
这个漏洞最阴险的地方在于——不需要你代码里有任何反序列化逻辑。只要你的项目用了jackson-databind,并且开了默认类型,哪怕只是解析一个用户提交的JSON,都可能中招。很多开发者根本不知道这个开关的存在,更不知道它默认是关闭的。但总有那么些框架,比如Spring Boot的某些版本,或者一些老旧的配置,悄悄把它打开了。等到出事儿的时候,日志里只有一行Invalid type definition,你甚至不知道攻击已经发生。
官方修复方式也很有意思——不是移除这个功能,而是维护了一个黑名单。把JdbcRowSetImpl、XString、TemplatesImpl这些已知的“危险类”全部禁掉。但黑名单就像打地鼠,安全研究员们不断发现新的gadget,官方就得不停打补丁。2019年又爆出绕过黑名单的CVE-2019-12384,利用的是com.zaxxer.hikari.HikariConfig。所以后来jackson干脆在2.10版本里把默认类型机制彻底改了——不再支持任意类,必须显式指定白名单。
说实话,这个漏洞给我最大的教训是:反序列化库的“便利性”往往就是“攻击面”。你图它省事,它就能让你翻车。现在写代码,我基本不用enableDefaultTyping(),就算用也必开白名单。而且强烈建议升级到2.10+,把黑名单那套老古董扔进历史的垃圾堆。毕竟,安全这种东西,靠维护黑名单永远是被动的——攻击者总有你没想到的姿势。
最后提醒一句,如果你的项目还在用旧版jackson,赶紧去查一下有没有开默认类型。别等安全扫描工具报出高危漏洞才慌,那时候可能已经晚了。
Tags:
上一篇:centos7最小化安装工具包
下一篇:加速噐排行榜网站
相关文章
精品176极品二乱码濮阳
时尚濮阳老城区有条街,街名早被人忘了,只记得巷口那棵歪脖子槐树底下,常年蹲着几个修鞋匠。他们的摊子边,总搁着个褪了漆的木匣子,里头码着一沓沓泛黄的纸片——那便是传说中的“精品176极品二乱码”。老修鞋匠张 ...
【时尚】
阅读更多携程用户分析报告
时尚携程的用户,大概是互联网上最矛盾的一群人。他们一边在朋友圈里晒着定位在冰岛、清迈、大理的九宫格,一边在携程的订单页面上反复比价,把同一家酒店的不同房型翻来覆去看上十几遍。我身边就有这样的朋友,年假前两 ...
【时尚】
阅读更多无忧传媒打榜骗局
时尚```html “交2980元,保你上热门,粉丝破万不是梦。”这话术我去年在一个微信群里见过,当时没当回事。直到上个月,朋友的表妹小周找上门,说她被无忧传媒坑了。 小周刚毕业,学舞蹈的,在抖音发了几条 ...
【时尚】
阅读更多