IT之家 9 月 19 日消息,近年來(lái),Rust 重構(gòu)的熱潮席卷整個(gè)開(kāi)發(fā)圈,Rust 在安全性、高效性和可維護(hù)性等方面都有一定優(yōu)勢(shì),包括 Windows、Linux 內(nèi)核也帶來(lái)了 Rust 支持。
統(tǒng)信軟件今日宣布,統(tǒng)信 UOS 服務(wù)器版將于不久后推出 Rust 版 Bash,名為 utshell,旨在突破傳統(tǒng) Shell 所面臨的安全局限。
IT之家注:Bash 是一種廣泛應(yīng)用于各種 Unix 和 Linux 系統(tǒng)的 Shell 程序,是 Bourne shell 的后繼兼容版本與開(kāi)放源代碼版本。
統(tǒng)信軟件表示,在 Bash 中,有一些命令沒(méi)有對(duì)參數(shù)進(jìn)行防篡改檢查,因而給系統(tǒng)帶來(lái)了安全風(fēng)險(xiǎn)。
例如,alias 命令允許用戶為其他命令或命令序列創(chuàng)建別名,然而它并未對(duì)參數(shù)進(jìn)行防篡改檢查,進(jìn)而導(dǎo)致未經(jīng)檢查的參數(shù)可能會(huì)被利用來(lái)執(zhí)行惡意代碼或進(jìn)行未經(jīng)授權(quán)的操作。
為了應(yīng)對(duì)上述問(wèn)題,utshell 對(duì) alias 命令的規(guī)則進(jìn)行了明確界定,目的在于確保使用的便捷性,并且能夠有效地防止命令被惡意篡改,從而限制惡意行為或誤操作的發(fā)生。
當(dāng)別名和 $PATH 下可執(zhí)行文件重名時(shí),只允許別名和可執(zhí)行文件一致。例如,如果我們想要?jiǎng)?chuàng)建一個(gè)別名“l(fā)s”,那么與之對(duì)應(yīng)的可執(zhí)行命令也必須是“l(fā)s”,且允許在命令中添加參數(shù),以便用戶可以根據(jù)自己的需求對(duì)命令進(jìn)行個(gè)性化制定。
別名不能與其他別名、函數(shù)名稱發(fā)生重名,以避免在使用別名時(shí)出現(xiàn)二義性,進(jìn)而更好地確保操作系統(tǒng)能夠正確理解用戶的指令,避免混淆和誤解。
不僅僅限于 alias 命令,utshell 還對(duì)所有命令進(jìn)行了檢查,并對(duì)那些可能受到惡意篡改威脅的命令進(jìn)行了規(guī)則的優(yōu)化處理,如 hash 和 function 命令等。
在 Bash 中,mapfile 命令是用于對(duì)數(shù)組進(jìn)行賦值的工具,但它并沒(méi)有對(duì)數(shù)組的越界情況進(jìn)行有效的檢查和控制。當(dāng)用戶輸入的參數(shù)數(shù)量超過(guò)數(shù)組容量時(shí),溢出部分可能會(huì)被誤當(dāng)作命令來(lái)執(zhí)行,從而引發(fā)潛在的安全隱患。
為了避免上述情況的發(fā)生,utshell 采取了對(duì)數(shù)組邊界的判斷措施。例如,當(dāng)傳入的參數(shù)過(guò)多時(shí),自動(dòng)截?cái)嗷蚪o出警示等,從而保證只有合法、預(yù)期的參數(shù)才能被傳遞給 mapfile 命令。
此外,通過(guò)使用 Rust 重構(gòu) Bash,utshell 不僅能繼承 Rust 的“源生”安全性,還能在代碼層面實(shí)現(xiàn)更高的自主可控性,從而提升系統(tǒng)的安全性和可靠性。
6 月初,統(tǒng)信 UOS 服務(wù)器版 V20(1060)已集成了 utshell 的部分功能,為即將發(fā)布的完整版 utshell 提供了初步體驗(yàn)。IT之家附下載地址:
deepin 社區(qū)地址:
https://github.com/linuxdeepin/utshell
歐拉社區(qū)地址:
https://gitee.com/openeuler/utshell
龍蜥社區(qū)地址:
https://gitee.com/anolis/utshell
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。