开源编程语言 R 曝光存在 8.8 分代码执行漏洞 CVE-2024-27322,可引发供应链攻击

5 月 4 日消息,安全公司 HiddenLayer 近日发现开源编程语言 R 存在一项允许黑客执行恶意代码的重大漏洞 CVE-2024-27322。该漏洞风险评级为 8.8 分,允许恶意文件在反序列化时执行任意代码。如果相关代码牵涉到软件包,则可能引发供应链攻击。

注:序列化是将对象转化为可传输的字节序列过程,而反序列化便是将字节序列重新转换为对象的过程,序列化和反序列化通常发生在数据存储和网络传输过程中,例如从软件包库下载软件包便涉及反序列化。

据悉,R 语言使用 RDS 文件格式进行序列化数据的存储或传输,其中 RDS 格式包括 .rdb 文件和.rdx 文件。R 程序运行过程中使用 readRDS 函数从软件包库中读取这两种文件,然后使用 eva1 函数判断文件中表达式(expression)的值,以便反序列化 RDS 文件中的对象。

研究人员指出,CVE-2024-27322 涉及到 R 程序的序列化 / 反序列化过程中利用 promise 对象和惰性求值(lazy evaluation)。在反序列化加载 RDS 文件或软件包时,由于 R 支持惰性求值,未能及时检查 RDS 文件中的 promise 对象的指令值。因此黑客可以创建包含特定指令值的 RDS 文件,然后通过钓鱼手法诱使用户下载打开文件,进而发动攻击。研究人员指出,一旦黑客悄悄替换了原始的.rdx 或.rdb 文件,就可以利用相关软件包发动供应链攻击。

注意到,目前 R 语言开发团队已经发布了新版本 R Core Version 4.4.0 来解决这个漏洞,安全公司也呼吁开发人员尽快更新。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平