查看原文
其他

Java库中充斥着大量反序列化安全弱点

Thomas Claburn 代码卫士 2022-12-15

 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士


法国、德国、卢森堡和瑞典的多所大学研究人员,深入分析了已知的Java反序列化漏洞,提醒人们注意Java库可能会引入严重的安全缺陷。


序列化用于将内存中的数据对象转换为用于存储或传输的一系列字节。反序列化和序列化相对,是将数据流转换为内存中的对象。在Java中,反序列化使用java.io.Serializable接口执行。但反序列化不一定是安全的,因为从字节流重构对象并不涉及构造函数(即最初构建对象,使其具有应当具有的函数和方法的蓝图代码)。如果该构造函数具有验证检查,则对象不运行。因此,反序列化可创建无效的或数据遭修改的对象。

Java 反序列化漏洞的危害性可能十分严重。

例如Log4Shell是一个影响 Apache Log4j 日志库的远程代码执行漏洞,可通过Java反序列化引发。2016年11月,一起勒索攻击通过一个Apache Commons Collections 反序列化漏洞攻陷了由旧金山市政交通局运行的2000多台计算机。

同样,2017年Equifax入侵事件导致1.477亿名美国人的个人数据失窃,其利用的就是位于 Apache Struts 中的一个Java反序列化缺陷。7月份,位于Atlassian Jira中的一个漏洞可导致能够连接到一个Ehcache RMI 网络服务中的攻击者,“通过验证缺失漏洞引发的反序列化在Jira中执行任意代码”。

研究人员发布名为《深入研究Java反序列化远程代码执行利用和漏洞》的论文,检查了遭19个公开已知的Java反序列化RCE利用的软件库,了解可利用的代码构建如何被引入Java库,以及摆脱这些构建为何有时会失败。

研究人员观察到,虽然序列化和反序列化发挥作用,但如果反序列化数据源自不受信任的来源,则该进程会引入风险。他们解释称,“确实,攻击者可构造一个字节流,当在远程主机上被反序列化时可通过连接Java代码序列即 gadgets来控制Java代码的执行流。”

Gadget这个词在漏洞利用领域具有特定含义。在论文中,研究人员用这个词指代攻击者可访问的可能遭利用的 Java 方法。库中可能包括可链接的gadget,因此它们可在序列中运营。利用反序列化漏洞可构成复杂的攻击链,或者构成通过网络的GET请求这样简单的目的。

研究人员查看了14个库(有些具有多个版本)中的19个利用:beanshell、clojure、commons-beanutils、commons-collections、groovy、rome、js-rhino、 spring-beans、spring-core、spring-aop、click-nodeps、 javax.servlet、vaadin-server以及vaadin-shared。

论文指出,“分析这19个RCE利用时,我们发现将gadget引入库中的多种方法:新增类、方法和接口或修改方法的签名。我们的主要结论是,修改类中一个看似无害的细节如将其公开等,可引入一个gadget。”鉴于gadget是创建反序列化利用的一个必要条件,因此通过插入新的gadegt 修改代码并不是十分理想的做法。

在所测试的库和变体中,14个已被修复,潜在gadget已被删除。修复方法很多,如删除易受攻击类接口列表中的 java.io.Serializable、删除整个易受攻击的类、引入安全检查等。

在所评估的库中,6个库被指并未修复。因此如果应用程序中包含这些库,则需考虑如何进行解决。不过等待修复方案并非最佳选择。它们是:commons-beanutils1.9.4、rome1.0、spring-beans-3.0.0.RELEASE、click-nodeps-2.3.0-RC1、javax-servlet-api-4.0.1 以及 vaadin-shared-7.4.0.beta1。

研究人员指出,“在研究这些库的补丁时,我们观察到删除 gadget所需时间从几个月到12年不等,平均大概是六个月。因此看来,反序列化漏洞尚未得到应有的重视。”



代码卫士试用地址:https://codesafe.qianxin.com
开源卫士试用地址:https://oss.qianxin.com








推荐阅读
谷歌 OAuth客户端库(Java版)中存在高危漏洞
年度加密漏洞提前锁定:Java JDK 加密实现漏洞可用于伪造凭据
Java RMI 服务易受 SSRF 攻击



原文链接

https://www.theregister.com/2022/08/22/java_library_flaws/


题图:Pixabay License‍



本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。




奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

    觉得不错,就点个 “在看” 或 "赞” 吧~

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存