公告ID(KYSA-202502-1064)
公告ID:KYSA-202502-1064
公告摘要:rust安全漏洞
等级:重要
发布日期:2025-02-18
详细介绍
1.修复的漏洞
·CVE-2022-36113
描述:Cargo 是 Rust 编程语言的包管理器。在下载一个包后,Cargo 会将其源代码提取到磁盘上的 ~/.cargo 文件夹中,使其可以在构建 Rust 项目时使用。为了记录提取是否成功,Cargo 会在提取所有文件后在源代码根目录的 .cargo-ok 文件中写入 "ok"。有研究发现,Cargo 允许包中包含一个 .cargo-ok 符号链接,Cargo 会提取这个链接。然后,当 Cargo 尝试向 .cargo-ok 写入 "ok" 时,实际上会将符号链接指向的文件的前两个字节替换为 "ok"。这使得攻击者能够在使用 Cargo 提取包的机器上破坏一个文件。需要注意的是,Cargo 由于构建脚本和过程宏的设计,允许在构建时执行代码。此安全漏洞使得攻击者可以以一种更难追踪的方式执行一些攻击。为了保护自己免受攻击,必须信任你的依赖项,因为通过构建脚本和过程宏,攻击者仍然能够执行相同的攻击。此漏洞存在于所有版本的 Cargo 中。
·CVE-2022-36114
描述:Cargo 是 Rust 编程语言的包管理器。发现 Cargo 没有限制从压缩档案中提取的数据量。攻击者可以将一个精心制作的包上传到一个备用注册表,该包会提取远远超过其实际大小的数据(也叫做 "zip bomb"),从而耗尽使用 Cargo 下载该包的机器上的磁盘空间。需要注意的是,由于构建脚本和过程宏的设计,Cargo 本身允许在构建时执行代码。该安全漏洞使得攻击者能够以一种更难追踪的方式,执行可能的部分攻击。为了保护自己免受攻击,必须信任你的依赖项,因为攻击者可以通过构建脚本和过程宏执行相同的攻击。
此漏洞在所有版本的 Cargo 中均存在。
·CVE-2024-24575
描述:libgit2 是一个便携式的 C 语言实现的 Git 核心方法,提供可链接的库和稳定的 API,允许将 Git 功能嵌入到应用程序中。使用精心构造的输入调用 git_revparse_single 可能导致该函数进入无限循环,从而可能导致调用应用程序发生拒绝服务攻击(Denial of Service)。在 src/libgit2/revparse.c 文件中的 revparse 函数使用一个循环来解析用户提供的规范字符串。在解析过程中存在一个边缘情况,允许恶意行为者强制使循环条件访问任意内存。潜在地,如果提取的 rev 规范被反射回攻击者,这也可能导致内存泄漏。因此,版本低于 1.4.0 的 libgit2 不受影响。
·CVE-2024-24577
描述:libgit2是Git核心方法的可移植C实现,作为一个具有坚实API的可链接库提供,允许在应用程序中构建Git功能。对“git_index_add”使用精心编制的输入可能会导致堆损坏,而堆损坏可用于执行任意代码。“src/libgit2/index.c”中的“has_dir_name”函数存在问题,该函数释放了一个不应释放的条目。释放的条目稍后会被使用,并被潜在的不良参与者控制的数据覆盖,从而导致受控堆损坏。根据使用libgit2的应用程序的不同,这可能导致任意代码的执行。此问题已在1.6.5和1.7.2版本中进行了修补。
2.受影响的软件包
·银河麒麟高级服务器操作系统 V10 SP2
·aarch64架构:
rustfmt、rust-std-static、rust-gdb、cargo、rls、clippy、rust-analysis、rust-src、rust-lldb、rust-help、rust、rust-debugger-common
·x86_64架构:
rustfmt、rust-std-static、rust-gdb、cargo、rls、clippy、rust-analysis、rust、rust-src、rust-lldb、rust-help、rust-debugger-common
3.软件包修复版本
·银河麒麟高级服务器操作系统 V10 SP2 (aarch64)
cargo-1.51.0-6.p01.ky10或以上版本
rust-lldb-1.51.0-6.p01.ky10或以上版本
clippy-1.51.0-6.p01.ky10或以上版本
rustfmt-1.51.0-6.p01.ky10或以上版本
rust-analysis-1.51.0-6.p01.ky10或以上版本
rust-1.51.0-6.p01.ky10或以上版本
rust-gdb-1.51.0-6.p01.ky10或以上版本
rust-help-1.51.0-6.p01.ky10或以上版本
rust-src-1.51.0-6.p01.ky10或以上版本
rust-std-static-1.51.0-6.p01.ky10或以上版本
rust-debugger-common-1.51.0-6.p01.ky10或以上版本
rls-1.51.0-6.p01.ky10或以上版本
·银河麒麟高级服务器操作系统 V10 SP2 (x86_64)
rust-lldb-1.51.0-6.p01.ky10或以上版本
cargo-1.51.0-6.p01.ky10或以上版本
clippy-1.51.0-6.p01.ky10或以上版本
rustfmt-1.51.0-6.p01.ky10或以上版本
rust-analysis-1.51.0-6.p01.ky10或以上版本
rust-gdb-1.51.0-6.p01.ky10或以上版本
rust-1.51.0-6.p01.ky10或以上版本
rust-help-1.51.0-6.p01.ky10或以上版本
rust-src-1.51.0-6.p01.ky10或以上版本
rust-std-static-1.51.0-6.p01.ky10或以上版本
rust-debugger-common-1.51.0-6.p01.ky10或以上版本
rls-1.51.0-6.p01.ky10或以上版本
4.修复方法
方法一:配置源进行升级安装
1.打开软件包源配置文件,根据仓库地址进行修改。
仓库源地址:
银河麒麟高级服务器操作系统 V10 SP2
aarch64:http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/
x86_64:http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/
2.配置完成后执行更新命令进行升级,命令如下:
yum update Packagename
方法二:下载安装包进行升级安装
通过软件包地址下载软件包,使用软件包升级命令根据受影响的软件包
列表进行升级安装, 命令如下:
yum install Packagename
3.升级完成后是否需要重启服务或操作系统:
CVE-2022-36113:无需重启操作系统与服务即可使漏洞修复生效。
CVE-2022-36114:无需重启操作系统与服务即可使漏洞修复生效。
CVE-2024-24575:无需重启操作系统与服务即可使漏洞修复生效。
CVE-2024-24577:无需重启操作系统与服务即可使漏洞修复生效。
5.软件包下载地址
·银河麒麟高级服务器操作系统 V10 SP2
rust(aarch64)软件包下载地址:
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-debugger-common-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-src-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-std-static-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-gdb-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rustfmt-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/cargo-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-analysis-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-lldb-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-help-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rls-1.51.0-6.p01.ky10.aarch64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/clippy-1.51.0-6.p01.ky10.aarch64.rpm
rust(x86_64)软件包下载地址:
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-debugger-common-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-gdb-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-help-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-lldb-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-src-1.51.0-6.p01.ky10.noarch.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-std-static-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rustfmt-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/cargo-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rls-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-analysis-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/clippy-1.51.0-6.p01.ky10.x86_64.rpm
http://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-1.51.0-6.p01.ky10.x86_64.rpm
注:其他相关依赖包请到相同目录下载
6.修复验证
使用软件包查询命令,查看相关软件包版本是否与修复版本一致,如果版本一致,则说明修复成功。
sudo rpm -qa | grep Packagename