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