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