設(shè)備年年新,內(nèi)核永不換。早該被淘汰的Linux內(nèi)核版本,依然陰魂不散地扎根在各種各樣的設(shè)備中,驅(qū)動(dòng)著這些設(shè)備如同《行尸走肉》的喪尸游蕩在世界各地。
Linux內(nèi)核安全漏洞是新聞?lì)^條???。最近又有一個(gè)隱身十年之久的嚴(yán)重內(nèi)核漏洞被曝光了。但是,這到底代表著什么現(xiàn)實(shí)意義呢?為什么Linux內(nèi)核安全很重要?老舊內(nèi)核上的漏洞在眾多設(shè)備中茍延殘喘到底有什么影響?
Linux是操作系統(tǒng)的王者
毋庸置疑,Linux系操作系統(tǒng)的流行度無(wú)人能出其右:3/4的IoT設(shè)備運(yùn)行Linux;2/3的在線服務(wù)器用Linux;70%的平板基于安卓系統(tǒng)(修改版Linux內(nèi)核)——Linux簡(jiǎn)直無(wú)處不在!
這里面有部分是因?yàn)長(zhǎng)inux是開(kāi)源系統(tǒng),開(kāi)發(fā)者不用付授權(quán)費(fèi),很樂(lè)于取用。Linux是電子芯片生產(chǎn)商常會(huì)附帶的軟件開(kāi)發(fā)包(SDK)。這為開(kāi)發(fā)者提供了工作參考平臺(tái),以及硬件能力演示平臺(tái)。
有了參考開(kāi)發(fā)平臺(tái),制造商便只需操起該操作系統(tǒng)和SDK,編譯自有應(yīng)用程序,然后就可以準(zhǔn)備發(fā)售新產(chǎn)品了。然而,不幸的是,這些超方便的樣例和操作系統(tǒng)往往十分老舊,而且通常早就不被支持了。
但是,為什么老舊內(nèi)核問(wèn)題大大呢?IoT烤箱或者車載娛樂(lè)系統(tǒng)不是最先進(jìn)科技又何妨嘛?
2015年的一份研究論文揭示:家用和小型辦公室路由器中,有3/4都裝的是過(guò)時(shí)Linux內(nèi)核固件。其中大多數(shù)設(shè)備漏洞密布,很多漏洞都沒(méi)打補(bǔ)丁,也就是說(shuō),這些設(shè)備很容易被漏洞利用。
我們可以深入探討一下Linux內(nèi)核基礎(chǔ)。為什么它很重要?它到底是做什么的?當(dāng)內(nèi)核不再受支持,會(huì)發(fā)生什么?為什么老舊內(nèi)核會(huì)對(duì)設(shè)備和網(wǎng)絡(luò)安全造成嚴(yán)重影響?
內(nèi)核是操作系統(tǒng)的心臟
我們很容易就會(huì)忘了,全功能操作系統(tǒng)其實(shí)不僅僅局限在桌面電腦和服務(wù)器上;操作系統(tǒng)根本就是到處都是。車載衛(wèi)星導(dǎo)航系統(tǒng)能用,聯(lián)網(wǎng)冰箱會(huì)發(fā)來(lái)郵件,機(jī)上娛樂(lè)系統(tǒng)還能追美劇,這一切似乎都太自然了。
但是,即便家里的路由器只有個(gè)Web界面和幾盞小燈閃個(gè)不停,IoT兒童玩具就是唱唱搖籃曲和監(jiān)視孩子狀況,它們依然有很多共性,比如全都運(yùn)行有操作系統(tǒng),而且很大可能是基于Linux的操作系統(tǒng)。幾乎所有這些設(shè)備都可以運(yùn)行其他軟件,至于這“其他”軟件的功能,那可就包羅萬(wàn)象沒(méi)有做不到只有想不到了。
您設(shè)備上操作系統(tǒng)的心臟當(dāng)然就是內(nèi)核了。它是掌管一切的看門人。硬件、用戶許可、權(quán)限、內(nèi)存、軟件和接口,統(tǒng)統(tǒng)由它掌控。內(nèi)核是操作系統(tǒng)的核心,其安全性至關(guān)重要。
內(nèi)核的作用就是讓事情易于操作。它讓組件間交互變得抽象,比如,軟件開(kāi)發(fā)者不用知道硬件或RAM內(nèi)部運(yùn)行機(jī)制就可以讀寫文件。
無(wú)論用哪種編程語(yǔ)言,保存文本文件的步驟基本一致:
以寫權(quán)限打開(kāi)“芝士蛋糕配方.txt”將配方寫入文件關(guān)閉“芝士蛋糕配方.txt”這背后的動(dòng)作其實(shí)很復(fù)雜。如果你想的是CPU實(shí)際執(zhí)行的指令和所有設(shè)備間交互操作,那真是相當(dāng)、非常、極度復(fù)雜。有板磚厚的教科書專門詳解內(nèi)核驅(qū)動(dòng),也有一整學(xué)期的大學(xué)課程帶你淺嘗操作系統(tǒng)。
黑盒
就保存文件這個(gè)例子,寫文件的過(guò)程就涉及到管理內(nèi)存分配的內(nèi)核組件和驅(qū)動(dòng)、文件系統(tǒng)結(jié)構(gòu)、硬盤驅(qū)動(dòng)、字符驅(qū)動(dòng)、塊驅(qū)動(dòng)、芯片驅(qū)動(dòng)等等等等。內(nèi)核管理著所有這些交互,這樣程序員才能方便地打開(kāi)文件,并保存他們的芝士蛋糕配方……
如果這些內(nèi)核組件中有哪個(gè)出了問(wèn)題,黑客就能以此為橋頭堡,侵入你的系統(tǒng)。舉個(gè)例子,如果文件系統(tǒng)驅(qū)動(dòng)處理不了超長(zhǎng)文件名,黑客就可利用該漏洞來(lái)突破系統(tǒng)。
只要內(nèi)核某部分出了漏洞,很多安全因素就會(huì)粉墨登場(chǎng)了。突然之間,你的整個(gè)操作系統(tǒng)和設(shè)備,都有可能因?yàn)檫@個(gè)似乎不起眼的問(wèn)題,而淪為漏洞利用的獵物。
內(nèi)核的問(wèn)題在于版本過(guò)多
Linux內(nèi)核可不止一個(gè),內(nèi)核也不過(guò)是個(gè)軟件,與其他任何軟件應(yīng)用一樣,它也是有很多版本的。事實(shí)上,官方Linux內(nèi)核版本就不下幾十個(gè),非官方版本更是不計(jì)其數(shù)。開(kāi)源,就意味著任何設(shè)備工程師、程序員或業(yè)余黑客,都可以下載、鼓搗和打造自己的定制版內(nèi)核。
仔細(xì)觀察,你就發(fā)現(xiàn),Linux內(nèi)核編號(hào)也跟其他軟件一樣,是有規(guī)律的。有內(nèi)核版本、主版本、次版本和補(bǔ)丁版本。當(dāng)然,也可以加其他字母和數(shù)字,標(biāo)識(shí)是貝塔版還是預(yù)發(fā)行版,或者定制版內(nèi)核。
編譯Linux內(nèi)核的過(guò)程并不特別復(fù)雜。業(yè)余玩家在讀幾個(gè)小時(shí)指南,指天咒地一番,順帶干掉幾杯咖啡之后,也是能從源代碼編譯出一個(gè)Linux內(nèi)核的(軟件大神圣光普照)。
但很不幸,也正是這個(gè)容易的過(guò)程,為漏洞和配置問(wèn)題洞開(kāi)了大門。
既然也是軟件,漏洞是免不了的。常見(jiàn)的“長(zhǎng)期支持”內(nèi)核版本是 2.6.32,路由器、IoT設(shè)備,甚至某些寶馬車載娛樂(lè)系統(tǒng)中都能找到。
對(duì) 2.6.32 版Linux內(nèi)核來(lái)個(gè)快速漏洞掃描,你會(huì)發(fā)現(xiàn)182個(gè)已知漏洞,其中數(shù)十個(gè)都相當(dāng)嚴(yán)重。
但是,首先,別緊張,這些漏洞并非總是應(yīng)用到所有內(nèi)核配置上的。比如說(shuō),如果你的設(shè)備不用藍(lán)牙,那么藍(lán)牙組件中的漏洞就不會(huì)影響到你(雖然有時(shí)候很難知道內(nèi)核組件交互情況)。
然后,你需要謹(jǐn)記的,是哪些內(nèi)核版本已經(jīng)打上了已知漏洞補(bǔ)丁。比如說(shuō),Linux網(wǎng)卡驅(qū)動(dòng)組件里發(fā)現(xiàn)了L2TP相關(guān)漏洞。但只要我們查閱受影響內(nèi)核版本列表,就會(huì)看到 2.6.32.20 已經(jīng)是最后一個(gè)脆弱版本了。這意味著,官方維護(hù)的Linux內(nèi)核 2.6.32.21 及其以后版本,均不受該漏洞影響。
修補(bǔ)漏洞成為老大難
受影響內(nèi)核自然要被更新。但是,內(nèi)核 2.6.32 身上發(fā)生了什么呢?官方宣布它已“壽終正寢”。也就是說(shuō),該版本內(nèi)核不再受支持,而最新的官方更新,是在2016年年中。
想象一下,“壽終正寢”對(duì)于新發(fā)現(xiàn)的漏洞是個(gè)什么意思?Linux社區(qū)不可能無(wú)限期更新老版內(nèi)核,于是,最有可能的情況,是新漏洞永遠(yuǎn)不會(huì)被修復(fù)。這種情況下,更新內(nèi)核的責(zé)任就落到了設(shè)備制造商身上。然而,針對(duì)特定漏洞手動(dòng)修復(fù)內(nèi)核,比簡(jiǎn)單下載最新版受支持的內(nèi)核,要復(fù)雜得多。
有些廠商訂閱第三方服務(wù)提供內(nèi)核補(bǔ)丁,其他可能自己修復(fù)。
或者,如調(diào)查發(fā)現(xiàn)的,大多數(shù)設(shè)備就這么干脆不更新了,甚至上周剛買的全新路由器,都有可能運(yùn)行的是漏成篩子的老舊內(nèi)核。
2015年來(lái)的研究發(fā)現(xiàn):制造商并未對(duì)所生產(chǎn)設(shè)備進(jìn)行合理的維護(hù)
對(duì)路由器內(nèi)核版本來(lái)個(gè)現(xiàn)場(chǎng)抽樣速查。時(shí)下4種型號(hào)的固件鏡像中,3個(gè)跑的是過(guò)時(shí)內(nèi)核,其中一個(gè)的內(nèi)核還是2009年發(fā)布的;最新的內(nèi)核(新發(fā)布的設(shè)備上的)倒是挺新,但也是在下個(gè)月就不再支持了。
制造商和開(kāi)發(fā)者是最終責(zé)任人
內(nèi)核版本真的很重要!內(nèi)核是操作系統(tǒng)的心臟,管理著包括硬件、內(nèi)存、應(yīng)用和用戶權(quán)限在內(nèi)的所有東西。如果內(nèi)核存在漏洞,設(shè)備就有可能被黑。內(nèi)核漏洞經(jīng)常被發(fā)現(xiàn),但只有當(dāng)前內(nèi)核版本才會(huì)被更新和修復(fù)。
落實(shí)到設(shè)備上,制造商和開(kāi)發(fā)者,是提供維護(hù)良好的安全操作系統(tǒng)的最終責(zé)任人。最近,技術(shù)巨頭華碩才與美國(guó)聯(lián)邦貿(mào)易委員會(huì)就不安全路由器和云服務(wù)達(dá)成了和解。對(duì)很多制造商來(lái)說(shuō),該案件傳達(dá)的消息似乎尚未落地??赡苓€需更多法律訴訟,甚或立法,才能迫使制造商嚴(yán)肅對(duì)待設(shè)備安全問(wèn)題。
隨著聯(lián)網(wǎng)設(shè)備的激增,技術(shù)產(chǎn)業(yè)的每個(gè)人,都應(yīng)將眼光投注在安全上。推出令人激動(dòng)的新技術(shù),卻沿用已知漏洞肆虐的老舊內(nèi)核,太不應(yīng)該!