本發(fā)明涉及一種基于linux?capability機(jī)制防usermode?helper提權(quán)攻擊的方法,屬于系統(tǒng)安全領(lǐng)域。
背景技術(shù):
1、在linux系統(tǒng)中,進(jìn)程通常具有兩種權(quán)限:普通用戶權(quán)限和root用戶權(quán)限。普通用戶無(wú)法執(zhí)行涉及敏感信息的操作,而root用戶具有最高權(quán)限則可以執(zhí)行不受限制的操作。攻擊者若能非法提升權(quán)限,便能進(jìn)一步獲取敏感信息、執(zhí)行任意代碼,進(jìn)而對(duì)系統(tǒng)造成嚴(yán)重威脅。由于linux系統(tǒng)廣泛應(yīng)用于web服務(wù)器、數(shù)據(jù)庫(kù)、防火墻、物聯(lián)網(wǎng)(iot)等關(guān)鍵基礎(chǔ)設(shè)施,防范提權(quán)攻擊對(duì)保護(hù)這些基礎(chǔ)設(shè)施的安全至關(guān)重要。
2、usermode?helper是一組幫助內(nèi)核在用戶態(tài)完成特定任務(wù)的二進(jìn)制程序,包括加載內(nèi)核模塊、處理usb設(shè)備事件、重啟系統(tǒng)等。盡管這些程序運(yùn)行在用戶態(tài),但只有root用戶才能對(duì)其進(jìn)行修改。在特定事件發(fā)生時(shí),內(nèi)核會(huì)使用最高權(quán)限(root)調(diào)用相應(yīng)的usermodehelper程序,以保證這些程序在執(zhí)行期間有必要的權(quán)限。因此,在usermode?helper的正常執(zhí)行流程中,程序的執(zhí)行者是高權(quán)限,程序本身也是高權(quán)限,不存在權(quán)限泄露問(wèn)題。
3、linux?capability是一種細(xì)粒度的權(quán)限機(jī)制,它將root權(quán)限分成了41份,每個(gè)capability代表了訪問(wèn)一組特權(quán)操作的能力。capability是進(jìn)程的一個(gè)屬性,內(nèi)核在執(zhí)行敏感操作前,會(huì)檢查請(qǐng)求訪問(wèn)的進(jìn)程是否具備所需的capability。在授予進(jìn)程capability時(shí),除了可以直接修改當(dāng)前進(jìn)程的capability,還可以將capability賦予可執(zhí)行文件,當(dāng)該文件運(yùn)行時(shí),將自動(dòng)獲得相應(yīng)的capability。
4、提權(quán)攻擊主要通過(guò)利用內(nèi)核漏洞來(lái)提升權(quán)限。傳統(tǒng)攻擊的目標(biāo)是進(jìn)程的權(quán)限數(shù)據(jù),通常通過(guò)緩沖區(qū)溢出或釋放后使用等漏洞獲取內(nèi)核代碼執(zhí)行權(quán)限,從而改變內(nèi)核原本控制流,將權(quán)限數(shù)據(jù)篡改為更高的權(quán)限。然而,由于內(nèi)核代碼的復(fù)雜性,完全消除內(nèi)核漏洞是不現(xiàn)實(shí)的。因此,現(xiàn)有防御技術(shù)通過(guò)保護(hù)進(jìn)程的權(quán)限數(shù)據(jù)。比如限制對(duì)進(jìn)程權(quán)限數(shù)據(jù)的訪問(wèn),對(duì)權(quán)限數(shù)據(jù)進(jìn)行監(jiān)測(cè),以阻止非法篡改。然而,攻擊與防御手段始終在不斷演變,最近出現(xiàn)了一種利用usermode?helper的新型提權(quán)攻擊方式,無(wú)需修改當(dāng)前進(jìn)程的權(quán)限數(shù)據(jù),即可實(shí)現(xiàn)以高權(quán)限執(zhí)行任意代碼的效果。
5、對(duì)新型提權(quán)攻擊進(jìn)行了詳細(xì)分析,從現(xiàn)有的攻擊案例中總結(jié)出,這種攻擊方式實(shí)際上是利用了內(nèi)核執(zhí)行usermode?helper程序的正常流程。usermode?helper是一類用戶態(tài)程序,在需要時(shí)被內(nèi)核以最高權(quán)限調(diào)用,為內(nèi)核提供支持。攻擊者通過(guò)內(nèi)核漏洞,在內(nèi)核執(zhí)行usermode?helper之前,覆寫(xiě)該程序的路徑為惡意程序的路徑。于是,當(dāng)內(nèi)核以高權(quán)限執(zhí)行用戶態(tài)程序時(shí),調(diào)用的將不再是系統(tǒng)原本的usermode?helper程序,而是攻擊者預(yù)先準(zhǔn)備的惡意程序。由于攻擊者準(zhǔn)備的惡意程序原本不具有高權(quán)限,這就導(dǎo)致了以高權(quán)限執(zhí)行不可信程序的現(xiàn)象,最終使攻擊者完成了提權(quán)攻擊。由此可見(jiàn),提權(quán)攻擊得逞的關(guān)鍵在于內(nèi)核在執(zhí)行usermode?helper程序前未對(duì)該程序的可信性進(jìn)行檢查。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在提出一種輕量級(jí)的提權(quán)攻擊防御方法,彌補(bǔ)當(dāng)前防御方法中的“盲區(qū)”。本方案首先對(duì)新型提權(quán)攻擊的原理進(jìn)行了深入分析,明確了usermode?helper在提權(quán)攻擊中發(fā)揮作用的核心原因,繼而提出了一種基于linux?capability機(jī)制的防御方法。本方法無(wú)需硬件支持,開(kāi)銷極低,靈活性高,能夠有效防止新型提權(quán)攻擊。
2、一種基于linux?capability機(jī)制防usermode?helper提權(quán)攻擊方法,包括:
3、獲取所有usermode?helper的調(diào)用函數(shù);
4、基于所述調(diào)用函數(shù)構(gòu)造函數(shù)調(diào)用圖;
5、基于所述函數(shù)調(diào)用圖生成函數(shù)調(diào)用鏈,確定添加權(quán)限檢查的位置,并添加權(quán)限檢查;
6、在內(nèi)核態(tài)的頭文件中添加新的capability的定義,在用戶態(tài)為所有的usermodehelper授予所述新的capability;
7、在執(zhí)行任一usermode?helper前檢查其權(quán)限,以確定所述usermode?helper是否可以被調(diào)用。
8、優(yōu)選的,所述usermode?helper的調(diào)用函數(shù),包括:
9、基礎(chǔ)的usermode?helper的調(diào)用函數(shù);
10、從所述基礎(chǔ)的usermode?helper的調(diào)用函數(shù)被使用的位置出發(fā),尋找得到的其余的usermode?helper的調(diào)用函數(shù)。
11、優(yōu)選的,通過(guò)所述函數(shù)調(diào)用鏈,得到所有usermode?helper的調(diào)用函數(shù)最后都會(huì)執(zhí)行到的處于最終調(diào)用點(diǎn)的函數(shù);所述添加權(quán)限的位置在所述處于最終調(diào)用點(diǎn)的函數(shù)入口處,且在執(zhí)行usermode?helper之前。
12、優(yōu)選的,將所有usermode?helper加入白名單。
13、優(yōu)選的,所述將所有usermode?helper加入白名單,包括:
14、提取所述所有usermode?helper的調(diào)用函數(shù)的路徑參數(shù)具體值,保存所述具體值加入白名單。
15、優(yōu)選的,對(duì)于新的usermode?helper,在其啟用之前提前授予其所述新的capability。
16、一種基于linux?capability機(jī)制防usermode?helper提權(quán)攻擊系統(tǒng),包括:確定位置模塊、添加權(quán)限模塊和權(quán)限檢查模塊;
17、所述確定位置模塊用以獲取所有usermode?helper的調(diào)用函數(shù);基于所述調(diào)用函數(shù)構(gòu)造函數(shù)調(diào)用圖;基于所述函數(shù)調(diào)用圖生成函數(shù)調(diào)用鏈,確定添加權(quán)限檢查的位置,并添加權(quán)限檢查;
18、所述添加權(quán)限模塊用以在內(nèi)核態(tài)的頭文件中添加新的capability的定義,在用戶態(tài)為所有的usermode?helper授予所述新的capability;
19、所述權(quán)限檢查模塊用以在執(zhí)行任一usermode?helper前檢查其權(quán)限,以確定所述usermode?helper是否可以被調(diào)用。
20、優(yōu)選的,所述系統(tǒng)還包括系統(tǒng)適配模塊,所述系統(tǒng)適配模塊用以對(duì)于新的usermode?helper,在其啟用之前提前授予其所述新的capability。
21、本發(fā)明的有益效果如下:
22、采用本發(fā)明提供的提權(quán)攻擊防御方法,無(wú)需額外硬件支持,僅需對(duì)linux內(nèi)核代碼進(jìn)行少量改動(dòng),巧妙的利用現(xiàn)有的capability權(quán)限,有效的阻擋了當(dāng)前流行的利用usermode?helper進(jìn)行的新型提權(quán)攻擊。本發(fā)明填補(bǔ)了對(duì)新型提權(quán)攻擊的防御空白,并且性能開(kāi)銷極低,幾乎可以忽略不計(jì)。
1.一種基于linux?capability機(jī)制防usermode?helper提權(quán)攻擊方法,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述usermode?helper的調(diào)用函數(shù),包括:
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過(guò)所述函數(shù)調(diào)用鏈,得到所有usermodehelper的調(diào)用函數(shù)最后都會(huì)執(zhí)行到的處于最終調(diào)用點(diǎn)的函數(shù);
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所有usermode?helper加入白名單。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將所有usermode?helper加入白名單,包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,對(duì)于新的usermode?helper,在其啟用之前提前授予其所述新的capability。
7.一種基于linux?capability機(jī)制防usermode?helper提權(quán)攻擊系統(tǒng),包括:確定位置模塊、添加權(quán)限模塊和權(quán)限檢查模塊;
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括系統(tǒng)適配模塊,所述系統(tǒng)適配模塊用以對(duì)于新的usermode?helper,在其啟用之前提前授予其所述新的capability。
9.一種電子裝置,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被配置為由所述處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行權(quán)利要求1~8中任一項(xiàng)所述方法的指令。
10.一種存儲(chǔ)介質(zhì),存儲(chǔ)計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被計(jì)算機(jī)執(zhí)行時(shí),實(shí)現(xiàn)權(quán)利要求1~8中任一項(xiàng)所述的方法。