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