Linux內(nèi)核結(jié)構(gòu) :
Linux內(nèi)核由七個(gè)部分構(gòu)成,每個(gè)不同的部分又有多個(gè)內(nèi)核模塊組成,結(jié)構(gòu)框圖如下:
Linux裁剪場景分析:
通過分析Linux內(nèi)核源代碼可以看到不同目錄中存放著不同模塊的實(shí)現(xiàn)代碼,同時(shí)在編譯時(shí)可以config中配置的信息來控制哪些模塊編譯到最終的二進(jìn)制中,哪些模塊被裁剪掉,比如以IPV6模塊為例,控制該模塊的配置名稱為CONFIG_IPV6,如果該配置項(xiàng)為設(shè)置為y,則表示該功能模塊未被編譯到最終的二進(jìn)制文件中,如下所示:
如果該功能模塊被裁剪了,即使該漏洞沒有被補(bǔ)丁修復(fù),那么該功能模塊中存在的漏洞在二進(jìn)制中也是不受影響的,因此和IPV6相關(guān)的漏洞在漏洞檢測時(shí)就應(yīng)該在報(bào)告中明顯的標(biāo)識(shí)出不受該漏洞的影響,如CVE-2013-0343(Linux kernel 3.8之前版本內(nèi)的net/ipv6/addrconf.c中的函數(shù) ipv6_create_tempaddr沒有正確處理IPv6臨時(shí)地址生成問題,可允許遠(yuǎn)程攻擊者通過 ICMPv6 Router Advertisement (RA) 消息,造成拒絕服務(wù),然后獲取敏感信息)。
業(yè)界二進(jìn)制SCA工具不能檢測的原因分析:
為什么目前業(yè)界通常的二進(jìn)制SCA工具無法做到精準(zhǔn)檢測,原因是因?yàn)闃I(yè)界二進(jìn)制SCA工具是基于檢測到的開源軟件名稱和版本號(hào)來關(guān)聯(lián)出已知漏洞清單的,而這種通過裁剪功能模塊的方法來應(yīng)用Linux內(nèi)核,開源軟件名稱和版本號(hào)是不會(huì)改變的,因此工具就無法精準(zhǔn)的檢測出來了。
二進(jìn)制SCA工具如何實(shí)現(xiàn)該功能:
要實(shí)現(xiàn)Linux內(nèi)核裁剪場景下的已知漏洞精準(zhǔn)檢測,二進(jìn)制SCA工具必須在原來檢測開源軟件名稱和版本號(hào)的基礎(chǔ)上,需要實(shí)現(xiàn)更新細(xì)顆粒度的檢測技術(shù),基于源代碼文件顆粒度、函數(shù)顆粒度的檢測能力,從而實(shí)現(xiàn)裁剪場景下已知漏洞的精準(zhǔn)檢測,即可以知道哪些代碼被編譯到最終的二進(jìn)制文件中,哪些代碼沒有參與編譯。同時(shí)漏洞庫也必須實(shí)現(xiàn)對(duì)細(xì)顆粒維度的支持,即漏洞信息必須精準(zhǔn)定位是由哪些文件和函數(shù)中的代碼片段引入的。
以CVE-2013-0343為例,通過分析漏洞描述信息和Linux內(nèi)核源代碼,可以獲取到該漏洞和下面這些位置代碼相關(guān)的定位信息:
"CVE-2013-0343" : {
"net/ipv6/addrconf.c" : [
“addrconf_add_ifaddr”,
“addrconf_dad_begin”,
“addrconf_dad_stop”,
“addrconf_dad_work”,
“addrconf_del_ifaddr”,
“addrconf_prefix_rcv”,
“addrconf_verify_rtnl”,
“addrconf_verify_work”,
“inet6_addr_add”,
“inet6_addr_del”,
“inet6_addr_modify”,
“inet6_rtm_deladdr”,
“inet6_rtm_newaddr”,
“inet6_set_iftoken”,
“inet6_set_link_af”,
“ipv6_create_tempaddr”,
“manage_tempaddrs”
]
}
基于如果引入漏洞的源代碼沒有參與編譯出二進(jìn)制,那么編譯出來的二進(jìn)制也就是不存在該漏洞的原理;因此只要二進(jìn)制SCA工具能檢測出上述位置的源代碼沒有參與編譯出最終的vmlinux二進(jìn)制文件,那么此vmlinux文件就不受CVE-2013-0343漏洞的影響。
總結(jié):
二進(jìn)制SCA工具要想更好的輔助安全人員實(shí)現(xiàn)安全審計(jì)、降低漏洞檢測的誤報(bào)率,必須向更細(xì)顆粒度的檢測維度發(fā)展,而不僅僅停留在開源軟件的層面,同時(shí)對(duì)漏洞庫的要求也需要向細(xì)顆粒度的精準(zhǔn)信息提出的挑戰(zhàn)。
審核編輯:湯梓紅
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
804瀏覽量
42177 -
Linux
+關(guān)注
關(guān)注
87文章
11469瀏覽量
212917 -
SCA
+關(guān)注
關(guān)注
1文章
37瀏覽量
12123
發(fā)布評(píng)論請(qǐng)先 登錄
Linux內(nèi)核內(nèi)存泄漏怎么辦
淺析Linux系統(tǒng)開源漏洞檢測工具
Linux的內(nèi)核教程
Linux內(nèi)核配置系統(tǒng)詳解
Linux內(nèi)核提權(quán)攻擊研究

基于符號(hào)執(zhí)行技術(shù)實(shí)現(xiàn)的驅(qū)動(dòng)程序的漏洞檢測

如何修復(fù)Linux內(nèi)核存在的TCP漏洞?
linux內(nèi)核是什么_linux內(nèi)核學(xué)習(xí)路線
linux內(nèi)核參數(shù)設(shè)置_linux內(nèi)核的功能有哪些

谷歌和英特爾警告Linux內(nèi)核都存在高嚴(yán)重性藍(lán)牙漏洞
最硬核的Linux內(nèi)核文章

快速理解什么是Linux內(nèi)核以及Linux內(nèi)核的內(nèi)容

評(píng)論