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

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

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

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

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

相关文章