目录
什么是开源软件
开源软件的历史和哲学
什么是开源许可证
开源许可证的类型
编辑
开源合规性
版权和知识产权合规性
安全合规性
什么是开源软件政策
开源软件安全
库存和软件物料清单(SBOM)
依赖项更新
开源漏洞扫描
二进制存储库管理器
开源软件的当前趋势
开源为我而生,不为你而生
政府对开源软件的兴趣
什么是开源软件
开源软件(OSS)是原作者已授予明确版权和使用权限的软件,允许所有用户以他们认为合适的方式访问、查看和修改这些程序的源代码,而无需支付版税。
这与专有、闭源软件形成对比,专有、闭源软件通常需要付费许可,并且除软件版权所有者外,任何人都不能添加、修改或分发。
事实证明,使用开源软件的成本效率是不可抗拒的。如今,开源组件通常占新应用程序代码库的80%或更多。供应链中几乎没有产品不依赖OSS。
OSS有着悠久的历史和丰富多彩的社区,他们奉献自己的时间(通常是无偿的)为所有人免费提供数百万个有用的库和程序。
开源软件的历史和哲学
在“开源软件”出现之前,只有“免费软件”,而谈到免费软件的历史,就不能不提免费软件之父理查德·斯托曼。
斯托曼是自由软件基金会(FSF)的创始人,也是GNU公共许可证的作者,以使用版权法以“病毒式”方式强制实施自由而闻名。
自1980年代以来,斯托曼一直是免费软件的坚定倡导者。他至今仍是FSF的负责人,并撰写有关免费软件的文章。
我们大多数人认为免费软件是不需要花钱就能获得的软件,但“自由是指言论自由,而不是免费啤酒”是免费软件倡导者的口头禅。
斯托曼认为“开源”和“免费”软件之间存在区别。虽然自由和开源应用程序的维恩图基本上是一个圆圈,但他认为这两个术语强调的是不同的理念。
自由软件基金会的四项基本自由是自由软件运动的支柱——他们并不特别关心自由软件给企业带来了多少自由。
开放源代码促进会(OSI)成立于1998年,由BrucePerens和EricRaymond创立,OSI对自由软件持更务实的看法。
对于Perens和Raymond而言,“开源”一词消除了“自由软件”的政治包袱,并邀请企业使用和贡献越来越多的免费向所有人开放的库和应用程序。
OSI可能对企业参与OSS更为友好,但它仍然以自由主义哲学为基础。斯托曼的四大自由中的许多都反映在他们对OSS的十点定义中。
正如政治通常所表现的那样,大多数开发人员对“自由”与“开源”软件并没有强烈的感觉。
您可能会看到更中性的首字母缩略词“FOSS”,代表“自由和开源软件”,甚至“FLOSS”,代表“自由自由和开源软件”,其中“免费”又回到了“不花任何钱”的常见含义。
在21世纪初之前,许多公司对其开发人员使用OSS持怀疑甚至完全敌视的态度,但使用现成的开源组件而不是花费开发人员的时间重新发明轮子所带来的成本节省变得不可忽视。
什么是开源许可证
开源许可证详细说明了使用或修改软件组件的条款和条件。许可证文本将包含在开源项目的发行版中,可以是源代码文件的注释,也可以是单独的README文件中。
世界上有200多个开源许可证,但很多都是多余的。OSI只承认大约80个独特且真正开源的许可证。绝大多数开源项目只属于8个许可证。
开源许可证的类型
所有开源许可证分为三类:
强版权左派:这些许可证要求任何来自开源项目的代码,即使原始代码未经修改就使用,也必须继承其许可条款。流行的版权左派许可证包括GNU和AfferoGNU公共许可证(GPL和AGPL)。
弱版权左派:这些许可证通常允许使用未经修改的开源组件,而无需新项目继承其许可证。但是,对开源组件的任何修改都必须获得原始许可证的许可。流行的弱版权左派许可证包括较宽松的GNU公共许可证(LGPL)、Microsoft公共许可证(MsPL)和Eclipse公共许可证(EPL)。
宽松许可证:这些许可证允许开发人员使用甚至修改开源组件,而无需最终应用程序遵循任何特定许可证。流行的宽松许可证包括MIT许可证、伯克利软件分发许可证(BSD)和Apache2.0许可证。
开源合规性
使用开源代码的组织必须注意遵守知识产权(IP)法,并降低恶意行为者利用OSS漏洞进行违规和攻击的风险。
版权和知识产权合规性
IP合规性和政策在很大程度上取决于兼容性:开源组件的许可证是否彼此兼容,以及许可证是否与项目的整体业务目标兼容。
许可证之间的兼容性。宽松的开源许可证适用于所有人,但强版权许可证和弱版权许可证通常彼此不兼容。
例如,即使打算根据开源许可证发布最终项目,GPL下的组件也不能与MsPL下的组件一起使用,因为这两个许可证都要求衍生作品的源代码在同一许可证下获得许可,没有双重许可的空间。
与业务目标兼容。组织经常在本身不开源的项目中采用开源组件。宽松许可证允许这样做,而强版权许可证则不允许。弱版权许可证的组件通常可以在闭源项目中使用,但必须按照许可证中规定的特定方式使用或链接。
安全合规性
并非所有OSS项目在质量和安全性方面都一样。幸运的是,通过使用自动化工具,开发人员通常可以在将某个开源软件包添加到他们的项目之前了解其中存在多少严重漏洞。
许多组织制定了规则,以阻止开发人员使用存在太多问题的组件。我们将在后面的部分中深入探讨开源安全性。
什么是开源软件政策
OSS政策为团队或整个组织提供了正确使用开源组件的标准。目标是最大限度地发挥使用这些组件的好处和影响,同时解决可能出现的技术、业务和法律风险。
OSS政策首先要选择对于特定项目或所有开发团队始终允许、有时允许(通过升级过程)或永远不允许的许可证。
OSS政策还需要包含根据漏洞风险允许或不允许哪些组件的规则。这通常是通过根据漏洞的严重程度决定引入项目的开源组件可能存在的漏洞数量来实现的。
100%无漏洞的开源组件确实很少见。OSS政策通常不允许任何具有高或严重漏洞的组件,但允许一些中、低严重漏洞。
开源软件安全
使用OSS而不是从头编写代码并非没有缺点。OSS质量参差不齐,许多组件存在缺陷、不安全且更新不一致。以下是解决开源软件安全问题的一些重要工具和注意事项。
库存和软件物料清单(SBOM)
不可能留意您甚至不知道的产品中的漏洞。软件清单和SBOM对于全面了解软件依赖关系以及编制需要监控和更新的事项列表都很重要。
依赖项更新
专有软件供应商通常会推出更新,而开源项目则不一定如此。开源项目的支持有限,并且会根据项目社区的规模而有很大差异。因此,使用开源组件的组织需要主动监控漏洞和更新,以确保及时修补和修复所有组件。
自动化依赖性健康工具大大减轻了开发人员跟踪和安排更新的压力。
开源漏洞扫描
软件组合分析(SCA)是一种应用程序安全测试工具,可帮助管理开源组件。SCA工具会自动扫描您的源代码以识别开源组件、许可数据和已知漏洞。
SCA工具提供对开源组件的可见性,并提供优先级和自动补救措施来帮助修复漏洞。
工作原理如下:
漏洞优先级排序是通过权衡多种因素而自动完成的,例如漏洞是否已被广泛利用(KEV和公开漏洞)、漏洞是否可能在不久的将来被利用(EPSS)、漏洞被利用的严重性(CVSS)以及特定于供应商的见解。
漏洞修复通常使用工具提供的信息(例如漏洞位置)手动完成。某些工具还可能提供有关修复如何影响您的构建的建议。高级工具提供根据漏洞政策启动的自动漏洞修复工作流程。这些政策根据漏洞检测和严重程度、CVSS评分和新版本发布触发。
理想情况下,您应该寻找能够无缝集成到软件开发生命周期中的SCA工具。这样做有助于在早期阶段解决漏洞,因为在早期阶段,问题更容易、更便宜地得到解决。
SCA通常用于软件开发生命周期的构建过程中。代码部署后,DAST和IAST等漏洞扫描程序有助于测试应用程序是否存在常见漏洞。
二进制存储库管理器
以下是使用二进制存储库的主要好处:
👉缓存开源代码的本地副本,以确保您仅使用干净且经过验证的组件。
👉避免受到源代码更新或不同副本更改的影响。
👉有效地管理、批准和跟踪组件。
开源软件的当前趋势
虽然OSS的许可证和理念自1990年代以来基本保持不变,但OSS和开源许可证所涵盖的技术的普及情况已发生巨大变化。以下是近年来出现的两种趋势。
开源为我而生,不为你而生
根据OSI和Stallman的观点,要被视为真正的开源或免费软件许可证,软件的任何特定用途或使用该软件的人员类型都不能受到禁止。但是,这并不能阻止开发人员活动家编写他们称之为开源但实际上并非开源的许可证。
这在AI模型的许可证中变得尤为常见,因为担心不道德地使用强大的技术,一些作者创建了“负责任”的许可证,但这种限制实际上并不新鲜。
JSON许可证写于2002年,是一个MIT许可证,附加了一条条款,即“软件应用于善,而非恶”。此条款限制了努力,不符合OSIOSS定义的第6条标准。
因此,JSON许可证不是开源许可证,尽管该软件可供所有人免费使用,并且源代码是公开提供的。
政府对开源软件的兴趣
过去几年,美国政府已经注意到开源软件的普及和重要性。拜登总统的网络安全行政命令包括改善软件供应链的指导方针,包括创建SBOM和修复OSS中发现的漏洞。
CISA开源软件安全路线图详细说明了政府组织协助开源社区的计划。
开源软件已从社区驱动的举措发展成为软件开发的行业标准方法。开源生态系统提供了各种好处,包括灵活性、成本节约和开发中的集体智慧。
理解和实施开源政策对于风险管理至关重要,因为它为合规和安全使用开源组件奠定了基础。
开源漏洞扫描和软件组成分析工具对于识别和补救安全风险至关重要。这些做法使组织能够从开源软件中获益,同时有效地管理潜在的缺陷。
因此,开源模式不仅仅涉及自由访问代码,还涉及建立负责任的使用和对社区贡献的框架。通过遵守许可证合规性、安全性和代码贡献的标准化程序,组织可以营造一个强大的开源环境,从而促进创新并有效解决软件挑战。