開源代碼已經深深扎根在現(xiàn)代軟件開發(fā)之中,甚至代碼擁有者通常都不知道其軟件中包含哪些開源組件。如何才能獲得對開源組件的可見性和安全控制?執(zhí)行安全審計是行之有效的途徑。
有鑒于此,開源審計的重要性日益凸顯。其中,開源許可證沖突問題受到越來越多的關注。新思科技指出,憑借開源審計,企業(yè)可以獲得開源和第三方軟件的完整、準確的軟件物料清單 (SBOM)。這可以為開發(fā)人員提供關于許可證、漏洞和各種組件活力的信息分析依據。
新思科技Black Duck審計服務團隊分析了對并購交易中涉及的商業(yè)和專有代碼庫的 1,700 多項審計結果,并發(fā)布了《2023年開源安全和風險分析》報告(OSSRA)。被審計的代碼庫中有96%含有開源代碼,54%的代碼庫包含許可證沖突。
新思科技中國區(qū)軟件應用安全技術總監(jiān)付紅勛指出:“除了建立全面的SBOM之外,Black Duck審計服務團隊還負責識別許可證并確定組件的優(yōu)先級,以進行法律審查。法律審查不用投入太多時間在常見的標準寬松開源許可證上,許可證沖突則需要優(yōu)先審查。然而,許可證沖突并不是唯一需要法律審查的項目,企業(yè)還需要研究開源許可證及變體版本的細則?!?
自定義開源許可證及變體版本
在新思科技審計的大約30%的代碼庫(以及70%的并購交易)中,發(fā)現(xiàn)代碼具有一次性許可證、標準許可證的自定義變體或根本沒有許可證。在本可以識別組件的來源——存儲庫或網站——但在該位置或代碼中卻找不到任何許可或使用條款時,這些組件將被標記為“未經許可”。
標準許可證的變體可能會很棘手,因為可能被認為是MIT或BSD許可證等。但仔細檢查后,通常會發(fā)現(xiàn)開發(fā)人員自作主張,在標準中加入了自己的想法。
JSON 許可證
最常見的變體是JSON許可證,即MIT許可證添加上“該款軟件嚴禁用于惡意用途,僅限用于善意用途”的注釋。由于此類條款含糊不清,Apache軟件基金會暫停使用JSON許可的代碼。
JSON許可證甚至還有變體。在此變體中,許可證中添加了以下注釋:“如果有人以書面形式通知您沒有遵守行為規(guī)范,您需要在30天內采取相應行動以繼續(xù)使用該許可證;否則您的許可證將被立即終止?!?
Commons Clause許可證變體
Commons Clause 是一種變體,旨在修改標準開源許可證以限制軟件的商業(yè)用途。摘錄內容如下:“……許可證并未授予您銷售軟件的權利?!闭Э粗?,在 Apache 許可證等許可范圍內的軟件可能會因本條款而變得完全無法使用。
專有和商業(yè)許可證
代碼庫包含來自第三方商業(yè)軟件公司的內容并不罕見。開源審計經常發(fā)現(xiàn)來自Adobe、Microsoft、Oracle和其他公司的版權。作為軟件盡職調查的一部分,收購方有必要檢查是否有適當的許可證并已披露。即使許可是正當的,律師仍將希望確保控制權的變更不會在未來引入任何風險。
雙重許可
越來越多的公司正在使用雙重許可,這是一種巧妙的商業(yè)模式。根據開源許可證向開發(fā)人員提供軟件,但同時該許可證包含使其難以用于商業(yè)目的的義務。
AGPL 許可證經常出現(xiàn)在這種情況下:大多數公司不能在其產品中使用 AGPL 許可的代碼 (還有其它許可證更明確地禁止沒有商業(yè)許可證的商業(yè)使用)。如果開發(fā)人員使用根據 AGPL 許可的代碼,公司需要與供應商就相同的代碼簽訂商業(yè)許可證。
當開源審計發(fā)現(xiàn)雙重許可軟件時,工作人員會突出顯示這點,以便收購方可以確保目標公司已獲得適當許可。
了解代碼中的內容
要全面了解代碼是否已獲得適當許可,需要準確且完整的材料清單,以及分析預期用途與所包含的開源許可之間可能存在的沖突。還有其它超出標準開源的許可問題,需要更深入的研究和更多的法律審查。重要的是,作為軟件盡職調查的一部分,開源審計可以追蹤到許可證信息,以方便專業(yè)的知識產權律師評估其客戶特定情況下的風險。