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