首页 网络安全 正文
  • 本文约2197字,阅读需11分钟
  • 160
  • 0

Apache MINA反序列化远程代码执行漏洞CVE-2024-52046

摘要

栋科技漏洞库关注到Apache MINA中存在一个反序列化远程代码执行漏洞,漏洞被追踪为CVE-2024-52046,该漏洞CVSS 4.0评分10分。

Apache Mina(Multipurpose Infrastructure for Network Applications)是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。

Apache Mina旨在帮助开发人员快速构建和管理网络应用程序,通过非阻塞I/O模型和多种协议支持,提高系统性能,并具有模块化设计。

一、基本情况

Apache Mina通过Java nio技术基于TCP/IP和UDP/IP协议提供抽象的、事件驱动的、异步的API,用于简化TCP/IP和UDP协议应用开发。

Apache Mina是一个高性能、轻量级的网络应用框架,通过抽象网络层来简化网络编程,使得开发者能够专注于业务逻辑而非底层细节。

Dell PowerStore中的参数注入漏洞CVE-2024-51532

Apache Mina支持TCP和UDP协议,其适用于服务器端的网络服务开发以及客户端的网络连接管理,通过事件驱动模型来处理网络事件。

栋科技漏洞库关注到Apache MINA中存在一个反序列化远程代码执行漏洞,漏洞被追踪为CVE-2024-52046,该漏洞CVSS 4.0评分10分。

一、漏洞分析

CVE-2024-52046漏洞是Apache MINA(Multipurpose Infrastructure for Network Applications)中存在的一个反序列化远程代码执行漏洞。

CVE-2024-52046漏洞源于Apache MINA中的ObjectSerializationDecoder组件使用 Java 的本机原生反序列化协议处理传入的序列化数据,

但缺乏必要安全检查和防御机制,使得攻击者可以向受影响的应用程序发送特制恶意序列化数据,利用不安全的反序列化过程触发漏洞。

攻击者利用不安全的反序列化过程触发漏洞,可能导致远程代码(REC)执行攻击,漏洞影响MINA core版本2.0.X、2.1.X和2.2.X等版本。

需要注意的是,该漏洞利用需要具备特定条件,只有在调用IoBuffer#getObject()方法的情况下使用MINA核心库的应用程序才会受到影响。

并且须在筛选器链中使用ObjectSerializationCodecFactory类添加ProtocolCodecFilter实例时,攻击者才可能会调用该特定方法利用漏洞。

若应用程序专门使用这些类,不仅需升级到MINA核心库最新版本,还要显式地允许解码器将在ObjectSerializationDecoder实例中接受类。

1、接受提供的ClassNameMatcher与*反序列化匹配的类名,除非它们被拒绝。

* * @param classNameMatcher要使用的匹配器*/public void Accept(class name matcher class name matcher)/

2、接受与为*反序列化提供的模式相匹配的类名,除非它们被拒绝。

* * @ param Pattern standard Java regexp */public void Accept(Pattern Pattern)/

3、接受通配符指定的类进行反序列化,除非它们被拒绝。

* { @ link org . Apache . commons . io . filename utils # wild card match(String,String)filename utils . wild card match } 

*/public void accept(String...模式)默认情况下,解码器将拒绝将出现在输入数据中的*所有*类。

此外需要注意:FtpServer、SSHd和Vysper子项目不受该漏洞影响。

三、影响范围

Apache MINA 2.0.X < 2.0.27

Apache MINA 2.1.X < 2.1.10

Apache MINA 2.2.X < 2.2.4

四、修复建议

1、目前该漏洞已经修复,受影响用户可升级到以下版本:

Apache MINA 2.0.X >= 2.0.27

Apache MINA 2.1.X >= 2.1.10

Apache MINA 2.2.X >= 2.2.4

2、配置ObjectSerializationDecoder。

在升级后,还需要配置ObjectSerializationDecoder实例,以限制哪些类可以被反序列化。

默认情况下,ObjectSerializationDecoder 会拒绝所有传入的类,需要使用以下方法之一来明确允许特定的类:

accept(ClassNameMatcher classNameMatcher):使用提供的ClassNameMatcher来匹配允许反序列化的类名。

accept(Pattern pattern):使用标准Java正则表达式来匹配允许反序列化的类名。

accept(String... patterns):使用Apache Commons IO库中的通配符模式来匹配允许反序列化的类名。

3、检查使用 IoBuffer#getObject() 的地方。

该漏洞仅在应用程序使用 IoBuffer#getObject() 方法,

并通过 ProtocolCodecFilter 和 ObjectSerializationCodecFactory 进行数据处理时才会受到影响,应确保应用程序:

• 升级到修复版本。

• 配置并限制可以通过反序列化处理的类。

• 如果不需要 getObject() 方法,避免使用它,以减少安全风险。

4、测试和验证。

修复后,测试应用程序以确保它按预期工作并且没有引入新的问题,尤其是在序列化和反序列化处理方面,

然后验证ObjectSerializationDecoder的配置是否正确,确保只有预期的类被允许反序列化。

五、参考链接

文章回复-路羽博客.png此处内容已隐藏,评论后刷新即可查看!

评论
更换验证码
友情链接