華為云計算 云知識 Linux內(nèi)核漏洞精準(zhǔn)檢測
Linux內(nèi)核漏洞精準(zhǔn)檢測

【摘要】 通常引用開源軟件的模式是引入開源軟件的動態(tài)庫或jar包,因此在漏洞檢測時漏洞誤報率會非常的低,但對在Linux內(nèi)核卻有所不同,由于Linux內(nèi)核功能模塊非常的豐富和龐大,實際使用時會根據(jù)業(yè)務(wù)需求進(jìn)行相應(yīng)的裁剪,因此如何在該場景下實現(xiàn)漏洞的精準(zhǔn)檢測,降低漏洞檢測的誤報率就尤為突出。  

Linux內(nèi)核結(jié)構(gòu)

Linux內(nèi)核由七個部分構(gòu)成,每個不同的部分又有多個內(nèi)核模塊組成,結(jié)構(gòu)框圖如下:

圖片引用來自ttps://blog.csdn.net/weixin_44742824/article/details/113814934

 

Linux裁剪場景分析:

通過分析Linux內(nèi)核源代碼可以看到不同目錄中存放著不同模塊的實現(xiàn)代碼,同時在編譯時可以config中配置的信息來控制哪些模塊編譯到最終的二進(jìn)制中,哪些模塊被裁剪掉,比如以IPV6模塊為例,控制該模塊的配置名稱為CONFIG_IPV6,如果該配置項為設(shè)置為y,則表示該功能模塊未被編譯到最終的二進(jìn)制文件中,如下所示:

如果該功能模塊被裁剪了,即使該漏洞沒有被補(bǔ)丁修復(fù),那么該功能模塊中存在的漏洞在二進(jìn)制中也是不受影響的,因此和IPV6相關(guān)的漏洞在漏洞檢測時就應(yīng)該在報告中明顯的標(biāo)識出不受該漏洞的影響,如CVE-2013-0343(Linux kernel 3.8之前版本內(nèi)的net/ipv6/addrconf.c中的函數(shù) ipv6_create_tempaddr沒有正確處理IPv6臨時地址生成問題,可允許遠(yuǎn)程攻擊者通過 ICMPv6 Router Advertisement (RA) 消息,造成拒絕服務(wù),然后獲取敏感信息。)。

 

業(yè)界二進(jìn)制SCA工具不能檢測的原因分析:

為什么目前業(yè)界通常的二進(jìn)制SCA工具無法做到精準(zhǔn)檢測,原因是因為業(yè)界二進(jìn)制SCA工具是基于檢測到的開源軟件名稱和版本號來關(guān)聯(lián)出已知漏洞清單的,而這種通過裁剪功能模塊的方法來應(yīng)用Linux內(nèi)核,開源軟件名稱和版本號是不會改變的,因此工具就無法精準(zhǔn)的檢測出來了。

 

二進(jìn)制SCA工具如何實現(xiàn)該功能:

要實現(xiàn)Linux內(nèi)核裁剪場景下的已知漏洞精準(zhǔn)檢測,二進(jìn)制SCA工具必須在原來檢測開源軟件名稱和版本號的基礎(chǔ)上,需要實現(xiàn)更新細(xì)顆粒度的檢測技術(shù),基于源代碼文件顆粒度、函數(shù)顆粒度的檢測能力,從而實現(xiàn)裁剪場景下已知漏洞的精準(zhǔn)檢測,即可以知道哪些代碼被編譯到最終的二進(jìn)制文件中,哪些代碼沒有參與編譯。同時漏洞庫也必須實現(xiàn)對細(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工具要想更好的輔助安全人員實現(xiàn)安全審計、降低漏洞檢測的誤報率,必須向更細(xì)顆粒度的檢測維度發(fā)展,而不僅僅停留在開源軟件的層面,同時對漏洞庫的要求也需要向細(xì)顆粒度的精準(zhǔn)信息提出的挑戰(zhàn)。

 

文末福利:華為云 漏洞掃描服務(wù) VSS 基礎(chǔ)版限時 免費體驗 >>>