首页 网络安全 正文
  • 本文约1259字,阅读需6分钟
  • 212
  • 0

Apache Arrow R package反序列化漏洞CVE-2024-52338

摘要

栋科技漏洞库关注到 Apache Arrow 的 R 语言包中存在一个反序列化漏洞,该漏洞被追踪为CVE-2024-52338,该漏洞的CVSS评分为9.8。

Apache Arrow 是通用列式格式和多语言工具箱,通过一种高效内存布局来提高数据处理的性能,如稀疏数据存储、列式存储、数据压缩。

Apache Arrow 提供一种跨语言数据交换格式,使不同语言数据高效交换,如数据类型一致性、二进制数据表示和数据序列化和反序列化。

Apache Arrow 与其他分布式计算框架(如 Apache Flink 和 Apache Beam)也有密切联系,后者可使用其作为底层数据存储和处理框架。

一、基本情况

Apache Arrow 通过一种高效内存布局和数据结构及一种跨语言数据交换格式,专为分布式计算环境设计,用于快速数据交换和内存分析。

Apache Arrow R 包是Apache Arrow的R语言组件,用于处理高性能的列式数据格式,允许R语言用户读取、写入和操作Arrow格式的数据。

Apache Arrow R package反序列化漏洞CVE-2024-52338

栋科技漏洞库关注到 Apache Arrow 的 R 语言包中存在一个反序列化漏洞,该漏洞被追踪为CVE-2024-52338,该漏洞的CVSS评分为9.8。

二、漏洞分析

CVE-2024-52338是Apache Arrow R 包(版本 4.0.0 - 16.1.0)中存在的一个缺陷,可能触发反序列化漏洞,从而可能导致任意代码执行。

该漏洞源于 IPC 和 Parquet 数据读取器在处理元数据时未对输入进行严格验证,从而导致不受信任数据的反序列化,允许任意代码执行。

受影响版本中extension_metadata() 中直接调用 unserialize函数,在读取R元数据时没有进行类型或内容检查,允许恶意数据通过x参数。

这就使得应用程序在加载这些文件时,unserialize() 函数会直接解析元数据,从而可能会触发反序列化漏洞,从而可能导致任意代码执行。

因此,攻击者可以通过构造恶意的 Arrow IPC、Feather 或 Parquet 文件,在元数据中嵌入恶意对象(如 promises、environments 等)。

需要明确的是,该漏洞只影响Apache Arro R语言包,而不会影响到其他Apache Arrow 实现或绑定,除非这些绑定是通过R包专门使用的。

例如,如果Arrow R包使用的是受影响的版本,嵌入Python解释器并使用PyArrow从不可信来源读取文件的R应用程序仍然容易受到攻击。

修复代码通过新增 safe_unserialize 和 safe_r_metadata 函数来确保反序列化操作仅限安全类型,建议相关用户升级到17.0.0或更高版本。

三、影响范围

Apache Arrow R package 4.0.0 - 16.1.0

四、修复建议

目前该漏洞已经修复,受影响用户可将Apache Arrow R包或Apache Arrow升级到 17.0.0或更高版本。

五、参考链接

https://lists.apache.org/thread/0rcbvj1gdp15lvm23zm601tjpq0k25vt

https://github.com/apache/arrow/commit/801de2fbcf5bcbce0c019ed4b35ff3fc863b141b



扫描二维码,在手机上阅读
评论
更换验证码
友情链接