CVE-2024-27322,这一编号为8.8 CVSS评分的漏洞,藏匿在R语言的序列化和反序列化流程之中。这一流程,正是RDS(R数据序列化)文件得以创建与加载的重要所在。R,做为一款开源的编程语言,因其强大的数据可视化、设备学习和统计计算能力,在金融、政府、医疗保健等行业的数据分析中占据了一席之地,同期在人工智能和设备学习行业亦颇受欢迎。
R语言独特的序列化格式,使得在保留和加载包时,能够游刃有余。编译包时,会生成一个.rdb文件,其中包括了待序列化的对象;同期,还会生成一个.rdx文件,其中储存了与这些对象及其偏移量关联的元数据。加载包时,RDS格式存储的元数据会从.rdx文件中提取,用以定位.rdb文件中的对象。随后,这些对象会被解压缩和反序列化,就像是将它们重新加载为RDS文件同样。
却因R语言对Promise对象的支持而变得脆弱。Promise对象,是一种特殊的数据结构,它包括了一个符号(变量)和一个附加的表达式。这个表达式有一个特性,那便是它仅有在拜访这个符号时才会运行。这便是所说的惰性求值,即仅在必须的时候才去求解符号的值。
攻击者能够利用这一点,经过创建包括未绑定变量的指令和含有任意代码的表达式来制造恶意的Promise对象。因为惰性求值的特性,仅有当拜访与RDF文件相关的符号时,表达式才会被求值并执行。而当用户引用这个符号时,恶意代码就会被执行。因此呢,没论用户怎样引用变量,只要R语言创建并加载了恶意文件,这个漏洞就会被触发。
readRDS,这一R语言中的函数,被众多研发者视作潜在的攻击入口。据统计,它在超过135,000个R源文件中被频繁引用,犹如一道敞开的门,邀请着恶意的窥视。与此同期,CRAN这个庞大的代码库,虽然宣叫作持有超过20,000个软件包,准许自由上传,却疏于对新上传包的审查,这没疑为安全漏洞的滋生供给了温床。
海量的readRDS函数被用于处理来自不受信任用户的数据。这种不加筛选的信任,如同将系统的安全前门敞开给了潜在的攻击者,一旦恶意代码混入其中,全部系统便可能遭受致命一击。更令人震惊的是,这些易受攻击的代码源头,竟然还触及到R Studio、Facebook、Google、Microsoft、AWS等业界巨头的项目,仿佛一张错综繁杂的安全网被没情撕裂。
想象一下,攻击者只需用一个精心设计的恶意文件,悄悄替换掉原有的.rdx文件。当这个包被加载时,恶意代码便会如同狡猾的狐狸,悄没声息地潜入系统,等待机会发动攻击。更糟糕的是,倘若这些恶意代码被巧妙地移植到系统核心包中,如编译器,那样每次R起步时,这些代码都会如同隐形的黑手,操控着全部系统的命运。
安全漏洞CVE-2024-27322的补丁已然在R Core版本4.4.0中得以修复。这个版本于4月24日做为源代码颁布,随后快速推出了Windows和Mac的二进制文件。各大Linux发行版亦将持续包括这一更新版本,为广大用户筑起一道坚实的安全屏障。返回外链论坛:http://www.fok120.com/,查看更加多
责任编辑:网友投稿
|