999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種操作系統(tǒng)函數(shù)級(jí)安全監(jiān)控方案

2021-01-15 08:23:02孫書彤王祥武蔡立志

孫書彤 王祥武 蔡立志

1(中國銀聯(lián)股份有限公司 上海 201201) 2(中國海洋石油集團(tuán)有限公司 北京 100010) 3(上海計(jì)算機(jī)軟件技術(shù)開發(fā)中心上海市計(jì)算機(jī)軟件評(píng)測重點(diǎn)實(shí)驗(yàn)室 上海 201112)

0 引 言

近年來,隨著軟件的規(guī)模和復(fù)雜度的日益增大,軟件漏洞挖掘技術(shù)正逐漸向自動(dòng)化和智能化演變。傳統(tǒng)漏洞挖掘技術(shù)包括模型檢測、二進(jìn)制比對(duì)、模糊測試、符號(hào)執(zhí)行以及漏洞可利用性分析等。機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)在漏洞挖掘領(lǐng)域也有應(yīng)用,包括二進(jìn)制函數(shù)識(shí)別、函數(shù)相似性檢測、測試輸入生成、路徑約束求解等,但存在機(jī)器學(xué)習(xí)算法不夠健壯、樣本數(shù)據(jù)不足、算法和特征選擇過度依賴經(jīng)驗(yàn)和專家知識(shí)等問題。

此外,也有利用如Digtool之類的工具進(jìn)行系統(tǒng)層面漏洞挖掘的方法。Digtool運(yùn)行后自動(dòng)記錄內(nèi)存訪問等行為,進(jìn)行路徑探測,并盡量引導(dǎo)執(zhí)行更多的路徑;Digtool 會(huì)進(jìn)一步分析,一旦發(fā)現(xiàn)符合主要的一些漏洞行為特征規(guī)則,就意味著找到一個(gè)漏洞。

這些方法都是針對(duì)某種局部特征或局部環(huán)境進(jìn)行分析比對(duì)的。更重要的是,這些方法都是運(yùn)行在一種模擬環(huán)境中,而非實(shí)際運(yùn)行環(huán)境[1]。

本文提出一種新的研究思路和實(shí)現(xiàn)方案,專門針對(duì)操作系統(tǒng)內(nèi)核中的漏洞進(jìn)行識(shí)別、挖掘和自動(dòng)封堵,在已知源碼的前提下,能夠自動(dòng)識(shí)別和自動(dòng)封堵操作系統(tǒng)內(nèi)核中的幾乎所有控制轉(zhuǎn)移型漏洞[2-3]。

從運(yùn)行軌跡角度上看,操作系統(tǒng)內(nèi)核級(jí)漏洞可以分為控制轉(zhuǎn)移型漏洞和非控制轉(zhuǎn)移型漏洞兩種。前者是指能夠?qū)е孪到y(tǒng)運(yùn)行控制發(fā)生轉(zhuǎn)移,從而完全脫離原始設(shè)計(jì)的運(yùn)行軌跡,去執(zhí)行入侵的代碼或其他超越權(quán)限的代碼的漏洞;后者是指不會(huì)導(dǎo)致系統(tǒng)的運(yùn)行軌跡發(fā)生轉(zhuǎn)移,僅僅能欺騙系統(tǒng),使之放行的漏洞,如:驗(yàn)證口令、加解密等函數(shù)或流程方面的漏洞[4]。

非控制轉(zhuǎn)移型漏洞范圍集中,代碼量小,易于研究和消滅。現(xiàn)實(shí)中這類漏洞也較少發(fā)生,故本文中不再考慮這類漏洞。本文中研究的漏洞是指控制轉(zhuǎn)移型漏洞。這些漏洞范圍廣泛,能夠?qū)е孪到y(tǒng)運(yùn)行失去控制,去執(zhí)行入侵的代碼或其他超越權(quán)限的代碼,是目前漏洞威脅的主體。

本文提出的方案是:通過改造源代碼,將操作系統(tǒng)代碼中的函數(shù)進(jìn)行函數(shù)名標(biāo)簽化,對(duì)每個(gè)函數(shù)增加記錄該函數(shù)運(yùn)行時(shí)的調(diào)用序列和上下文關(guān)系的一段極小通用代碼,監(jiān)測任何控制轉(zhuǎn)移型漏洞的發(fā)生,進(jìn)一步追蹤、定位、分析漏洞,也可以阻塞漏洞代碼的運(yùn)行[5]。

1 基本思路和實(shí)現(xiàn)方案

在已知源代碼的前提下,以函數(shù)為基本單位看待操作系統(tǒng),整個(gè)系統(tǒng)的運(yùn)行過程可以看作一個(gè)由這些函數(shù)互相調(diào)用構(gòu)成的運(yùn)行序列。這個(gè)運(yùn)行序列是完全由源代碼決定的,在運(yùn)行過程中,除非發(fā)生漏洞入侵或bug,否則不可能出現(xiàn)函數(shù)脫離既定序列運(yùn)行的情況。反之,通過漏洞入侵本系統(tǒng)的代碼,不可能不改變?cè)瓉淼倪\(yùn)行序列,也不可能不調(diào)用操作系統(tǒng)的固有函數(shù)。據(jù)此,通過將代碼中的所有函數(shù)進(jìn)行改造,增加調(diào)用者信息和調(diào)用序列檢查功能,可以實(shí)時(shí)發(fā)現(xiàn)函數(shù)脫離原來既定序列運(yùn)行的情況。這種情況一旦發(fā)生,即可自動(dòng)阻塞執(zhí)行,并報(bào)告發(fā)生脫序運(yùn)行的“拐點(diǎn)”函數(shù)名稱,所在源代碼的文件名、行號(hào)等精確信息,為操作系統(tǒng)的運(yùn)行安全增加了一種可靠的保護(hù)機(jī)制[6-10]。

1.1 源代碼自動(dòng)變?cè)旒夹g(shù)

對(duì)代碼進(jìn)行詞法分析,包括隱函數(shù)和虛函數(shù)的提取、識(shí)別和變?cè)臁?/p>

操作系統(tǒng)源代碼均為C語言實(shí)現(xiàn)的。根據(jù)C語言的規(guī)范,所有代碼都是由函數(shù)構(gòu)成的,每個(gè)函數(shù)都具有統(tǒng)一的語法特征和詞法特征。因此通過對(duì)源代碼的語法分析,可以提取所有函數(shù),并自動(dòng)改造每個(gè)函數(shù),插入函數(shù)級(jí)監(jiān)控和分析代碼。

1.2 函數(shù)調(diào)用關(guān)系序列的分析和描述

從源代碼中,可以確定函數(shù)之間的調(diào)用關(guān)系和調(diào)用上下文。雖然一個(gè)函數(shù)可以被多個(gè)函數(shù)調(diào)用,一個(gè)函數(shù)也可以調(diào)用多個(gè)函數(shù),包括遞歸調(diào)用,但是每個(gè)調(diào)用必然是在源代碼中明確定義的。從代碼中可以很容易地確定任何函數(shù)的調(diào)用者列表和被調(diào)用者列表,以及調(diào)用序列表。這樣可以建立一個(gè)以函數(shù)名為索引的調(diào)用關(guān)系表。

一個(gè)操作系統(tǒng)中所有函數(shù)個(gè)數(shù)大致在十萬數(shù)量級(jí)以上,每個(gè)函數(shù)的平均調(diào)用者個(gè)數(shù)和被調(diào)用者個(gè)數(shù)在100以內(nèi),所以整個(gè)調(diào)用關(guān)系庫的大小應(yīng)該在4 MB左右,而且恒定不變,完全可以永久性地放在內(nèi)存中供函數(shù)調(diào)用時(shí)實(shí)時(shí)比對(duì)和驗(yàn)證分析,不會(huì)影響系統(tǒng)內(nèi)存占用。

1.3 函數(shù)調(diào)用監(jiān)控技術(shù)

通過改造每個(gè)函數(shù),在函數(shù)頭部插入一小段代碼,比對(duì)該函數(shù)的調(diào)用者和調(diào)用上下文與調(diào)用關(guān)系庫中是否一致,可以判斷出對(duì)該函數(shù)的調(diào)用是否合法,進(jìn)而確定是否有漏洞的存在。再通過全息日志,分析漏洞成因,同時(shí)可以阻塞函數(shù)的運(yùn)行,確保它們不造成危害。

由于函數(shù)名已被標(biāo)簽化為整數(shù),可以直接作為查找索引去查詢調(diào)用關(guān)系庫,因此是一個(gè)直接定位、無須加鎖的全內(nèi)存操作,相當(dāng)于每個(gè)函數(shù)多運(yùn)行幾十條指令而已,故對(duì)系統(tǒng)運(yùn)行效率影響極小。

2 核心技術(shù)

2.1 源代碼函數(shù)調(diào)用關(guān)系圖、關(guān)系表生成

以源代碼文件為對(duì)象,從所有源代碼中識(shí)別和提取出所有函數(shù),包括隱函數(shù)、虛函數(shù),形成函數(shù)描述表,描述每個(gè)函數(shù)的詳細(xì)調(diào)用序列關(guān)系和調(diào)用上下文。

操作系統(tǒng)源代碼一般由C語言編寫,對(duì)源代碼文本進(jìn)行語法分析和詞法分析,識(shí)別和提取其中所有的函數(shù),詳細(xì)步驟如下:

① 遍歷源代碼所有文件,包括頭文件和.c文件,去掉其中所有注釋信息,以便簡化后繼分析。注釋信息中通常包含文字或代碼等信息,容易帶來語法分析和詞法分析的困擾。

② 逐一遍歷所有文件,根據(jù)C語言函數(shù)的語法分析,標(biāo)定所有函數(shù)的函數(shù)名、函數(shù)參數(shù)、函數(shù)起止位置。

③ 對(duì)所有標(biāo)定的函數(shù)名統(tǒng)一進(jìn)行標(biāo)簽化,即對(duì)每個(gè)函數(shù)重新命名,命名為統(tǒng)一代號(hào)的標(biāo)簽化函數(shù)名,這樣做一方面可以保證不會(huì)發(fā)生重名現(xiàn)象,比如函數(shù)名和變量名重名,另一方面是為后繼查詢提供了快速定位索引信息,流程如圖1所示。

圖1 函數(shù)標(biāo)簽化流程

④ 經(jīng)過上述三步處理后的源代碼文件,所有函數(shù)均已標(biāo)簽化、清晰定位、語法分析和詞法分析階段已經(jīng)完成。接著,統(tǒng)計(jì)所有函數(shù)的調(diào)用關(guān)系,生成函數(shù)調(diào)用關(guān)系庫。具體方法是遍歷所有文件,根據(jù)每個(gè)標(biāo)簽函數(shù)名查找調(diào)用者和被調(diào)用者,將得到的所有信息索引化處理后,保存入庫,流程如圖2所示。

圖2 函數(shù)調(diào)用關(guān)系入庫流程

2.2 源代碼函數(shù)變?cè)?/h3>

將每個(gè)函數(shù)進(jìn)行源碼變?cè)欤诒WC不改變?cè)歼壿嫷那疤嵯拢黾尤齻€(gè)參數(shù)和一條語句,用以描述函數(shù)運(yùn)行時(shí)的調(diào)用上下文關(guān)系、調(diào)用序列關(guān)系驗(yàn)證等。

(1) 函數(shù)增加調(diào)用參數(shù)。除了main函數(shù)和其他標(biāo)準(zhǔn)函數(shù),所有自行定義的函數(shù)均增加三個(gè)參數(shù),分別用來表示調(diào)用者、調(diào)用者的上級(jí)調(diào)用者、調(diào)用發(fā)生的代碼行。變?cè)旌蟮脑创a所有文件都有唯一的編號(hào),這樣,后繼任何函數(shù)在執(zhí)行中出現(xiàn)異常時(shí),都可以輕松定位到源代碼及調(diào)用上下文,便于區(qū)分漏洞和異常。

(2) 函數(shù)增加驗(yàn)證和日志語句。在代碼中每個(gè)自定義的函數(shù)頭部增加相同的處理語句,即把新增加的三個(gè)參數(shù)傳遞給公共的驗(yàn)證函數(shù),驗(yàn)證函數(shù)將根據(jù)這三個(gè)參數(shù)進(jìn)行驗(yàn)證,如發(fā)現(xiàn)脫序調(diào)用,即可阻止該函數(shù)的運(yùn)行,并報(bào)告出錯(cuò)的函數(shù)及調(diào)用上下文。據(jù)此可以追蹤出整個(gè)調(diào)用序列中的所有調(diào)用上下文,分析漏洞或異常的原因。

如圖3所示,一個(gè)已標(biāo)簽化函數(shù)8344在被調(diào)用時(shí)傳遞三個(gè)參數(shù):調(diào)用者函數(shù)序號(hào),本函數(shù)所在文件號(hào),行號(hào)。在執(zhí)行時(shí)首先調(diào)用脫序檢查函數(shù)RuntimeCheck,并返回脫序檢查結(jié)果。

圖3 源代碼變?cè)鞂?shí)例

2.3 運(yùn)行時(shí)測試和函數(shù)追蹤

(1) 函數(shù)級(jí)上下文日志。根據(jù)2.2節(jié)中描述的數(shù)據(jù)結(jié)構(gòu)和算法,實(shí)現(xiàn)任意函數(shù)調(diào)用時(shí),都會(huì)另外增加三個(gè)參數(shù),用來指明本次調(diào)用的調(diào)用函數(shù)、上級(jí)調(diào)用函數(shù)、調(diào)用代碼所在的代碼行。每個(gè)函數(shù)被調(diào)用時(shí),同時(shí)知道它的調(diào)用函數(shù)以及調(diào)用函數(shù)的調(diào)用函數(shù),這就為函數(shù)調(diào)用序列的跟蹤和驗(yàn)證提供了保證。

(2) 函數(shù)級(jí)調(diào)用存儲(chǔ)。如前所述,任何函數(shù)發(fā)生調(diào)用時(shí),根據(jù)調(diào)用參數(shù)信息可以進(jìn)行調(diào)用序列驗(yàn)證和追蹤分析。所有函數(shù)的調(diào)用序列關(guān)系是由源代碼完全決定的。通過2.1節(jié)中描述的方法,得到如表1所示的函數(shù)調(diào)用序列驗(yàn)證數(shù)據(jù)庫。

表1 函數(shù)調(diào)用關(guān)系數(shù)據(jù)庫

在所有函數(shù)的最前面插入驗(yàn)證語句Runtime-Check(),在調(diào)用原函數(shù)邏輯功能前,都會(huì)調(diào)用一個(gè)公共的驗(yàn)證函數(shù)。驗(yàn)證函數(shù)在初始化時(shí)即裝于驗(yàn)證數(shù)據(jù)庫。該數(shù)據(jù)庫的內(nèi)容是描述代碼中定義的所有函數(shù)的調(diào)用序列關(guān)系,因此是靜態(tài)不變的。這就意味著可以公共訪問,無須加鎖。因此這個(gè)訪問驗(yàn)證函數(shù)不會(huì)消耗太多的系統(tǒng)CPU,可以始終在線運(yùn)行。

(3) 拐點(diǎn)函數(shù)的識(shí)別。當(dāng)公共驗(yàn)證函數(shù)檢測到任何函數(shù)脫序調(diào)用時(shí),即可斷定這里發(fā)生了漏洞或BUG,這時(shí)可以通過追蹤調(diào)用序列,查找調(diào)用序列中發(fā)生拐點(diǎn)的函數(shù),以進(jìn)行漏洞分析,同時(shí)也可以直接阻止該函數(shù)的運(yùn)行,確保漏洞不能被利用。

如圖4所示,五列數(shù)據(jù)分別為函數(shù)號(hào),調(diào)用者,所在文件號(hào),行號(hào),檢查結(jié)果。一個(gè)已標(biāo)簽化函數(shù)8344返回了脫序檢查結(jié)果,即函數(shù)被調(diào)用執(zhí)行時(shí),執(zhí)行軌跡沒有脫序。

圖4 內(nèi)核檢查調(diào)用序列輸出實(shí)例

3 方案實(shí)驗(yàn)效果

本方案改造的操作系統(tǒng)是Linux內(nèi)核,數(shù)據(jù)庫不到5 MB,運(yùn)行可以監(jiān)測到由外部輸入觸發(fā)的控制轉(zhuǎn)移型的漏洞[11]。

4 結(jié) 語

經(jīng)過本方案改造的操作系統(tǒng)內(nèi)核,能夠在函數(shù)粒度上進(jìn)行全息跟蹤和運(yùn)行驗(yàn)證。本文方案能夠自動(dòng)發(fā)現(xiàn)和阻止利用本系統(tǒng)漏洞攻擊成功的惡意代碼,通過實(shí)現(xiàn)整個(gè)系統(tǒng)運(yùn)行全過程的詳細(xì)日志,為各類系統(tǒng)運(yùn)行的安全提供可驗(yàn)證和追溯的軌跡數(shù)據(jù)。

主站蜘蛛池模板: 国产一级精品毛片基地| 国产日韩欧美精品区性色| 国产日韩丝袜一二三区| 国产日产欧美精品| 国产黄色免费看| 国产精品无码作爱| 日本高清免费一本在线观看 | 无码高潮喷水专区久久| 国产成人无码Av在线播放无广告| 日本道综合一本久久久88| 国产成人在线小视频| 亚洲欧美在线看片AI| 18黑白丝水手服自慰喷水网站| 欧美午夜性视频| 国产原创演绎剧情有字幕的| 一级毛片免费不卡在线视频| 999国产精品永久免费视频精品久久 | 亚洲天堂啪啪| 久久久久久久97| 一级毛片不卡片免费观看| AV不卡在线永久免费观看| 久久精品国产国语对白| 18禁不卡免费网站| 欧美精品亚洲二区| 国产本道久久一区二区三区| 久久久久亚洲精品成人网| 久久99热66这里只有精品一| 成年片色大黄全免费网站久久| 欧美成人免费午夜全| 中文国产成人精品久久一| 97青草最新免费精品视频| 99精品免费在线| 精品在线免费播放| 国产成人综合亚洲欧洲色就色| 无码乱人伦一区二区亚洲一| 国产精品一区二区久久精品无码| 三级视频中文字幕| 欧美综合激情| av一区二区三区高清久久| 色综合天天综合中文网| 日本免费一级视频| 漂亮人妻被中出中文字幕久久| 亚洲第一极品精品无码| 亚洲不卡影院| 亚洲人成网站观看在线观看| 看av免费毛片手机播放| 欧美日韩综合网| 国产一区二区人大臿蕉香蕉| 亚洲人成网站18禁动漫无码| 无码一区18禁| 一本一道波多野结衣一区二区 | 国产乱码精品一区二区三区中文 | 2021国产精品自拍| 伊人91视频| 成人国产免费| 伊人欧美在线| 久久www视频| 国产不卡一级毛片视频| 国产成人三级在线观看视频| 亚洲精品国产综合99久久夜夜嗨| 国内精品免费| 久久熟女AV| 国产午夜福利亚洲第一| 福利一区在线| 久久综合干| 少妇精品久久久一区二区三区| 波多野结衣无码AV在线| 狠狠色噜噜狠狠狠狠色综合久| 国产SUV精品一区二区| 亚洲午夜18| 亚洲成a人片| 亚洲人成网18禁| 久久精品人人做人人综合试看| 丝袜国产一区| 麻豆精品在线播放| 亚洲精品天堂在线观看| 久一在线视频| 精品国产香蕉在线播出| 亚洲欧洲日产国产无码AV| 亚洲av综合网| 国产噜噜噜视频在线观看| 天堂在线亚洲|