pengutronix 核心黑客 jan lübbe 總結了嵌入式 linux 中正在不斷增長的安全威脅,并在這次歐洲嵌入式 linux 會議上概述了一個計劃,以保持長期裝置的安全和功能完整。
安全漏洞隻發生在 windows 上的好日子正在快速過去。惡意軟體黑客和拒絕服務老手們正在越來越多地瞄準過時的嵌入式 linux 裝置,是以在 10 月的歐洲嵌入式 linux 會議embedded linux conference europe(elce)上的幾個演講的主題就與修複 linux 安全漏洞相關。
最值得去聽的講演之一是 pengutronix 核心黑客 jan lübbe 的《長期維護或管理(或免管理)嵌入式系統 10 年以上》。在總結嵌入式 linux 中不斷增長的安全威脅後,lübbe 制定了一項計劃,以確定長期裝置的安全和功能完整。 lübbe 說:“我們需要遷移到更新、更穩定的核心,并進行持續維護以修複關鍵漏洞。我們需要做上遊更新和自動化流程,并建立一個可持續的工作流程。我們沒有理由讓系統中仍留有過時的軟體。”
随着 linux 裝置變得越來越老,傳統的生命周期過程已經不再适用。 lübbe 說:“通常,你會從 soc 供應商或主線上擷取核心、建構系統,并添加到使用者空間。你可以定制和添加程式,并做一些測試。但是,在此之後有 15 年的維護階段,你最好期望平台不會發生變化、不會想要添加新的功能、不需要實施管理調整。”
所有這些變化,越來越多地導緻你的系統暴露出新的錯誤,并需要大量更新以才能與上遊軟體保持同步。 lübbe 說:“在核心中發生導緻問題的錯誤并不總是無意的”。對于去年在 allwinner 核心中發現的後門,他又補充說:“這些供應商的核心從來不會執行主線核心社群的審查流程”。
lübbe 繼續說:“你不能認為你的供應商一直沒問題。也許隻有一兩個工程師檢視過後門代碼這塊。如果更新檔釋出在 linux 核心郵件清單上,就不會有這種事,因為總會有人注意到。硬體供應商不關心安全或維護,也許你會在一兩年後得到更新,但是即使這樣,他們從一個固定版本開始開發,到他們釋出穩定的版本通常需要幾年的時間。如果你在這個基礎上再開始開發,可能又過了半年,這就更過時了。”
越來越多的嵌入式開發人員在長期穩定long term stable(lts)核心上建構長期産品。但這并不意味着沒事了。lübbe 說:“一個産品釋出後,人們經常不再遵循穩定的發行鍊,也不再應用安全更新檔。這樣你會得到兩個最糟糕的結果:過時的核心和沒有安全性。你失去了多人測試的好處。”
lübbe 指出,使用像 red hat 這樣的面向伺服器的發行版的 pengutronix 客戶經常由于快速的定制、需要系統管理者幹預的部署和更新系統而遇到問題。
“更新對一些東西有用,特别是在 x86 上,但每個項目基本上是自己建立基礎設施來更新到新版本。”
許多開發人員選擇把向後移植作為更新長期産品的解決方案。lübbe 說:“開始時很容易,但是一旦你不處于項目的維護範圍,他們就不會告訴你所使用的版本是否受到一個 bug 的影響,是以很難判斷一個修複是否相關。于是你不停打更新檔和更新,而 bug 也在不斷累積,而這些你必須自己維護,因為其他人不使用這些更新檔。使用開源軟體的好處就丢失了。”
跟随上遊項目
lübbe 認為,最好的解決方案是跟蹤由上遊項目維護的版本。“我們主要關注基于主線核心的開發,是以我們在産品和主流核心及其他上遊項目之間盡可能沒有差别。長期系統在主線核心上得到很好的支援。大多數不使用 3d 圖形的系統隻需要很少的更新檔。較新的核心版本還有很多新的強化功能,這些可以減少漏洞的影響。
跟随主線發展對許多開發人員來說似乎令人畏懼,但是如果從一開始就這樣,然後堅持下去,就會相對容易一些,lübbe 說:“你需要為系統上做的一切制定流程。你總需要知道什麼軟體正在運作,這在使用良好的建構系統時會更容易。每個軟體版本應定義完整的系統,以便你可以更新相關的一切。如果你不知道那裡有什麼,你就不能解決它。你也需要一個自動測試和自動部署更新。”
為了“減少更新周期”,lübbe 建議在開始開發時使用最新的 linux 核心,并且在進入測試時才轉到穩定的核心。之後,他建議每年将系統中的所有軟體(包括核心、建構系統、使用者空間、glibc 群組件(如 openssl))更新為當年上遊項目支援的版本。
lübbe 說:“得到更新并不意味着你需要部署。如果沒有看到安全漏洞,你可以把更新檔放在一邊,需要時它再用就行。”
最後,lübbe 建議每個月檢視釋出公告,并且每周檢查 cve 和主線清單上的安全公告。你隻需要問自己“該安全公告是否影響到了你”。他補充說:“如果你的核心足夠新,就沒有太多的工作。你不會希望通過在新聞中看到你的裝置才獲得有關你的産品的回報。”
本文作者:佚名
來源:51cto