新的 R 编程漏洞使项目面临供应链攻击

阅读量78086

发布时间 : 2024-04-30 11:14:37

R 编程语言中发现了一个安全漏洞,威胁参与者可能会利用该漏洞创建恶意 RDS(R 数据序列化)文件,从而在加载和引用时导致代码执行。

AI 应用安全公司 HiddenLayer 在与 The Hacker News 分享的一份报告中表示,该漏洞的 CVE 标识符为CVE-2024-27322,“涉及 R 中承诺对象的使用和惰性评估”。

RDS与 Python 中的 pickle 类似,是一种用于序列化和保存 R 中数据结构或对象状态的格式,R 是一种用于统计计算、数据可视化和机器学习的开源编程语言。

保存和加载 R 包时也会利用序列化过程(serialize() 或 saveRDS())和反序列化过程(unserialize() 和 readRDS())。

CVE-2024-27322背后的根本原因在于,它在反序列化不受信任的数据时可能导致任意代码执行,从而使用户面临通过特制R包进行的供应链攻击。

因此,想要利用该缺陷的攻击者可以利用 R 包利用 RDS 格式来保存和加载数据的事实,从而在包解压和反序列化时导致自动执行代码。

安全研究人员 Kasimir Schulz 和 Kieran Evans 表示:“R 包很容易受到这种攻击,因此可以通过包存储库用作供应链攻击的一部分。” “对于攻击者来说,要接管R包,他们所需要做的就是用恶意制作的文件覆盖rdx文件,当包加载时,它会自动执行代码。”

经过负责任的披露后,该安全缺陷已在 2024 年 4 月 24 日发布的4.4.0 版本中得到解决。

HiddenLayer 表示:“攻击者可以通过制作 RDS 格式的文件来利用此[缺陷],其中包含将值设置为 unbound_value 的 Promise 指令以及包含任意代码的表达式。” “由于延迟求值,只有在访问与 RDS 文件关联的符号时才会求值并运行表达式。”

“因此,如果这只是一个 RDS 文件,当用户为其分配一个符号(变量)以便使用它时,当用户引用该符号时,将执行任意代码。如果该对象是在 R 包中编译的,该包可以添加到 R 存储库(例如 CRAN)中,当用户加载该包时,将计算表达式并运行任意代码。”

本文转载自:

如若转载,请注明出处: https://hiddenlayer.com/research/r-bitrary-code-execution/

安全客 - 有思想的安全新媒体

分享到:微信
+13赞
收藏
安全客
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66