開源的Linux作業系統,由於能夠免費取得等特性,而廣受各界採用,無論是雲端服務、Android智慧型手機、網域名稱伺服器,以及超級電腦等,幾乎都是此類作業系統的天下,許多物聯網裝置也同樣使用Linux來開發。然而許多企業運用來開發連網設備產品之後,卻可能因為難以維護相關韌體,導致漏洞一旦被發現的時候,企業需要花費大量時間才能修復,這種情況在最近幾年可說是時有所聞。

到底要如何改變這種窘境?Moxa軟體發展中心專案副理林上智(SZ Lin)在2020臺灣資安大會上,以自身參與嵌入式Linux設計與開發的經驗,呼籲開發者要從「挑選Linux核心(Kernel)」做起,後續才能減少維護和修補漏洞的負擔。

林上智指出,近年來許多執行Linux作業系統的連網設備,陸續被發現安全漏洞,甚至可能已經被駭客用來發動攻擊,其原因與他們採用的作業系統缺乏維護有關。他引用了德國弗勞恩霍夫通訊協會(Fraunhofer Institute for Communication,FKIE)對於家用路由器的研究報告,該份報告針對7個廠商推出的127款設備進行研究,指出其中有許多執行的是久未更新的舊版Linux核心,甚至有46款在一年內都沒有發布修補軟體等情況。林上智說,這些路由器廠商沒有定期修補漏洞是最主要的問題,而使用極為老舊的作業系統核心倒是其次。探究其原因,他認為很可能是一開始沒有選擇合適的核心導致。

而對於運用於製造業、醫療、政府單位等關鍵基礎設施的物聯網裝置,最近幾年政府也開始要求企業必須遵循有關標準。像是由美國國家標準暨技術研究院(NIST)推出的供應鏈風險管理標準SP800-161,由國際自動化學會(ISA)制訂的ISA/IEC 62443-4-1,以及北美電力可靠度公司(NERC)發表的CIP-010-2等。

但即使不是運用在上述關鍵基礎設施場域的連網裝置,還是有可能因為設備的漏洞遭到揭露,甚至是上到新聞版面,導致企業必須面臨用戶對於資安防護的存疑,若是因此洩露歐洲民眾的個資,還可能遭到歐盟的裁罰,對於如此的情況,企業勢必要更加正視物聯網裝置的資安維護工作。

挑選合適Linux核心是增加設備資安的開始

那麼,企業要做好Linux連網裝置的安全,林上智認為,最好從開發的初期流程著手。因為,企業想要修補軟體的缺陷,在軟體開發生命週期(SDLC)的各階段中,所需的資源和成本會隨之不斷增加。根據NIST的研究,在產品上市之後才來處理軟體缺陷,比起在開發初期,也就是在收集與分析需求,以及設計架構的階段,上市後耗費的成本是開發初期的30倍。林上智說,在他的經驗裡,前述兩個階段修補花費所需資源,差距實際上可是超過NIST指出的比例。

其中,Linux作業系統的核心,由於牽涉範圍甚廣,因此一旦出現漏洞,就有可能導致企業疲於修補。因此,林上智表示,在軟體開發流程裡,依據營運模型和相關需求,挑選合適的核心,是改善連網裝置安全的重要課題,他還說核心「早期選得好,之後沒煩惱」。

但究竟要如何挑選合適的核心版本?林上智說這個沒有能夠一體適用的答案,因為企業必須根據開發的時程、資源,以及藍圖等層面,進行評估,但是有3個大原則可以依循,首先是選用的核心必須擁有開發連網設備所需之核心技術(Core Technology),再者是遵循足夠優秀(Good Enough)和簡單易懂(KISS)的原則,做為選擇的考量。

林上智以城市基礎建設系統(Civil Infrastructure System)的連網裝置開發為例,這類的裝置所採用的Linux核心,必須要有工業等級的可用性,還要能夠長達10年以上的支援、維護,以及具備足夠資安防護,進而達到降低開發的成本與時間,以及後續維護的成本等目標。

在市面上企業可選用的Linux核心,基本上包含了Linux基金會推出的主要版本,還有PREEMPT_RT專案,是應用於工業控制即時系統的核心版本。

而根據核心的來源,則可以區分是來自處理器廠商的SoC Board Support Package Kernel,還有Linux基金會推出的長期支援版本(Long Term Support,LTS),以及針對城市基礎建設,由相關業者共同維護的城市基礎建設平臺(Civil Infrastructure Platform,CIP)等。

其中,由處理器廠商提供的Linux核心,其優點是特別針對指定硬體設計,企業能夠快速運用來開發連網裝置,但與一般的核心相比,這種核心也相當仰賴處理器廠商的支援周期長短,而且不同的處理器往往有對應版本的Linux核心,因此企業很有可能因為廠理器廠商終止支援,面臨被迫更換新版核心開發的情況,而在進行漏洞修補的時候,企業也必須對於不同處理器的版本個別開發更新程式。

而Linux基金會推出的LTS版本,則是在他們每年推出的主線版本裡,挑選其中一個分支來開發這種長期維護的版本,該基金會最初的政策是提供2年支援,但目前實際支援的周期大約都延長到6年左右。而這種版本所提供的支援,主要是對於臭蟲和漏洞的修補,並不會加入新的硬體支援,因此,如果企業選擇了LTS版,未來很有可能會面臨無法搭配新的硬體運作的情況。為了解決上述不足的情況,Linux基金會曾一度推出了增加硬體支援的專案,名為Long Term Support Initiative(LTSI),不過目前已經停止開發。

至於著眼於城市基礎建設的CIP,也是從LTS延伸而來,由開發相關設備的廠商共同維護,他們對於核心與主要功能模組(Core Package),計畫維護10年至20年。為何這些廠商決定合作?林上智說,他們目的是要減少自己在維護核心上的心力,進而將更多資源運用在開發設備的主要功能上。

此外,林上智也提醒開發者,千萬不要因為正在開發的測試版核心納入了自己需要的新功能而採用,因為這種版本很可能還有很多臭蟲,會造成企業日後維護上的困擾。

回報上游和慎選必須的套件,可減少日後維護的負擔

值得留意的是,企業很可能會基於商業秘密的考量,取得Linux核心的程式碼後,就想要開發成專屬版本(Own Community),修補的程式碼只有自己能夠使用。林上智說,如果採用這種方式來維護所使用的核心,企業同樣也無法直接套用日後源頭提供的新版本內容,一旦要自行逐次加入相關修補,將會耗費大量的開發資源,尤其是Linux核心大約每3個星期就更新一次,若是企業依照這個周期自己修改大量程式碼,將會是非常繁重的工作。因此,林上智認為,企業應該要採取「Upstream First」的概念,把自己修補完成的程式碼提報給上游,也就是企業取得核心的來源,如此一來,日後只要再從上游升級新版核心,也能一併取得他人修補的內容,避免所有的漏洞都要自己修改的情況。

另一方面能減少Linux連網裝置遭到攻擊的風險,就是只使用必須的套件。雖然許多開發者會把Linux核心相關的套件全部納入,但這也代表了一旦用不到套件出現漏洞,企業還是必須設法修補,反之,如果是沒有採用的套件,即使漏洞的CVSS第3版風險指標達到滿分10分,這些採用此版核心的連網裝置還是不受影響。

熱門新聞


Advertisement