• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      UniSan:防止操作系統(tǒng)內(nèi)核中由未初始化導(dǎo)致的信息泄漏

      2016-02-05 02:32:54盧康杰
      中國教育網(wǎng)絡(luò) 2016年12期
      關(guān)鍵詞:編譯器內(nèi)核字節(jié)

      文/盧康杰

      UniSan:防止操作系統(tǒng)內(nèi)核中由未初始化導(dǎo)致的信息泄漏

      文/盧康杰

      盧康杰

      佐治亞理工學(xué)院一名5年級計(jì)算機(jī)科學(xué)博士生,導(dǎo)師為Wenke Lee和Taesoo Kim。他的研究興趣是發(fā)現(xiàn)并解決系統(tǒng)安全,軟件安全,及手機(jī)安全領(lǐng)域的根本性安全問題。他的研究成果頗受學(xué)術(shù)圈認(rèn)可,目前他已經(jīng)發(fā)表8篇四大頂級安全會議的文章。

      個(gè)人主頁:

      http://www.cc.gatech.edu/~klu38。

      操作系統(tǒng)內(nèi)核作為可信計(jì)算基(TCB),其安全性是至關(guān)重要的。為保證內(nèi)核的安全性,多種安全機(jī)制已經(jīng)被普遍應(yīng)用,其中主要包括kASLR和StackGuard。然而這兩種安全機(jī)制的有效性的前提是內(nèi)核中沒有信息泄漏。換句話說,如果有信息泄漏,kASLR和StackGuard將會變得沒有意義,因?yàn)樗鼈兯蕾嚨囊恍╇S機(jī)值會被泄漏。那么問題來了,內(nèi)核中是否存在大量的信息泄露?我們通過調(diào)研分析發(fā)現(xiàn)答案是肯定的:內(nèi)核中存在大量的信息泄漏漏洞。比如,僅2013年就有近60個(gè)有CVE的Linux內(nèi)核信息漏洞。隨著進(jìn)一步研究發(fā)現(xiàn)大部分信息泄漏(大約60%)是因?yàn)樽x取未初始化內(nèi)存(uninitialized data read)導(dǎo)致,如圖1所示。

      可以想象一下,如果建立一個(gè)內(nèi)存對象(memory object)但不去初始化它,那么讀取這個(gè)內(nèi)存對象所得到的數(shù)據(jù)將會是以前遺留在內(nèi)存中的一些數(shù)據(jù)。如果這些數(shù)據(jù)包含kASLR隨機(jī)過的地址,StackGuard使用的隨機(jī)canary,或者是之前用戶遺漏的密碼等重要信息,那么就會造成這些重要信息的泄漏。而導(dǎo)致讀取未初始化內(nèi)存的原因又分為兩種:程序員的疏忽和編譯器的優(yōu)化。編譯器的問題導(dǎo)致了一個(gè)嚴(yán)重且普遍的問題:即使程序員初始化一個(gè)對象中的所有成員,仍然有一些字節(jié)沒有被初始化。代碼1列出了一個(gè)例子。在這個(gè)例子中程序員初始化了內(nèi)核堆棧對象“ci”的每一個(gè)成員,然而編譯器在第二個(gè)成員“slow”之后插入的3個(gè)填充字節(jié)仍然沒有初始化,當(dāng)“copy_ to_user”把未初始化字節(jié)拷貝給用戶空間時(shí)導(dǎo)致信息泄漏。目前已經(jīng)有很多攻擊利用這樣的信息泄漏來突破kASLR和StackGuard然后實(shí)現(xiàn)iOS越獄,Android root等等攻擊。雖然這個(gè)問題這么嚴(yán)重,然而,目前并沒有有效地防止讀取未初始化內(nèi)存的方法或工具。

      圖1 導(dǎo)致Linux 內(nèi)核信息泄漏原因統(tǒng)計(jì)(2013-2016年)

      為了解決這個(gè)問題讀取未初始化導(dǎo)致信息安全泄漏,我們提出了一種基于LLVM編譯器的方法。簡單來說,需要通過細(xì)顆粒度的(字節(jié)級別)、跨函數(shù)的、精確的可到達(dá)性和初始化性程序分析來檢查是否存在這樣一些不安全內(nèi)存對象:存在至少一條程序路徑使得一個(gè)內(nèi)存對象在離開內(nèi)核空間的時(shí)候并沒有完全被初始化。當(dāng)檢測出這樣的內(nèi)存對象以后,我們會在內(nèi)核中插入一些代碼對這些內(nèi)存對象進(jìn)行置零初始化。在實(shí)現(xiàn)UniSan過程中,通過設(shè)計(jì)很多方法來保證程序分析的完全性(也就是沒有漏報(bào)),比如解決了找間接調(diào)用對象的問題。目前已經(jīng)基于LLVM實(shí)現(xiàn)了UniSan,并且用它來保護(hù)最新的Linux內(nèi)核和Android內(nèi)核。實(shí)驗(yàn)結(jié)果顯示UniSan保護(hù)過的內(nèi)核運(yùn)行非常穩(wěn)定,毫無問題。作為驗(yàn)證,我們發(fā)現(xiàn)UniSan能完全防止已有的信息安全漏洞并且發(fā)現(xiàn)大量的新漏洞。

      代碼1 編譯器優(yōu)化插入未初始化的填充字節(jié),導(dǎo)致信息泄漏

      從性能角度看,UniSan幾乎沒有引起任何性能的降低(大多數(shù)情況下,性能影響小于0.5%)。綜合這些實(shí)驗(yàn)結(jié)果,UniSan以一種有效的,高性能的,無漏報(bào)的方法解決了操作系統(tǒng)內(nèi)核中由讀取未初始化內(nèi)存導(dǎo)致的普遍的信息泄漏問題。

      (注:原文發(fā)表在ACM CCS 2016,更多細(xì)節(jié)請看UniSan文章:http://www.cc.gatech.edu/~klu38/ publications/unisan-ccs16.pdf)

      猜你喜歡
      編譯器內(nèi)核字節(jié)
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      基于相異編譯器的安全計(jì)算機(jī)平臺交叉編譯環(huán)境設(shè)計(jì)
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      簡談MC7字節(jié)碼
      通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
      編譯器無關(guān)性編碼在微控制器中的優(yōu)勢
      册亨县| 垫江县| 丹凤县| 威宁| 阿城市| 肇源县| 凤城市| 乌兰察布市| 霍邱县| 依兰县| 隆化县| 江永县| 兴国县| 涡阳县| 静海县| 武义县| 太白县| 怀集县| 克东县| 越西县| 乌拉特中旗| 陵川县| 天津市| 开鲁县| 灵宝市| 怀集县| 丰台区| 赤城县| 五莲县| 农安县| 扎兰屯市| 濉溪县| 吐鲁番市| 荥经县| 固原市| 都昌县| 华池县| 江口县| 浦县| 黔西县| 铜梁县|