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