長期維護嵌入式 Linux 內核變得容易
Pengutronix 內核黑客 Jan Lübbe 總結了嵌入式 Linux 中正在不斷增長的安全威脅,並在這次歐洲嵌入式 Linux 會議上概述了一個計劃,以保持長期設備的安全和功能完整。 Linux 基金會
安全漏洞只發生在 Windows 上的好日子正在快速過去。惡意軟體黑客和拒絕服務老手們正在越來越多地瞄準過時的嵌入式 Linux 設備,因此在 10 月的 歐洲嵌入式 Linux 會議 (ELCE)上的幾個演講的主題就與修復 Linux 安全漏洞相關。
最值得去聽的講演之一是 Pengutronix 內核黑客 Jan Lübbe 的《長期維護或管理(或免管理)嵌入式系統 10 年以上》。在總結嵌入式 Linux 中不斷增長的安全威脅後,Lübbe 制定了一項計劃,以確保長期設備的安全和功能完整。 Lübbe 說:「我們需要遷移到更新、更穩定的內核,並進行持續維護以修復關鍵漏洞。我們需要做上游更新和自動化流程,並建立一個可持續的工作流程。我們沒有理由讓系統中仍留有過時的軟體。」
隨著 Linux 設備變得越來越老,傳統的生命周期過程已經不再適用。 Lübbe 說:「通常,你會從 SoC 供應商或主線上獲取內核、構建系統,並添加到用戶空間。你可以定製和添加程序,並做一些測試。但是,在此之後有 15 年的維護階段,你最好期望平台不會發生變化、不會想要添加新的功能、不需要實施管理調整。」
所有這些變化,越來越多地導致你的系統暴露出新的錯誤,並需要大量更新以才能與上游軟體保持同步。 Lübbe 說:「在內核中發生導致問題的錯誤並不總是無意的」。對於去年在 Allwinner 內核中發現的後門,他又補充說:「這些供應商的內核從來不會執行主線內核社區的審查流程」。
Lübbe 繼續說:「你不能認為你的供應商一直沒問題。也許只有一兩個工程師查看過後門代碼這塊。如果補丁發布在 Linux 內核郵件列表上,就不會有這種事,因為總會有人注意到。硬體供應商不關心安全或維護,也許你會在一兩年後得到更新,但是即使這樣,他們從一個固定版本開始開發,到他們發布穩定的版本通常需要幾年的時間。如果你在這個基礎上再開始開發,可能又過了半年,這就更過時了。」
越來越多的嵌入式開發人員在 長期穩定 (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 和主線列表上的安全公告。你只需要問自己「該安全公告是否影響到了你」。他補充說:「如果你的內核足夠新,就沒有太多的工作。你不會希望通過在新聞中看到你的設備才獲得有關你的產品的反饋。」
via: https://www.linux.com/news/event/ELCE/2017/long-term-embedded-linux-maintenance-made-easier
作者:ERIC BROWN 譯者:geekpi 校對:jasminepeng
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive