开源代码已经深深扎根在现代软件开发之中,甚至代码拥有者通常都不知道其软件中包含哪些开源组件。如何才能获得对开源组件的可见性和安全控制?执行安全审计是行之有效的途径。
有鉴于此,开源审计的重要性日益凸显。其中,开源许可证冲突问题受到越来越多的关注。新思科技指出, 凭借开源审计,企业可以获得开源和第三方软件的完整、准确的软件物料清单 (SBOM)。这可以为开发人员提供关于许可证、漏洞和各种组件活力的信息分析依据。
新思科技Black Duck审计服务团队分析了对并购交易中涉及的商业和专有代码库的 1,700 多项审计结果,并发布了《2023年开源安全和风险分析》报告(OSSRA)。被审计的代码库中有96%含有开源代码,54%的代码库包含许可证冲突。
新思科技中国区软件应用安全技术总监付红勋指出:“除了建立全面的SBOM之外,Black Duck审计服务团队还负责识别许可证并确定组件的优先级,以进行法律审查。法律审查不用投入太多时间在常见的标准宽松开源许可证上,许可证冲突则需要优先审查。然而,许可证冲突并不是唯一需要法律审查的项目,企业还需要研究开源许可证及变体版本的细则。”
自定义开源许可证及变体版本
在新思科技审计的大约30%的代码库(以及70%的并购交易)中,发现代码具有一次性许可证、标准许可证的自定义变体或根本没有许可证。在本可以识别组件的来源——存储库或网站——但在该位置或代码中却找不到任何许可或使用条款时,这些组件将被标记为“未经许可”。
标准许可证的变体可能会很棘手,因为可能被认为是MIT或BSD许可证等。但仔细检查后,通常会发现开发人员自作主张,在标准中加入了自己的想法。
JSON 许可证
最常见的变体是JSON许可证,即MIT许可证添加上“该款软件严禁用于恶意用途,仅限用于善意用途”的注释。由于此类条款含糊不清,Apache软件基金会暂停使用JSON许可的代码。
JSON许可证甚至还有变体。在此变体中,许可证中添加了以下注释:“如果有人以书面形式通知您没有遵守行为规范,您需要在30天内采取相应行动以继续使用该许可证;否则您的许可证将被立即终止。”
Commons Clause许可证变体
Commons Clause 是一种变体,旨在修改标准开源许可证以限制软件的商业用途。摘录内容如下:“……许可证并未授予您销售软件的权利。”乍看之下,在 Apache 许可证等许可范围内的软件可能会因本条款而变得完全无法使用。
专有和商业许可证
代码库包含来自第三方商业软件公司的内容并不罕见。开源审计经常发现来自Adobe、Microsoft、Oracle和其他公司的版权。作为软件尽职调查的一部分,收购方有必要检查是否有适当的许可证并已披露。即使许可是正当的,律师仍将希望确保控制权的变更不会在未来引入任何风险。
双重许可
越来越多的公司正在使用双重许可,这是一种巧妙的商业模式。根据开源许可证向开发人员提供软件,但同时该许可证包含使其难以用于商业目的的义务。
AGPL 许可证经常出现在这种情况下:大多数公司不能在其产品中使用 AGPL 许可的代码 (还有其它许可证更明确地禁止没有商业许可证的商业使用)。如果开发人员使用根据 AGPL 许可的代码,公司需要与供应商就相同的代码签订商业许可证。
当开源审计发现双重许可软件时,工作人员会突出显示这点,以便收购方可以确保目标公司已获得适当许可。
了解代码中的内容
要全面了解代码是否已获得适当许可,需要准确且完整的材料清单,以及分析预期用途与所包含的开源许可之间可能存在的冲突。还有其它超出标准开源的许可问题,需要更深入的研究和更多的法律审查。重要的是,作为软件尽职调查的一部分,开源审计可以追踪到许可证信息,以方便专业的知识产权律师评估其客户特定情况下的风险。
好文章,需要你的鼓励
谷歌深度思维团队开发出名为MolGen的AI系统,能够像经验丰富的化学家一样自主设计全新药物分子。该系统通过学习1000万种化合物数据,在阿尔茨海默病等疾病的药物设计中表现出色,实际合成测试成功率达90%,远超传统方法。这项技术有望将药物研发周期从10-15年缩短至5-8年,成本降低一半,为患者更快获得新药治疗带来希望。
继苹果和其他厂商之后,Google正在加大力度推广其在智能手机上的人工智能功能。该公司试图通过展示AI在移动设备上的实用性和创新性来吸引消费者关注,希望说服用户相信手机AI功能的价值。Google面临的挑战是如何让消费者真正体验到AI带来的便利,并将这些技术优势转化为市场竞争力。
哈佛医学院和微软公司合作开发了一个能够"听声识病"的AI系统,仅通过分析语音就能预测健康状况,准确率高达92%。该系统基于深度学习技术,能够捕捉声音中与疾病相关的微妙变化,并具备跨语言诊断能力。研究团队已开发出智能手机应用原型,用户只需完成简单语音任务即可获得健康评估,为个性化健康管理开辟了新途径。