摘要:
rust security update
安全等级: High
公告ID: KylinSec-SA-2024-3123
发布日期: 2024年7月5日
关联CVE: CVE-2022-36113 CVE-2022-36114
ust是一种系统编程语言,专注于三个目标:安全性、速度和并发性。它在没有垃圾收集器的情况下保持了这些目标,使其成为其他语言不擅长的许多用例的有用语言:嵌入其他语言、具有特定空间和时间要求的程序,以及编写低级代码,如设备驱动程序和操作系统。它改进了当前针对这一领域的语言,通过进行大量编译时安全检查,这些检查不会产生运行时开销,同时消除了所有数据竞争。
安全修复:
Cargo是rust编程语言的包管理器。下载包后,Cargo在磁盘上的~/.cago文件夹中提取其源代码,使其可供其构建的Rust项目使用。为了记录提取成功的时间,Cargo在提取所有文件后,将“ok”写入提取源代码根目录下的.carroad ok文件。人们发现,Cargo允许包裹中包含一个.Cargo-ok符号链接,Cargo将提取该链接。然后,当Cargo试图将“ok”写入.Cargo-ok时,它实际上会将符号链接指向的文件的前两个字节替换为ok。这将允许攻击者使用Cargo提取包来破坏计算机上的一个文件。请注意,由于构建脚本和过程宏,Cargo的设计允许在构建时执行代码。本咨询中的漏洞允许以更难追踪的方式执行可能损害的一个子集。如果你想免受攻击,你的依赖关系仍然必须是可信的,因为使用构建脚本和过程宏也可能执行相同的攻击。该漏洞存在于Cargo的所有版本中。Rust 1.64将于9月22日发布,它将包含一个修复程序。由于该漏洞只是实现恶意构建脚本或过程宏功能的一种更有限的方式,我们决定不发布Rust point版本,对安全修复程序进行反向移植。Rust 1.63.0的补丁文件可在wg安全响应存储库中获得,供人们构建自己的工具链。
缓解措施我们建议替代注册表的用户在下载哪个包时要小心,只在项目中包含受信任的依赖关系。请注意,即使修复了这些漏洞,Cargo的设计也允许在构建时执行任意代码,这要归功于构建脚本和过程宏:无论这些漏洞如何,恶意依赖都会造成损害。crates.io几年前就实施了服务器端检查来拒绝这类包,crates.io上没有利用这些漏洞的包。然而,crates.io用户在选择依赖项时仍需谨慎,因为那里的设计也允许远程代码执行。(CVE-2022-36113)
Cargo是rust编程语言的包管理器。发现Cargo没有限制从压缩档案中提取的数据量。攻击者可以将一个特制的包上传到备用注册表,该包提取的数据远远超过其大小(也称为“zip炸弹”),使用Cargo下载该包会耗尽机器上的磁盘空间。请注意,由于构建脚本和过程宏,Cargo的设计允许在构建时执行代码。本咨询中的漏洞允许以更难追踪的方式执行可能损害的一个子集。如果你想免受攻击,你的依赖关系仍然必须是可信的,因为使用构建脚本和过程宏也可能执行相同的攻击。该漏洞存在于Cargo的所有版本中。Rust 1.64将于9月22日发布,它将包含一个修复程序。由于该漏洞只是实现恶意构建脚本或过程宏功能的一种更有限的方式,我们决定不发布Rust point版本,对安全修复程序进行反向移植。Rust 1.63.0的补丁文件可在wg安全响应存储库中获得,供人们构建自己的工具链。我们建议其他注册表的用户在下载软件包时要小心,只在项目中包含受信任的依赖项。请注意,即使修复了这些漏洞,Cargo的设计也允许在构建时执行任意代码,这要归功于构建脚本和过程宏:无论这些漏洞如何,恶意依赖都会造成损害。crates.io几年前就实施了服务器端检查来拒绝这类包,crates.io上没有利用这些漏洞的包。然而,crates.io用户在选择依赖项时仍需谨慎,因为对构建脚本和过程宏的担忧同样适用于此。(CVE-222-36114)
cve名称 | 产品 | 组件 | 是否受影响 |
---|---|---|---|
CVE-2022-36113 | KY3.5.2 | rust | Fixed |
CVE-2022-36114 | KY3.5.2 | rust | Fixed |
软件名称 | 架构 | 版本号 |
---|---|---|
rust-gdb | noarch | 1.60.0-4.ky3_5 |
rust-lldb | noarch | 1.60.0-4.ky3_5 |
rust-src | noarch | 1.60.0-4.ky3_5 |
cargo | x86_64 | 1.60.0-4.ky3_5 |
clippy | x86_64 | 1.60.0-4.ky3_5 |
rls | x86_64 | 1.60.0-4.ky3_5 |
rust | x86_64 | 1.60.0-4.ky3_5 |
rust-analysis | x86_64 | 1.60.0-4.ky3_5 |
rust-help | x86_64 | 1.60.0-4.ky3_5 |
rust-std-static | x86_64 | 1.60.0-4.ky3_5 |
rustfmt | x86_64 | 1.60.0-4.ky3_5 |
cargo | aarch64 | 1.60.0-4.ky3_5 |
clippy | aarch64 | 1.60.0-4.ky3_5 |
rls | aarch64 | 1.60.0-4.ky3_5 |
rust | aarch64 | 1.60.0-4.ky3_5 |
rust-analysis | aarch64 | 1.60.0-4.ky3_5 |
rust-help | aarch64 | 1.60.0-4.ky3_5 |
rust-std-static | aarch64 | 1.60.0-4.ky3_5 |
rustfmt | aarch64 | 1.60.0-4.ky3_5 |
方法一:下载安装包进行升级安装
1、通过下载链接下载需要升级的升级包保存,如 xxx.rpm
2、通过rpm命令升级,如 rpm -Uvh xxx.rpm
方法二:通过软件源进行升级安装
1、保持能够连接上互联网
2、通过yum命令升级指定的包,如 yum install 包名