AI 安全公司 HiddenLayer 警告称,当加载和引用恶意 RDS 文件时,R 编程语言实现中的漏洞可被利用来执行任意代码,并且可能被用作供应链攻击的一部分。
该漏洞编号为CVE-2024-27322(CVSS 评分为 8.8),是在 R 的序列化和反序列化过程中发现的,该过程用于创建和加载 RDS(R 数据序列化)文件。
R 是一种开源编程语言,支持数据可视化、机器学习和统计计算,广泛用于金融、政府和医疗保健等行业的统计分析,在人工智能和机器学习应用中也很受欢迎。
R 有自己的序列化格式,在保存和加载包时使用。编译包时,将创建一个包含要序列化对象的 .rdb 文件和一个包含与这些对象及其偏移量关联元数据的 .rdx 文件。
“加载包时,.rdx 文件中以 RDS 格式存储的元数据用于定位 .rdb 文件中的对象。然后这些对象被解压缩和反序列化,本质上是将它们加载为 RDS 文件。” HiddenLayer 解释道。
因为 R 支持创建 Promise 对象的指令(该对象具有符号(变量)和附加的表达式,表达式仅在访问符号后运行)和惰性求值(仅在需要时才求值符号的策略)。
攻击者可以使用将变量设置为未绑定值的指令和包含任意代码的表达式来创建 Promise 对象。由于惰性求值,仅当访问与 RDF 文件关联的符号时才求值并运行表达式,并且当用户引用该符号时将执行代码。
“一旦 R 创建并加载恶意文件,无论如何引用变量,漏洞都会运行。”HiddenLayer 继续说道。
详细漏洞报告参考链接:https://hiddenlayer.com/research/r-bitrary-code-execution/
漏洞可用于软件供应链攻击
该安全公司还警告说,由于 RDS 包允许用户与其他人共享编译后的 R 代码,并且由于有大量专用于 R 的 GitHub 存储库,攻击者可能会在针对 R 用户的供应链攻击中滥用此漏洞。
readRDS 是可用于利用该漏洞的 R 函数之一,在超过 135,000 个 R 源文件中被引用,而CRAN的存储库声称拥有超过 20,000 个包并允许任何人上传代码,但不会检查新包这个漏洞。
“通过查看存储库,我们发现大量使用是在不受信任的用户提供的数据上,这可能会导致运行该程序的系统完全受到损害。一些包含潜在易受攻击代码的源文件包括来自 R Studio、Facebook、Google、Microsoft、AWS 和其他主要软件供应商的项目。”HiddenLayer 解释道。
要接管 R 包,攻击者只需用恶意文件覆盖 .rdx 文件,确保包加载后立即自动执行代码。通过修改可能的系统包,例如编译器,恶意代码将在R初始化时执行。
CVE-2024-27322 的补丁包含在 R Core 版本 4.4.0 中,该版本于 4 月 24 日作为源代码发布,随后很快发布了 Windows 和 Mac 二进制文件。更新后的版本也将包含在各种 Linux 发行版中。 参考链接:https://www.securityweek.com/vulnerability-in-r-programming-language-enables-supply-chain-attacks/
转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/389656.html