Categories
程式開發

Linux基金會披露最重要的開源組件及其安全問題


Linux基金會披露最重要的開源組件及其安全問題 1

據ZDNet報導,在最新的研究中,Linux基金會確定了最重要的開源組件,並且發現它們的共同問題和安全漏洞。

這份研究報告被稱為Census Program II,由Linux基金會基礎架構聯盟(CII)和Laboratory for Innovation Science at Harvard(LISH)聯合披露。

哪些開源組件使用最多?

研究報告披露了最常用的JavaScript programs:

1.Async

2.Inherits

3.Isarray

4.Kind-of

5.Lodash

6.Minimist

7.Natives

8.Qs

9.Readable-stream

10.String_decoder

而使用最廣泛的非JavaScript軟件組件有:

1.Com.fasterxml.jackson.core:jackson-core

2.Com.fasterxml.jackson.core:jackson-databind

3.Com.google.guava:guava

4.Commons-codec

5.Commons-io

6.Httpcomponents-client

7.Httpcomponents-core

8.Logback-core

9.Org.apache.commons:commons-lang3

10.Slf4j

根據紅帽最新的一份研究表明,開源軟件在企業已經佔據主導地位。情況可能不止如此,另一份更早的研究發現,開源軟件佔所有軟件的80%-90%。今天,很多軟件或程序是建立在開源組件上的。

Census Program II報告有很大意義。雖然不是最終報告,但它是這類分析中的首次重大研究。它不僅向前邁出重要一步,而且提出一種理解和解決開源軟件結構和安全複雜性的方法。

具體來說,它不僅可以識別應用程序中最常用的自由和開源軟件(FOSS)組件,而且能檢查它們潛在的漏洞。

不要輕視小型程序

為開展這項工作,Linux基金會基礎架構聯盟(CII)和LISH與SCA和應用安全公司合作,比如SnykSynopsys網絡安全研究中心。它們將個人使用的數據與公開可用的數據集結合起來,從而識別200多個最常用的開源軟件項目。

當然,研究對像不是你想到的那些大名鼎鼎的開源項目,比如Apache、MySQL、Linux。而是一些在基礎上很重要,使用最廣泛的小型的基礎構建塊程序。

Linux基金會披露最重要的開源組件及其安全問題 2

它們可能很小,有時不超過100行代碼,但卻非常重要。

哈佛商學院教授兼Census II 項目聯合負責人說,“FOSS長期以來一直被視為愛好者的領域。然而,它不僅成為現代經濟的組成部分,並且是我們日常社會生活技術的基本組成部分,比如智能手機、汽車、物聯網以及許多其他技術。了解使用最廣泛和最脆弱的組件有利於我們確保數字經濟和生態系統的持續健康。”

如果你不注意這些隱藏的小型程序,那它們可能帶來大麻煩。例如,OpenSSL “心臟滴血”漏洞,其真正問題不在於OpenSSH安全程序,而是其更底層的加密庫。

假如你是最終用戶,可能從未聽說過這些low-level程序。正如風險資本家Mike Volpi寫道,“開源的真正客戶是開發人員,他們經常發現這些軟件、然後下載並將其集成到他們正在從事項目的原型版本中。”

研究發現,使用和成為最受歡迎的FOSS軟件包的最大貢獻者之間存在高相關性。通過對2017年GitHub數據的分析發現,一些最活躍的FOSS開發人員為項目做出很大貢獻,而他們留名多為微軟、谷歌、IBM或英特爾的員工電子郵件地址。

開源組件的3個常見問題

在這個過程中,研究人員還發現開源組件的幾個常見問題。

首先是程序命名隨意。缺乏針對軟件組件的標準化命名方案,讓跟踪這些程序成為一個主要難題。這不是開源軟件所獨有的問題。美國國家標準與技術研究院(NIST)和美國國家電信和信息管理局(NTIA)數十年來一直努力解決這一問題。

Linux基金會和合作夥伴認為,“迫切需要一套標準化的軟件組件命名綱要。除非有了標準化的命名方案,否則軟件安全性、透明度等方面的策略發揮的作用會受限”。

Linux基金會披露最重要的開源組件及其安全問題 3

另一個問題在開源圈太常見了,就是許多項目仍然存在於單獨的開發人員賬戶下。 CII團隊發現,在分析的10個最常用的軟件包中,有7個託管在個人開發人員賬戶下。如果賬戶被黑客入侵,軟件包被惡意利用,那後果非常嚴重。

例如,如果開發者刪除了一個名叫left-pad的Node.js程序,這將導致成千上萬個npm JavaScript程序無效。

在另一個例子中,黑客獲得流行的Event-Stream JavaScript庫的訪問權限,並在代碼中添加後門。然後,他將惡意代碼加到庫中,從而能盜取比特幣。

顯然,個人開發者賬戶應該獲得更多的保護。 Linux基金會 CII badging programTrust and Security Initiative 將開發人員賬戶安全納入其控件中,以降低風險。

最終的問題在於,開源沒有擺脫傳統軟件的“詛咒”。開發人員已經使用老程序的最新版本,但下游開發者依然使用老舊程序。當新的替換軟件包可完成相同工作時,這些開發人員往往不願遷移。尤其是新組件出現兼容性錯誤時,更是如此。

另外,如果不能保證有額外收益,那麼切換到新軟件會有財務和時間成本。但是,老舊程序尚未更新且被被廣泛使用,因此可能發現安全漏洞,安全性讓人擔憂。

簡而言之,開源開發人員必須開始解決遺留軟件的問題。雖然維護代碼並不像開發新代碼那樣充滿樂趣,但這是必須要做的工作。

參考資料:

https://www.zdnet.com/article/the-linux-foundation-identifies-the-most-important-open-source-software-components-and-their-problems/