公告ID(KYSA-202502-1064)
公告ID:KYSA-202502-1064
公告摘要:rust安全漏洞
等級:重要
發(fā)布日期:2025-02-18
詳細介紹
1.修復的漏洞
·CVE-2022-36113
描述:Cargo 是 Rust 編程語言的包管理器。在下載一個包后,Cargo 會將其源代碼提取到磁盤上的 ~/.cargo 文件夾中,使其可以在構建 Rust 項目時使用。為了記錄提取是否成功,Cargo 會在提取所有文件后在源代碼根目錄的 .cargo-ok 文件中寫入 "ok"。有研究發(fā)現,Cargo 允許包中包含一個 .cargo-ok 符號鏈接,Cargo 會提取這個鏈接。然后,當 Cargo 嘗試向 .cargo-ok 寫入 "ok" 時,實際上會將符號鏈接指向的文件的前兩個字節(jié)替換為 "ok"。這使得攻擊者能夠在使用 Cargo 提取包的機器上破壞一個文件。需要注意的是,Cargo 由于構建腳本和過程宏的設計,允許在構建時執(zhí)行代碼。此安全漏洞使得攻擊者可以以一種更難追蹤的方式執(zhí)行一些攻擊。為了保護自己免受攻擊,必須信任你的依賴項,因為通過構建腳本和過程宏,攻擊者仍然能夠執(zhí)行相同的攻擊。此漏洞存在于所有版本的 Cargo 中。
·CVE-2022-36114
描述:Cargo 是 Rust 編程語言的包管理器。發(fā)現 Cargo 沒有限制從壓縮檔案中提取的數據量。攻擊者可以將一個精心制作的包上傳到一個備用注冊表,該包會提取遠遠超過其實際大小的數據(也叫做 "zip bomb"),從而耗盡使用 Cargo 下載該包的機器上的磁盤空間。需要注意的是,由于構建腳本和過程宏的設計,Cargo 本身允許在構建時執(zhí)行代碼。該安全漏洞使得攻擊者能夠以一種更難追蹤的方式,執(zhí)行可能的部分攻擊。為了保護自己免受攻擊,必須信任你的依賴項,因為攻擊者可以通過構建腳本和過程宏執(zhí)行相同的攻擊。
此漏洞在所有版本的 Cargo 中均存在。
·CVE-2024-24575
描述:libgit2 是一個便攜式的 C 語言實現的 Git 核心方法,提供可鏈接的庫和穩(wěn)定的 API,允許將 Git 功能嵌入到應用程序中。使用精心構造的輸入調用 git_revparse_single 可能導致該函數進入無限循環(huán),從而可能導致調用應用程序發(fā)生拒絕服務攻擊(Denial of Service)。在 src/libgit2/revparse.c 文件中的 revparse 函數使用一個循環(huán)來解析用戶提供的規(guī)范字符串。在解析過程中存在一個邊緣情況,允許惡意行為者強制使循環(huán)條件訪問任意內存。潛在地,如果提取的 rev 規(guī)范被反射回攻擊者,這也可能導致內存泄漏。因此,版本低于 1.4.0 的 libgit2 不受影響。
·CVE-2024-24577
描述:libgit2是Git核心方法的可移植C實現,作為一個具有堅實API的可鏈接庫提供,允許在應用程序中構建Git功能。對“git_index_add”使用精心編制的輸入可能會導致堆損壞,而堆損壞可用于執(zhí)行任意代碼?!皊rc/libgit2/index.c”中的“has_dir_name”函數存在問題,該函數釋放了一個不應釋放的條目。釋放的條目稍后會被使用,并被潛在的不良參與者控制的數據覆蓋,從而導致受控堆損壞。根據使用libgit2的應用程序的不同,這可能導致任意代碼的執(zhí)行。此問題已在1.6.5和1.7.2版本中進行了修補。
2.受影響的軟件包
·銀河麒麟高級服務器操作系統(tǒng) 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.軟件包修復版本
·銀河麒麟高級服務器操作系統(tǒng) 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或以上版本
·銀河麒麟高級服務器操作系統(tǒng) 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.打開軟件包源配置文件,根據倉庫地址進行修改。
倉庫源地址:
銀河麒麟高級服務器操作系統(tǒng) V10 SP2
aarch64:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/
x86_64:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/
2.配置完成后執(zhí)行更新命令進行升級,命令如下:
yum update Packagename
方法二:下載安裝包進行升級安裝
通過軟件包地址下載軟件包,使用軟件包升級命令根據受影響的軟件包
列表進行升級安裝, 命令如下:
yum install Packagename
3.升級完成后是否需要重啟服務或操作系統(tǒng):
CVE-2022-36113:無需重啟操作系統(tǒng)與服務即可使漏洞修復生效。
CVE-2022-36114:無需重啟操作系統(tǒng)與服務即可使漏洞修復生效。
CVE-2024-24575:無需重啟操作系統(tǒng)與服務即可使漏洞修復生效。
CVE-2024-24577:無需重啟操作系統(tǒng)與服務即可使漏洞修復生效。
5.軟件包下載地址
·銀河麒麟高級服務器操作系統(tǒng) V10 SP2
rust(aarch64)軟件包下載地址:
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-debugger-common-1.51.0-6.p01.ky10.noarch.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-src-1.51.0-6.p01.ky10.noarch.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-std-static-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-gdb-1.51.0-6.p01.ky10.noarch.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rustfmt-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/cargo-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-analysis-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-lldb-1.51.0-6.p01.ky10.noarch.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rust-help-1.51.0-6.p01.ky10.aarch64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/aarch64/Packages/rls-1.51.0-6.p01.ky10.aarch64.rpm
https://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)軟件包下載地址:
https://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
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-gdb-1.51.0-6.p01.ky10.noarch.rpm
https://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
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-lldb-1.51.0-6.p01.ky10.noarch.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rust-src-1.51.0-6.p01.ky10.noarch.rpm
https://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
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rustfmt-1.51.0-6.p01.ky10.x86_64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/cargo-1.51.0-6.p01.ky10.x86_64.rpm
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/rls-1.51.0-6.p01.ky10.x86_64.rpm
https://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
https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/updates/x86_64/Packages/clippy-1.51.0-6.p01.ky10.x86_64.rpm
https://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