Rust 1.25及更低版本中的Cargo漏洞使其忽略软件包密钥并下载了错误的依赖项


昨天,Rust团队分享了一个Cargo漏洞,混淆了较旧版本的Cargo,使他们忽略了新的软件包重命名功能,并下载了错误的依赖项。 跟踪为CVE-2019-16760的此漏洞通过Rust 1.25影响Rust 1.0。

该漏洞由Elichai Turkel首次报告给Rust团队:

A vulnerability in all cargo versions predating 1.26.
If you're using them please update or patch the code: https://t.co/TBk7sCvI57 https://t.co/VxggW1lfLP

— Elichai Turkel (@Elichai2) September 30, 2019

Rust 1.36 发布,为 Cargo 带来离线支持

Cargo漏洞详细信息

Rust 1.31在“ Cargo.toml”清单文件中引入了用于重命名依赖关系的软件包配置密钥。在Rust 1.25及更低版本中,Cargo忽略其重命名依赖项的用法,并可能最终下载了错误的依赖项。它不仅影响在本地编写的清单,而且还影响发布到crates.io的清单。

“例如,如果您发布的crate依赖于`serde1`到crates.io,那么依赖您的用户在使用Rust 1.25.0及更低版本时也会受到攻击。该团队写道,Rust 1.0.0到Rust 1.25.0受此通报影响,因为Cargo将忽略清单中的“ package”键。

此漏洞不会影响Rust 1.26到Rust 1.30版本,并且会由于软件包密钥在这些版本中不稳定而引发错误。 Rust 1.31及更高版本不受影响,因为Cargo理解软件包的密钥。

缓解此Cargo漏洞的步骤

该团队已经使用发布到crates.io的软件包密钥审核了现有的crate,并且没有检测到此漏洞的任何利用。但是,他们建议受影响版本的用户将其编译器更新为1.26或更高版本。

该团队进一步写道:“我们将不会发布1.26.0之前的Rust版本的补丁程序版本。 Rust 1.19.0到Rust 1.25.0的用户可以改用提供的补丁来缓解此问题。”

阅读Rust团队的官方公告,以详细了解此漏洞。

Rust 1.8发布下载,放弃了Unix系统的Make编译系统

Rust 1.2 稳定版发布下载,Mozilla 编程语言 

为什么我说 Rust 是靠谱的编程语言 

Rust 1.2带来了更快的编译速度和并行代码生成 

Rust 的详细介绍:请点这里
Rust 的下载地址:请点这里

linuxboy的RSS地址:https://www.linuxboy.net/rssFeed.aspx

本文永久更新链接地址:https://www.linuxboy.net/Linux/2019-10/160884.htm

相关内容