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

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)中,当用户加载该包时,将计算表达式并运行任意代码。”

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐