一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法
【專利摘要】一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法,涉及信息安全領(lǐng)域,提高地址空間隨機(jī)化分配范圍,從而提高操作系統(tǒng)隨機(jī)化的安全性。操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),包括用戶空間層和內(nèi)核空間層。所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器、全局隨機(jī)化管理策略模塊、隨機(jī)事件采集模塊。所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊、虛擬文件系統(tǒng)管理模塊、管理策略解析模塊、隨機(jī)化因子生成模塊、地址空間隨機(jī)化分配模塊。操作系統(tǒng)地址空間隨機(jī)化分配方法,用于操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)。所述分配系統(tǒng)及方法同樣適用于目前國產(chǎn)龍芯處理器平臺。
【專利說明】一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全領(lǐng)域,特別涉及一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法。
【背景技術(shù)】
[0002]計算機(jī)是信息存儲和處理的基礎(chǔ)設(shè)施,然而基于設(shè)計復(fù)雜性和實(shí)現(xiàn)的成本因素考慮,用于存儲和處理信息的計算機(jī)并不安全。引起計算機(jī)不安全的主要因素包括:①缺乏專門為安全需求而設(shè)計的硬件操作系統(tǒng)從設(shè)計之初就沒有考慮安全機(jī)制;③計算機(jī)語言天生的缺陷,如C語言所引入的緩沖區(qū)溢出安全隱患。這些因素的存在會給計算機(jī)系統(tǒng)帶來不同層次的安全漏洞,給惡意軟件留下可乘之機(jī)。如目前惡意軟件猖獗,網(wǎng)絡(luò)攻擊不斷,存儲和處理信息的IT基礎(chǔ)設(shè)施或多或少地受到病毒感染和攻擊,計算機(jī)的安全運(yùn)行和存儲在其中的數(shù)據(jù)安全必然受到威脅。
[0003]計算機(jī)安全的威脅主要來源于緩沖區(qū)溢出漏洞,內(nèi)存管理的安全性是計算機(jī)安全的核心,這是因?yàn)榇蟛糠值陌踩┒磁c內(nèi)存管理相關(guān)。如廣泛流行的拒絕服務(wù)攻擊(DoS)、敏感數(shù)據(jù)竊取和獲取超級用戶權(quán)限等攻擊的深層原因都與系統(tǒng)缺乏安全的內(nèi)存管理相關(guān)。從CVE2012Linux內(nèi)核漏洞數(shù)據(jù)庫來看,80%漏洞與堆棧緩沖區(qū)溢出、惡意代碼執(zhí)行、空指針引用、內(nèi)存崩潰、指針和函數(shù)參數(shù)安全檢查缺失有關(guān)。再者廣泛使用的C語言并不是安全的計算機(jī)語言,對象的長度不做安全檢查,并且大量使用指針,同時指針的不正確使用會給代碼帶來安全隱患。Linux操作系統(tǒng)大部分代碼由C語言完成,與其他應(yīng)用程序一樣,同樣存在緩沖區(qū)溢出安全隱患。目前緩沖區(qū)溢出漏洞依然是威脅計算機(jī)安全的第一威脅。從CVE2012Linux內(nèi)核漏洞數(shù)據(jù)庫來看,由緩沖區(qū)溢出直接引發(fā)的漏洞就占30%,其他形式的漏洞大部分也是由緩沖區(qū)溢出引發(fā)。緩沖區(qū)溢出漏洞攻擊通過局部變量緩沖區(qū)溢出覆蓋棧幀的返回地址,篡改棧幀內(nèi)容植入惡意代碼(如殼代碼(shellcode))并使之運(yùn)行。近年來計算機(jī)安全引起廣泛重視,開始設(shè)計和實(shí)現(xiàn)有一定安全功能的硬件和軟件設(shè)施。硬件技術(shù)如處理器支持不可執(zhí)行的NX位和相應(yīng)的頁表管理機(jī)制;軟件技術(shù)如編譯器增加防范緩沖區(qū)溢出的堆棧保護(hù)(StackGuard)等技術(shù)。這兩項(xiàng)技術(shù)能比較有效防范和阻止利用緩沖區(qū)溢出漏洞植入惡意代碼并使之執(zhí)行的攻擊。然而安全技術(shù)與黑客漏洞利用攻擊是相互博弈的過程,出現(xiàn)了緩沖區(qū)溢出的變種攻擊。返回庫函數(shù)(return-to-libc)攻擊是緩沖區(qū)溢出的變種攻擊的典型代表,它不需要在棧中植入惡意代碼和在棧中執(zhí)行,所以NX技術(shù)和編譯器的棧保護(hù)技術(shù)對它是無效的。程序一般都會鏈接C函數(shù)庫,即libc。return-to-libc緩沖區(qū)溢出攻擊不需要在函數(shù)棧區(qū)植入代碼,只需修改棧幀返回地址的內(nèi)容,使其指向不安全的系統(tǒng)庫函數(shù)。如Iibc中系統(tǒng)(system)函數(shù)只需要給它一個參數(shù)就可以執(zhí)行外部代碼,例如“/bin/sh”,攻擊者利用庫函數(shù)的漏洞進(jìn)行攻擊。return-to-libc的成功率依賴于系統(tǒng)地址空間的固定分配,漏洞利用者能比較容易地猜測出目標(biāo)系統(tǒng)的庫函數(shù)入口地址,從而能有效地實(shí)施return-to-libc攻擊。如果系統(tǒng)放棄原有的地址空間固定分配方式,而采用地址空間隨機(jī)化分配策略,能有效阻止return-to-libc攻擊,因?yàn)橄到y(tǒng)隨機(jī)映射庫函數(shù)的地址空間提高了攻擊者探測庫函數(shù)的地址的難度,在64位系統(tǒng)中幾乎探測不出,能有效防范該類緩沖區(qū)變種攻擊。
[0004]目前,x86通用平臺的windows和Linux操作系統(tǒng)也支持地址空間隨機(jī)化分配功能。但現(xiàn)有的地址空間隨機(jī)化分配方式存在比較多的問題,如:①目前的隨機(jī)化分配范圍比較有限,10幾位的隨機(jī)范圍,攻擊者采用暴力猜測辦法容易猜測出隨機(jī)化分配后的地址空間分布情況。②隨機(jī)數(shù)產(chǎn)生算法只與時鐘相關(guān),不夠安全。目前系統(tǒng)的隨機(jī)化分配的隨機(jī)數(shù)產(chǎn)生算法依賴于系統(tǒng)的庫函數(shù)(random函數(shù)),而該函數(shù)的算法是根據(jù)系統(tǒng)的時鐘值來產(chǎn)生隨機(jī)數(shù),攻擊者若獲取目標(biāo)系統(tǒng)的時鐘值就容易猜測出目標(biāo)應(yīng)用的地址空間隨機(jī)化分配后的布局而實(shí)施return-to-libc攻擊。③不夠靈活,系統(tǒng)要么選擇開啟地址空間隨機(jī)化分配功能,即系統(tǒng)所有進(jìn)程都采取隨機(jī)化分配方式,要么關(guān)閉該功能,用戶不能根據(jù)應(yīng)用的安全需求自主選擇開啟和關(guān)閉隨機(jī)化分配功能;地址空間包括:棧地址空間、堆地址空間和內(nèi)存映射(_ap)地址空間,目前的隨機(jī)化分配方式也不能根據(jù)具體的安全需求獨(dú)立配置這三個地址空間是否采取隨機(jī)化分配方式。④目前國產(chǎn)龍芯處理器平臺的Linux操作系統(tǒng)還缺乏功能完善的地址空間隨機(jī)化分配功能的支持。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問題是提供一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法,提高地址空間隨機(jī)化分配范圍,從而提高操作系統(tǒng)隨機(jī)化的安全性。
[0006]為了解決上述問題,本發(fā)明提供了一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),包括用戶空間層和內(nèi)核空間層,
[0007]所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器、全局隨機(jī)化管理策略模塊、隨機(jī)事件采集模塊;
[0008]所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊、虛擬文件系統(tǒng)管理模塊、管理策略解析模塊、隨機(jī)化因子生成模塊、地址空間隨機(jī)化分配模塊;
[0009]所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器用于:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略;
[0010]所述全局隨機(jī)化管理策略模塊用于:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局??臻g隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略以輸出至所述虛擬文件系統(tǒng)管理模塊;
[0011]所述隨機(jī)事件采集模塊用于:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊;
[0012]所述可執(zhí)行程序加載模塊用于:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊;[0013]所述虛擬文件系統(tǒng)管理模塊:注冊有虛擬文件系統(tǒng),其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置;用于對虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊;
[0014]所述管理策略解析模塊用于:對來自所述可執(zhí)行程序加載模塊的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊;
[0015]所述隨機(jī)化因子生成模塊用于:根據(jù)來自所述隨機(jī)事件采集模塊的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),并對所述隨機(jī)數(shù)執(zhí)行230模運(yùn)算來獲得隨機(jī)化因子,以用于在所述地址空間隨機(jī)化分配模塊執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊;以及
[0016]所述地址空間隨機(jī)化分配模塊用于:根據(jù)來自所述管理策略解析模塊的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
[0017]進(jìn)一步地,所述可執(zhí)行文件或動態(tài)庫文件中具有用于存放所述局部隨機(jī)化管理策略的程序段頭。
[0018]進(jìn)一步地,所述可執(zhí)行程序加載模塊用于對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析包括:
[0019]所述可執(zhí)行程序加載模塊對所述可執(zhí)行文件或動態(tài)庫文件中的程序段頭進(jìn)行解析以提取出所述局部隨機(jī)化管理策略。
[0020]進(jìn)一步地,所述局部隨機(jī)化管理策略包括:局部??臻g隨機(jī)化分配策略、局部堆空間隨機(jī)化分配策略以及局部內(nèi)存映射空間隨機(jī)化分配策略。
[0021]進(jìn)一步地,所述管理策略解析模塊通過如下步驟對所述局部隨機(jī)化管理策略和所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略:
[0022]全局強(qiáng)制判斷步驟:判斷所述全局地址空間隨機(jī)化分配強(qiáng)制策略是否開啟,如果是,則使所述操作系統(tǒng)的所有進(jìn)程都實(shí)施??臻g隨機(jī)化分配、堆空間隨機(jī)化分配以及內(nèi)存映射空間隨機(jī)化分配,否則進(jìn)入全局棧判斷步驟、全局堆判斷步驟以及全局內(nèi)存映射判斷步驟;
[0023]全局棧判斷步驟:判斷所述全局棧空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部棧判斷步驟,否則使??臻g正常分配;
[0024]局部棧判斷步驟:判斷所述局部??臻g隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的棧空間實(shí)施隨機(jī)化分配,否則使棧空間正常分配;
[0025]全局堆判斷步驟:判斷所述全局堆空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部堆判斷步驟,否則使堆空間正常分配;[0026]局部堆判斷步驟:判斷所述局部堆空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的堆空間實(shí)施隨機(jī)化分配,否則使堆空間正常分配;
[0027]全局內(nèi)存映射判斷步驟:判斷所述全局內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部內(nèi)存映射判斷步驟,否則使內(nèi)存映射空間正常分配;以及
[0028]局部內(nèi)存映射判斷步驟:判斷所述局部內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的內(nèi)存映射空間實(shí)施隨機(jī)化分配,否則使內(nèi)存映射空間正常分配。
[0029]進(jìn)一步地,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟或關(guān)閉所述全局??臻g隨機(jī)化分配策略、開啟或關(guān)閉所述全局堆空間隨機(jī)化分配策略以及開啟或關(guān)閉所述全局內(nèi)存映射空間隨機(jī)化分配策略。
[0030]進(jìn)一步地,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟所述全局棧空間隨機(jī)化分配策略、開啟所述全局堆空間隨機(jī)化分配策略以及開啟所述全局內(nèi)存映射空間隨機(jī)化分配策略。
[0031]進(jìn)一步地,所述??臻g隨機(jī)化地址=固定分配地址-隨機(jī)化因子;以及
[0032]所述堆空間隨機(jī)化地址和所述內(nèi)存映射空間隨機(jī)化地址分別=固定分配地址+隨機(jī)化因子。
[0033]進(jìn)一步地,所述操作系統(tǒng)是Linux操作系統(tǒng)。
[0034]進(jìn)一步地,所述可執(zhí)行程序采用elf格式。
[0035]進(jìn)一步地,所述虛擬文件系統(tǒng)采用proc格式。
[0036]為了解決上述問題,提高了一種操作系統(tǒng)地址空間隨機(jī)化分配方法,用于上述操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),其中所述分配系統(tǒng)包括用戶空間層和內(nèi)核空間層,
[0037]所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器、全局隨機(jī)化管理策略模塊、隨機(jī)事件采集模塊;以及
[0038]所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊、虛擬文件系統(tǒng)管理模塊、管理策略解析模塊、隨機(jī)化因子生成模塊、地址空間隨機(jī)化分配模塊;
[0039]所述分配方法包括:
[0040]所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略;
[0041]所述全局隨機(jī)化管理策略模塊:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局棧空間隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略以輸出至所述虛擬文件系統(tǒng)管理模塊;
[0042]所述隨機(jī)事件采集模塊:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊;所述可執(zhí)行程序加載模塊:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊;
[0043]所述虛擬文件系統(tǒng)管理模塊:對注冊在其中的虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置;
[0044]所述管理策略解析模塊:對來自所述可執(zhí)行程序加載模塊的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊;
[0045]所述隨機(jī)化因子生成模塊:根據(jù)來自所述隨機(jī)事件采集模塊的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),以用于在所述地址空間隨機(jī)化分配模塊執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊;以及
[0046]所述地址空間隨機(jī)化分配模塊:根據(jù)來自所述管理策略解析模塊的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
[0047]本發(fā)明的操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)及方法提供了 30位范圍的地址空間隨機(jī)化分配,采取了隨機(jī)化效果更好更安全的隨機(jī)數(shù)產(chǎn)生方式,同時提供了可靈活配置的隨機(jī)化分配策略。由于采用的實(shí)現(xiàn)辦法與架構(gòu)無關(guān),本發(fā)明既可以用于x86通用Linux平臺,也可以用于國產(chǎn)龍芯處理器平臺的Linux操作系統(tǒng),從而為國產(chǎn)龍芯處理器平臺的Linux操作系統(tǒng)提供功能完善的地址空間隨機(jī)化分配功能。通過本發(fā)明能有效防范return-to-libc的緩沖區(qū)溢出變種攻擊,提高通用Linux操作系統(tǒng)的安全。
【專利附圖】
【附圖說明】
[0048]圖1是本發(fā)明實(shí)施例的操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)的結(jié)構(gòu)示意圖;
[0049]圖2是本發(fā)明實(shí)施例的操作系統(tǒng)地址空間隨機(jī)化分配方法流程圖;
[0050]圖3是本發(fā)明實(shí)施例的管理策略解析模塊的解析原理圖;
[0051]圖4是本發(fā)明實(shí)施例的隨機(jī)化因子生成模塊的原理圖;
[0052]圖5是本發(fā)明實(shí)施例的用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的實(shí)現(xiàn)過程流程圖;
[0053]圖6是本發(fā)明實(shí)施例的可執(zhí)行程序加載模塊的實(shí)現(xiàn)過程流程圖;
[0054]圖7是本發(fā)明實(shí)施例的虛擬文件系統(tǒng)管理模塊的實(shí)現(xiàn)過程流程圖;
[0055]圖8是本發(fā)明實(shí)施例的管理策略解析模塊的實(shí)現(xiàn)過程流程圖;
[0056]圖9示出了本發(fā)明實(shí)施例的地址空間隨機(jī)化分配模塊實(shí)現(xiàn)棧、堆和內(nèi)存映射空間隨機(jī)化分配控制流;
[0057]圖10示出了本發(fā)明實(shí)施例的最終棧空間隨機(jī)化分配控制流;
[0058]圖11示出了本發(fā)明實(shí)施例的堆空間、bss空間和內(nèi)存映射空間隨機(jī)化分配控制流;
[0059]圖12示出了本發(fā)明實(shí)施例的總內(nèi)存映射地址空間隨機(jī)化分配控制流;
[0060]圖13示出了內(nèi)存映射地址空間的隨機(jī)化顯示分配、匿名分配和堆分配控制流;
[0061]圖14示出了本發(fā)明實(shí)施例的分配系統(tǒng)配置成全系統(tǒng)隨機(jī)化分配策略在國產(chǎn)龍芯處理器平臺的運(yùn)行效果圖;以及
[0062]圖15示出了本發(fā)明實(shí)施例的分配系統(tǒng)配置成只實(shí)施棧地址空間隨機(jī)化分配策略在國產(chǎn)龍芯處理器平臺的運(yùn)行效果圖。
【具體實(shí)施方式】
[0063]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互任意組合。
[0064]如圖1所示,本發(fā)明實(shí)施例提供一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),包括用戶空間層和內(nèi)核空間層,
[0065]所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器1、全局隨機(jī)化管理策略模塊2、隨機(jī)事件采集模塊3 ;
[0066]所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊4、虛擬文件系統(tǒng)管理模塊5、管理策略解析模塊6、隨機(jī)化因子生成模塊7、地址空間隨機(jī)化分配模塊8 ;
[0067]所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器I用于:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊4 ;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略;
[0068]所述全局隨機(jī)化管理策略模塊2用于:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局棧空間隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略以輸出至所述虛擬文件系統(tǒng)管理模塊5 ;
[0069]所述隨機(jī)事件采集模塊3用于:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊7 ;
[0070]所述可執(zhí)行程序加載模塊4用于:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊6 ;
[0071]所述虛擬文件系統(tǒng)管理模塊5:注冊有虛擬文件系統(tǒng),其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置;用于對虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊6,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊6 ;
[0072]所述管理策略解析模塊6用于:對來自所述可執(zhí)行程序加載模塊4的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊5的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊8 ;
[0073] 所述隨機(jī)化因子生成模塊7用于:根據(jù)所述操作系統(tǒng)的系統(tǒng)庫函數(shù)和來自所述隨機(jī)事件采集模塊3的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),并對所述隨機(jī)數(shù)執(zhí)行23°模運(yùn)算來獲得隨機(jī)化因子,以用于在所述地址空間隨機(jī)化分配模塊8執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊8 ;以及
[0074]所述地址空間隨機(jī)化分配模塊8用于:根據(jù)來自所述管理策略解析模塊6的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊7的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
[0075]進(jìn)一步地,所述可執(zhí)行文件或動態(tài)庫文件中具有用于存放所述局部隨機(jī)化管理策略的程序段頭。
[0076]進(jìn)一步地,所述可執(zhí)行程序加載模塊4用于對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器I的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析包括:
[0077]所述可執(zhí)行程序加載模塊4對所述可執(zhí)行文件或動態(tài)庫文件中的程序段頭進(jìn)行解析以提取出所述局部隨機(jī)化管理策略。
[0078]進(jìn)一步地,所述局部隨機(jī)化管理策略包括:局部??臻g隨機(jī)化分配策略、局部堆空間隨機(jī)化分配策略以及局部內(nèi)存映射空間隨機(jī)化分配策略。
[0079]進(jìn)一步地,所述管理策略解析模塊6通過如下步驟對所述局部隨機(jī)化管理策略和所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略:
[0080]全局強(qiáng)制判斷步驟:判斷所述全局地址空間隨機(jī)化分配強(qiáng)制策略是否開啟,如果是,則使所述操作系統(tǒng)的所有進(jìn)程都實(shí)施??臻g隨機(jī)化分配、堆空間隨機(jī)化分配以及內(nèi)存映射空間隨機(jī)化分配,否則進(jìn)入全局棧判斷步驟、全局堆判斷步驟以及全局內(nèi)存映射判斷步驟;
[0081]全局棧判斷步驟:判斷所述全局??臻g隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部棧判斷步驟,否則使??臻g正常分配;
[0082]局部棧判斷步驟:判斷所述局部??臻g隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的??臻g實(shí)施隨機(jī)化分配,否則使??臻g正常分配;
[0083]全局堆判斷步驟:判斷所述全局堆空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部堆判斷步驟,否則使堆空間正常分配;
[0084]局部堆判斷步驟:判斷所述局部堆空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的堆空間實(shí)施隨機(jī)化分配,否則使堆空間正常分配;
[0085]全局內(nèi)存映射判斷步驟:判斷所述全局內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部內(nèi)存映射判斷步驟,否則使內(nèi)存映射空間正常分配;以及
[0086]局部內(nèi)存映射判斷步驟:判斷所述局部內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的內(nèi)存映射空間實(shí)施隨機(jī)化分配,否則使內(nèi)存映射空間正常分配。
[0087]進(jìn)一步地,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟或關(guān)閉所述全局棧空間隨機(jī)化分配策略、開啟或關(guān)閉所述全局堆空間隨機(jī)化分配策略以及開啟或關(guān)閉所述全局內(nèi)存映射空間隨機(jī)化分配策略。
[0088]進(jìn)一步地,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟所述全局棧空間隨機(jī)化分配策略、開啟所述全局堆空間隨機(jī)化分配策略以及開啟所述全局內(nèi)存映射空間隨機(jī)化分配策略。
[0089]進(jìn)一步地,所述??臻g隨機(jī)化地址=固定分配地址-隨機(jī)化因子;以及所述堆空間隨機(jī)化地址和所述內(nèi)存映射空間隨機(jī)化地址分別=固定分配地址+隨機(jī)化因子。
[0090]進(jìn)一步地,所述操作系統(tǒng)是Linux操作系統(tǒng)。
[0091]進(jìn)一步地,所述可執(zhí)行程序采用elf格式。
[0092]進(jìn)一步地,所述虛擬文件系統(tǒng)采用proc格式。
[0093]如圖2所示,本發(fā)明實(shí)施例提供一種操作系統(tǒng)地址空間隨機(jī)化分配方法,用于上述操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),其中所述分配系統(tǒng)包括用戶空間層和內(nèi)核空間層,
[0094]所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器1、全局隨機(jī)化管理策略模塊2、隨機(jī)事件采集模塊3 ;以及
[0095]所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊4、虛擬文件系統(tǒng)管理模塊5、管理策略解析模塊6、隨機(jī)化因子生成模塊7、地址空間隨機(jī)化分配模塊8 ;
[0096]所述分配方法包括:
[0097]S1:所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器1:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊4 ;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略;
[0098]S2:所述全局隨機(jī)化管理策略模塊2:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局??臻g隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略以輸出至所述虛擬文件系統(tǒng)管理模塊5 ;
[0099]S3:所述隨機(jī)事件采集模塊3:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊7 ;
[0100]S4:所述可執(zhí)行程序加載模塊4:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器I的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊6 ;
[0101]S5:所述虛擬文件系統(tǒng)管理模塊5:對注冊在其中的虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊6,其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊2的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置;
[0102]S6:所述管理策略解析模塊6:對來自所述可執(zhí)行程序加載模塊4的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊5的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊8 ;
[0103]S7:所述隨機(jī)化因子生成模塊7:根據(jù)來自所述隨機(jī)事件采集模塊3的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),并對所述隨機(jī)數(shù)執(zhí)行230模運(yùn)算來獲得隨機(jī)化因子,以用于在所述地址空間隨機(jī)化分配模塊8執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊8 ;以及
[0104]S8:所述地址空間隨機(jī)化分配模塊:根據(jù)來自所述管理策略解析模塊6的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊7的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
[0105]在本發(fā)明實(shí)施例中,將本發(fā)明實(shí)施例的操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng)簡稱為Sec-Memory系統(tǒng),該Sec-Memory系統(tǒng)包括高達(dá)30位范圍的地址空間隨機(jī)化分配功能以及管理并配置隨機(jī)化策略功能,使得采用Sec-Memory的操作系統(tǒng)可以實(shí)現(xiàn)全系統(tǒng)的隨機(jī)化運(yùn)行,即操作系統(tǒng)所有進(jìn)程的全部用戶地址空間都處于隨機(jī)化分配運(yùn)行;也可以通過Sec-Memory管理系統(tǒng)配置實(shí)現(xiàn)指定任意一個或多個程序隨機(jī)化運(yùn)行。該系統(tǒng)的隨機(jī)化管理配置可以細(xì)分到棧地址空間、堆地址空間和內(nèi)存映射(_ap)地址空間隨機(jī)化運(yùn)行的獨(dú)立配置。因此可以根據(jù)不同的具體安全應(yīng)用場合配置不同的隨機(jī)化分配策略,來適應(yīng)不同的安全應(yīng)用需求。另一方面,Sec-Memory系統(tǒng)的隨機(jī)數(shù)產(chǎn)生算法不只依賴于系統(tǒng)提供的依賴于系統(tǒng)時鐘值的系統(tǒng)庫函數(shù)(random函數(shù)),還考慮到當(dāng)前操作系統(tǒng)的鼠標(biāo)、鍵盤、中斷和網(wǎng)絡(luò)狀況等因素來修正隨機(jī)值,提高隨機(jī)數(shù)的隨機(jī)質(zhì)量,為采用Sec-Memory隨機(jī)化分配的系統(tǒng)提供更安全的隨機(jī)地址空間分配。
[0106]本發(fā)明實(shí)施例主要包含四個方面:(I)實(shí)現(xiàn)隨機(jī)化范圍高達(dá)30位(23° = IGbytes的地址空間范圍)的隨機(jī)化分配。(2)提供更復(fù)雜、更安全的隨機(jī)數(shù)生成算法。(3)實(shí)現(xiàn)針對棧地址空間、堆地址空間和內(nèi)存映射地址空間獨(dú)立隨機(jī)化分配。(4)提供兩種地址空間隨機(jī)化分配管理策略:全局隨機(jī)化管理策略和局部隨機(jī)化管理策略。
[0107]具體地,在本發(fā)明實(shí)施例中:
[0108]I)、在通用的Linux操作系統(tǒng)上實(shí)現(xiàn)30位地址空間范圍(IGbytes)的隨機(jī)化功能。該隨機(jī)化功能包括:棧地址空間隨機(jī)化分配、堆地址空間隨機(jī)化分配和內(nèi)存映射地址空間隨機(jī)化分配。由于所采用的實(shí)現(xiàn)方法與底層的硬件平臺無關(guān),該方法同樣適用于國產(chǎn)龍芯處理器平臺的Linux操作系統(tǒng)。
[0109]2)、實(shí)現(xiàn)一個引入鍵盤、鼠標(biāo)、中斷和網(wǎng)絡(luò)等因素生成隨機(jī)化因子的隨機(jī)化因子生成算法,該算法由隨機(jī)化因子生成模塊實(shí)現(xiàn),實(shí)現(xiàn)原理圖如圖1所示。隨機(jī)化因子生成算法引入鍵盤和鼠標(biāo)的隨機(jī)輸入值和操作系統(tǒng)當(dāng)前中斷次數(shù)和網(wǎng)絡(luò)交換數(shù)據(jù)的統(tǒng)計數(shù)的目的是為了提高隨機(jī)化因子生成的質(zhì)量,避免現(xiàn)有隨機(jī)化分配的隨機(jī)化因子的生成僅單一依賴于系統(tǒng)提供的random函數(shù),容易被攻擊者猜測出,從而提高操作系統(tǒng)隨機(jī)化的安全性。[0110]3)、實(shí)現(xiàn)用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器,在本發(fā)明實(shí)施例中,還將其稱為用戶空間elf格式(執(zhí)行鏈接文件格式)可執(zhí)行程序解釋器,該解釋器用于生成和解析elf格式可執(zhí)行程序的隨機(jī)化管理策略。
[0111]4)、在虛擬文件系統(tǒng)管理模塊中實(shí)現(xiàn)用于管理系統(tǒng)全局隨機(jī)化管理策略與內(nèi)核交互的虛擬文件系統(tǒng),該虛擬文件系統(tǒng)掛載在/proc/security文件系統(tǒng)下。
[0112]5)、在管理策略解析模塊中實(shí)現(xiàn)可靈活配置適用于多種安全需求的隨機(jī)化管理配置,如圖3所示。
[0113]Sec-Memory總體功能架構(gòu)如圖1所示。Sec-Memory系統(tǒng)由用戶空間層和內(nèi)核空間層兩部分實(shí)現(xiàn)組成。在用戶空間層中,用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器所生成和處理的是局部隨機(jī)化管理策略,該生成/解析器主要是為用戶提供為所選取的可執(zhí)行程序配置相應(yīng)的隨機(jī)化運(yùn)行策略和策略的解析,其中該可執(zhí)行程序可以為elf格式的可執(zhí)行程序,策略包括該elf可執(zhí)行程序是否開啟棧地址空間隨機(jī)化分配、是否開啟堆地址空間隨機(jī)化分配和是否開啟內(nèi)存映射地址空間隨機(jī)化分配隨機(jī)事件采集模塊用作提供給用戶隨機(jī)輸入鍵盤值和鼠標(biāo)值的管理界面和讀取操作系統(tǒng)中斷次數(shù)和網(wǎng)絡(luò)交換數(shù)據(jù)量的收集器,最終將采集的數(shù)據(jù)傳送給內(nèi)核空間層中的隨機(jī)化因子生成模塊。在內(nèi)核空間層中,包括5個核心模塊:①可執(zhí)行程序加載模塊,主要功能是分析所加載的可執(zhí)行文件或動態(tài)庫文件所要實(shí)施的隨機(jī)化運(yùn)行策略和完成可執(zhí)行文件或動態(tài)庫文件加載,該策略是由用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器生成的;②作為虛擬文件系統(tǒng)管理模塊的proc文件系統(tǒng)管理模塊,該模塊實(shí)現(xiàn)虛擬文件系統(tǒng)的注冊和為用戶空間層提供全局隨機(jī)化管理策略的配置入口 ;③管理策略解析模塊,該解析模塊根據(jù)局部和全局的配置策略生成最終的隨機(jī)化運(yùn)行策略,策略解析原理如圖3的流程所示隨機(jī)化因子生成模塊,通過系統(tǒng)的random函數(shù)和基于隨機(jī)事件數(shù)據(jù)所生成的隨機(jī)化修正值產(chǎn)生最終的隨機(jī)數(shù),并利用取模運(yùn)算最終生成隨機(jī)化因子,原理如圖4所示;⑤地址空間隨機(jī)化分配模塊,它是實(shí)現(xiàn)地址空間隨機(jī)化分配的核心模塊,實(shí)現(xiàn)棧地址空間、堆地址空間和內(nèi)存映射地址空間隨機(jī)化分配,并根據(jù)最終的隨機(jī)化策略實(shí)施所需要的隨機(jī)化功能。
[0114]本發(fā)明實(shí)施例的Sec-Memory系統(tǒng)構(gòu)建包括以下五個部分/步驟:
[0115](一 )實(shí)現(xiàn)用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器,在本發(fā)明實(shí)施例中也稱為用戶空間elf可執(zhí)行程序隨機(jī)化策略生成/解析器,該工具為用戶提供局部隨機(jī)化策略配置入口及局部策略解析,換言之,其主要是為用戶提供策略查詢功能,通過該工具用戶就知道該可執(zhí)行程序所采取的隨機(jī)化分配策略,如需要修改策略,可以先查詢之前配置的策略,然后修改。實(shí)現(xiàn)過程如圖5所示。該實(shí)現(xiàn)的核心是在elf文件中增加一個程序頭(program header),用來描述該可執(zhí)行程序的內(nèi)存安全控制策略信息,即所采取的隨機(jī)化策略。局部隨機(jī)化控制參數(shù)說明如下表:
[0116]表1:局部隨機(jī)化策略選項(xiàng)和參數(shù)說明
[0117]
【權(quán)利要求】
1.一種操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),其特征在于,包括用戶空間層和內(nèi)核空間層, 所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器、全局隨機(jī)化管理策略模塊、隨機(jī)事件采集模塊; 所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊、虛擬文件系統(tǒng)管理模塊、管理策略解析模塊、隨機(jī)化因子生成模塊、地址空間隨機(jī)化分配模塊; 所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器用于:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略; 所述全局隨機(jī)化管理策略模塊用于:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局??臻g隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略 以輸出至所述虛擬文件系統(tǒng)管理模塊; 所述隨機(jī)事件采集模塊用于:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊; 所述可執(zhí)行程序加載模塊用于:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊; 所述虛擬文件系統(tǒng)管理模塊:注冊有虛擬文件系統(tǒng),其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置;用于對虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊; 所述管理策略解析模塊用于:對來自所述可執(zhí)行程序加載模塊的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊; 所述隨機(jī)化因子生成模塊用于:根據(jù)來自所述隨機(jī)事件采集模塊的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),并對所述隨機(jī)數(shù)執(zhí)行23°模運(yùn)算來獲得隨機(jī)化因子,以用于在所述地址空間隨機(jī)化分配模塊執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊;以及 所述地址空間隨機(jī)化分配模塊用于:根據(jù)來自所述管理策略解析模塊的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
2.如權(quán)利要求1所述的分配系統(tǒng),其特征在于,所述可執(zhí)行文件或動態(tài)庫文件中具有用于存放所述局部隨機(jī)化管理策略的程序段頭。
3.如權(quán)利要求2所述的分配系統(tǒng),其特征在于,所述可執(zhí)行程序加載模塊用于對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析包括: 所述可執(zhí)行程序加載模塊對所述可執(zhí)行文件或動態(tài)庫文件中的程序段頭進(jìn)行解析以提取出所述局部隨機(jī)化管理策略。
4.如權(quán)利要求1、2或3所述的分配系統(tǒng),其特征在于,所述局部隨機(jī)化管理策略包括:局部??臻g隨機(jī)化分配策略、局部堆空間隨機(jī)化分配策略以及局部內(nèi)存映射空間隨機(jī)化分配策略。
5.如權(quán)利要求4所述的分配系統(tǒng),其特征在于,所述管理策略解析模塊通過如下步驟對所述局部隨機(jī)化管理策略和所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略: 全局強(qiáng)制判斷步驟:判斷所述全局地址空間隨機(jī)化分配強(qiáng)制策略是否開啟,如果是,則使所述操作系統(tǒng)的所有進(jìn)程都實(shí)施棧空間隨機(jī)化分配、堆空間隨機(jī)化分配以及內(nèi)存映射空間隨機(jī)化分配,否則進(jìn)入全局棧判斷步驟、全局堆判斷步驟以及全局內(nèi)存映射判斷步驟; 全局棧判斷步驟:判斷所述全局棧空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部棧判斷步驟,否則使??臻g正常分配; 局部棧判斷步驟:判斷所述局部??臻g隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的??臻g實(shí)施隨機(jī)化分配,否則使棧空間正常分配; 全局堆判斷步驟:判斷所述全局堆空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部堆判斷步驟,否則使堆空間正常分配; 局部堆判斷步驟:判斷所述局部堆空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的堆空間實(shí)施隨機(jī)化分配,否則使堆空間正常分配; 全局內(nèi)存映射判斷步驟:判斷所述全局內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部內(nèi)存映射判斷步驟,否則使內(nèi)存映射空間正常分配;以及 局部內(nèi)存映射判斷步驟:判斷所述局部內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的內(nèi)存映射空間實(shí)施隨機(jī)化分配,否則使內(nèi)存映射空間正常分配。
6.如權(quán)利要求1、2、3或5所述的分配系統(tǒng),其特征在于,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟或關(guān)閉所述全局??臻g隨機(jī)化分配策略、開啟或關(guān)閉所述全局堆空間隨機(jī)化分配策略以及開啟或關(guān)閉所述全局內(nèi)存映射空間隨機(jī)化分配策略。
7.如權(quán)利要求6所述的分配系統(tǒng),其特征在于,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟所述全局??臻g隨機(jī)化分配策略、開啟所述全局堆空間隨機(jī)化分配策略以及開啟所述全局內(nèi)存映射空間隨機(jī)化分配策略。
8.如權(quán)利要求1、2、3、5或7所述的分配系統(tǒng),其特征在于,所述棧空間隨機(jī)化地址=固定分配地址-隨機(jī)化因子;以及所述堆空間隨機(jī)化地址和所述內(nèi)存映射空間隨機(jī)化地址分別=固定分配地址+隨機(jī)化因子。
9.如權(quán)利要求8所述的分配系統(tǒng),其特征在于,所述操作系統(tǒng)是Linux操作系統(tǒng)。
10.如權(quán)利要求9所述的分配系統(tǒng),其特征在于,所述可執(zhí)行程序采用elf格式。
11.如權(quán)利要求9或10所述的分配系統(tǒng),其特征在于,所述虛擬文件系統(tǒng)采用proc格式。
12.—種操作系統(tǒng)地址空間隨機(jī)化分配方法,其特征在于,用于權(quán)利要求1所述的操作系統(tǒng)地址空間隨機(jī)化分配系統(tǒng),其中所述分配系統(tǒng)包括用戶空間層和內(nèi)核空間層, 所述用戶空間層包括:用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器、全局隨機(jī)化管理策略模塊、隨機(jī)事件采集模塊;以及 所述內(nèi)核空間層包括:可執(zhí)行程序加載模塊、虛擬文件系統(tǒng)管理模塊、管理策略解析模塊、隨機(jī)化因子生成模塊、地址空間隨機(jī)化分配模塊; 所述分配方法包括: 所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器:針對可執(zhí)行程序或動態(tài)庫生成局部隨機(jī)化管理策略并將所述局部隨機(jī)化管理策略以可執(zhí)行文件形式或動態(tài)庫文件形式輸出至所述可執(zhí)行程序加載模塊;以及對所述局部隨機(jī)化管理策略進(jìn)行解析以向用戶報告針對所述可執(zhí)行程序或動態(tài)庫的局部隨機(jī)化管理策略; 所述全局隨機(jī)化管理策略模塊:保存全局隨機(jī)化管理策略,其中所述全局隨機(jī)化管理策略包括:全局地址空間隨機(jī)化分配強(qiáng)制策略、全局??臻g隨機(jī)化分配策略、全局堆空間隨機(jī)化分配策略以及全局內(nèi)存映射隨機(jī)化分配策略;以及在用戶配置情況下供用戶從中選擇全局隨機(jī)化管理策略以 輸出至所述虛擬文件系統(tǒng)管理模塊; 所述隨機(jī)事件采集模塊:采集包括以下內(nèi)容的隨機(jī)事件數(shù)據(jù):用戶隨機(jī)輸入的鍵盤值和鼠標(biāo)值、所述操作系統(tǒng)的當(dāng)前中斷次數(shù)和所述操作系統(tǒng)的當(dāng)前網(wǎng)絡(luò)交換數(shù)據(jù)量;以及將所述隨機(jī)事件數(shù)據(jù)提供給隨機(jī)化因子生成模塊; 所述可執(zhí)行程序加載模塊:對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析,并且加載所述可執(zhí)行文件或動態(tài)庫文件且將所述局部隨機(jī)化管理策略輸出至所述管理策略解析模塊; 所述虛擬文件系統(tǒng)管理模塊:對注冊在其中的虛擬文件系統(tǒng)進(jìn)行解析以獲取最終全局隨機(jī)化管理策略,使得在所述用戶配置的情況下將所述虛擬文件系統(tǒng)中所裝載的全局隨機(jī)化管理策略作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,而在無用戶配置的情況下將所述全局隨機(jī)化管理策略默認(rèn)配置作為所述最終全局隨機(jī)化管理策略輸出至所述管理策略解析模塊,其中所述虛擬文件系統(tǒng)待裝載來自全局隨機(jī)化管理策略模塊的全局隨機(jī)化管理策略,并且具有全局隨機(jī)化管理策略默認(rèn)配置; 所述管理策略解析模塊:對來自所述可執(zhí)行程序加載模塊的所述局部隨機(jī)化管理策略和來自所述虛擬文件系統(tǒng)管理模塊的所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略,并將所述最終隨機(jī)化運(yùn)行策略輸出至所述地址空間隨機(jī)化分配模塊;所述隨機(jī)化因子生成模塊:根據(jù)來自所述隨機(jī)事件采集模塊的所述隨機(jī)事件數(shù)據(jù)生成隨機(jī)化修正值,根據(jù)所述隨機(jī)化修正值和所述操作系統(tǒng)的系統(tǒng)庫函數(shù)來生成隨機(jī)數(shù),以用于在所述地址空間隨機(jī)化分配模塊執(zhí)行地址空間隨機(jī)化分配時調(diào)整地址空間的固定分配地址,并將所述隨機(jī)化因子輸出至所述地址空間隨機(jī)化分配模塊;以及 所述地址空間隨機(jī)化分配模塊:根據(jù)來自所述管理策略解析模塊的所述最終隨機(jī)化運(yùn)行策略和來自所述隨機(jī)化因子生成模塊的所述隨機(jī)化因子來執(zhí)行所述地址空間隨機(jī)化分配,使得所述地址空間具有隨機(jī)化地址。
13.如權(quán)利要求12所述的分配方法,其特征在于,所述可執(zhí)行文件或動態(tài)庫文件中具有用于存放所述局部隨機(jī)化管理策略的程序段頭。
14.如權(quán)利要求13所述的分配方法,其特征在于,所述可執(zhí)行程序加載模塊用于對來自所述用戶空間可執(zhí)行程序局部隨機(jī)化管理策略生成/解析器的以所述可執(zhí)行文件或動態(tài)庫文件形式的所述局部隨機(jī)化管理策略進(jìn)行分析包括: 所述可執(zhí)行程序加載模塊對所述可執(zhí)行文件或動態(tài)庫文件中的程序段頭進(jìn)行解析以提取出所述局部隨機(jī)化管理策略。
15.如權(quán)利要求13或14所述的分配方法,其特征在于,所述局部隨機(jī)化管理策略包括:局部棧空間隨機(jī)化分配策略、局部堆空間隨機(jī)化分配策略以及局部內(nèi)存映射空間隨機(jī)化分配策略。
16.如權(quán)利要求15所述的分配方法,其特征在于,所述管理策略解析模塊通過如下步驟對所述局部隨機(jī)化管理策略和所述最終全局隨機(jī)化管理策略進(jìn)行解析以生成最終隨機(jī)化運(yùn)行策略: 全局強(qiáng)制判斷步驟:判斷所述全局地址空間隨機(jī)化分配強(qiáng)制策略是否開啟,如果是,則使所述操作系統(tǒng)的所有進(jìn)程都實(shí)施??臻g隨機(jī)化分配、堆空間隨機(jī)化分配以及內(nèi)存映射空間隨機(jī)化分配,否則進(jìn)入全局棧判斷步驟、全局堆判斷步驟以及全局內(nèi)存映射判斷步驟; 全局棧判斷步驟:判斷所述全局??臻g隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部棧判斷步驟,否則使棧空間正常分配; 局部棧判斷步驟:判斷所述局部??臻g隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的??臻g實(shí)施隨機(jī)化分配,否則使棧空間正常分配; 全局堆判斷步驟:判斷所述全局堆空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部堆判斷步驟,否則使堆空間正常分配; 局部堆判斷步驟:判斷所述局部堆空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的堆空間實(shí)施隨機(jī)化分配,否則使堆空間正常分配; 全局內(nèi)存映射判斷步驟:判斷所述全局內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則進(jìn)入局部內(nèi)存映射判斷步驟,否則使內(nèi)存映射空間正常分配;以及 局部內(nèi)存映射判斷步驟:判斷所述局部內(nèi)存映射空間隨機(jī)化分配策略是否開啟,如果是,則使與所述可執(zhí)行文件或動態(tài)庫文件對應(yīng)的內(nèi)存映射空間實(shí)施隨機(jī)化分配,否則使內(nèi)存映射空間正常分配。
17.如權(quán)利要求12、13、14或16所述的分配方法,其特征在于,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟或關(guān)閉所述全局??臻g隨機(jī)化分配策略、開啟或關(guān)閉所述全局堆空間隨機(jī)化分配策略以及開啟或關(guān)閉所述全局內(nèi)存映射空間隨機(jī)化分配策略。
18.如權(quán)利要求17所述的分配方法,其特征在于,所述全局隨機(jī)化管理策略默認(rèn)配置是:開啟所述全局??臻g隨機(jī)化分配策略、開啟所述全局堆空間隨機(jī)化分配策略以及開啟所述全局內(nèi)存映射空間隨機(jī)化分配策略。
19.如權(quán)利要求12、13、14、16或18所述的分配方法,其特征在于,所述??臻g隨機(jī)化地址=固定分配地址-隨機(jī)化因子;以及所述堆空間隨機(jī)化地址和所述內(nèi)存映射空間隨機(jī)化地址分別=固定分配地址+隨機(jī)化因子。
20.如權(quán)利要求19所述的分配方法,其特征在于,所述操作系統(tǒng)是Linux操作系統(tǒng)。
21.如權(quán)利要求20所述的分配方法,其特征在于,所述可執(zhí)行程序采用elf格式。
22.如權(quán)利要求20或21所述的分配方法,其特征在于,所述虛擬文件系統(tǒng)采用proc格 式。
【文檔編號】G06F9/44GK103995705SQ201410246004
【公開日】2014年8月20日 申請日期:2014年6月4日 優(yōu)先權(quán)日:2014年6月4日
【發(fā)明者】游瑞邦, 涂碧波, 孟丹 申請人:中國科學(xué)院信息工程研究所