開源軟件代碼公開就安全嗎?

今天,軟件已經全面滲透到世界的方方面面,以至於人們用“軟件正在吞噬世界”“每一家企業都會是軟件公司”來形容這一趨勢。在軟件對世界方方面面的滲透中,開源軟件無疑充當了關鍵角色。

如今,開源已經成爲行業趨勢,並正加速普及。根據紅帽公司不久前發佈的《2022企業開源現狀》市場研究報告,95%的IT領導者認爲開源對其公司非常重要,和去年的90%相比增加了5%。同時,在接下來的兩年裡,受訪企業使用開源軟件佔總軟件數將上升8%。

當越來越多開源軟件進入企業,軟件的安全問題也逐漸顯示出來。然而,由於開源軟件使用的便利性,可能導致忽略其帶來的風險。過去使用商業軟件,軟件安全性由原廠負責,不管其是否安全,但至少有人兜底,而現在採用開源軟件後,軟件安全嗎?怎麼保證安全?

被忽視的安全風險

談到開源軟件的安全,我們經常聽到的一個說法是,開源軟件代碼都是公開的,和黑盒子的商業軟件相比要安全得多。這個說法貌似有理,其實經不住推敲。

開源軟件雖然代碼公開,但誰來對代碼的安全負責,這個責任如果沒有明晰,開源軟件的安全性並沒有保證。一個軟件可能有上百萬行代碼,誰對每一行代碼進行審覈,是用戶自己還是社區貢獻者或者對外售賣者?

“心臟滴血”漏洞是一個很好的例子。“心臟滴血”是開源軟件包OpenSSL中的一個漏洞,軟件供應商對外售賣的商業軟件中採用了該開源軟件,但安全責任並未從開源代碼提供者轉移到軟件供應商,最終由用戶承擔了軟件漏洞的風險。

另一方面,開源軟件有開放和共同參與的特點,代碼公開後不排除有人會藉機植入惡意代碼,這時開源反而將軟件置於危險之中。

有機構對開源軟件進行過代碼安全的檢查,結果也證實了上述擔心。早在2006年,美國國家安全部曾開展“開源軟件代碼測試計劃”,對大量開源軟件進行安全隱患的篩選和加固,截止到2017年2月,累計檢測7000多個開源軟件,發現了大量安全缺陷。

軟件安全公司Snyk和Linux Foundation近期發佈了一份報告《Addressing Cybersecurity Challenges in Open Source Software》,根據它們的調查,Java編寫的項目平均有超過47個高危漏洞和28箇中危漏洞,排名第二的JavaScript,後者平均有18個和21個漏洞,Python平均有20個。

另外,根據新思科技發佈的《2022開源安全與風險分析報告》,84%的開源代碼庫至少含有一個漏洞,近三年漏洞比例逐漸增高,60%的已審覈代碼庫中包含高風險漏洞。

顯然,大部分開源軟件的使用者認爲軟件代碼中的漏洞藏不住,很快就會被發現,而現實情況並非如此。因此,我們不能簡單地說開源軟件是安全還是不安全,更不能想當然地認爲開源就安全。

用企業開源軟件,降低安全風險

對於開源軟件的使用企業,在自身沒有足夠技術實力的情況下,如何才能降低開源軟件的安全風險?答案就是儘量選擇企業開源軟件,而根本的解決辦法還是儘早開展開源治理。

一般而言,企業獲得開源軟件有兩個來源:一個是從開源社區下載,這是社區開源版;還有一個是企業發行版,比如紅帽Linux(RHEL),它們就是企業開源軟件。相比社區開源軟件,企業開源軟件的發行者會在社區版軟件的基礎上進行大量工作,比如集成和對代碼進行安全審覈。

顯然,和社區版相比,企業開源軟件具有更好的安全性,這一點被越來越多企業管理者認可。根據紅帽的調查報告,89%的受訪者認爲,企業級開源軟件比專有軟件更安全或同樣安全。這些數值與去年的調查結果相近,但認爲“更安全”的人佔比增加了4%。接受調查者把“安全”列爲採用企業開源軟件的四大好處之一。這四大好處分別爲:安全性更好(32%)、軟件質量更高、能夠安全地應用開源技術(28%)、爲雲技術設計(26%)。

爲何安全會成爲企業開源軟件的一個優勢?紅帽全球副總裁兼大中華區總裁曹衡康解釋說主要有以下幾個原因:第一,企業開源軟件的發行者會測試和審覈開源代碼;第二,軟件發行方會及時跟進安全漏洞,提供補丁;第三,所有補丁都是追溯的,有保障的。

紅帽全球副總裁兼大中華區總裁曹衡康

實際上,作爲企業開源軟件的發行方,其對發行的企業軟件扮演着守護者的角色。曹衡康說,紅帽不是簡單地關注單一軟件的安全,而是強調整個開源軟件供應鏈的安全。

“紅帽所說的安全是供應鏈的整體安全,從底層的基礎設施到開發、到運維、到交付,每一個環節都要安全,也就是說,從最底層的Linux開始、到OpenShift、再到Ansible,紅帽都會植入安全的機制,進行全生命週期的安全防護。”曹衡康表示。