了解开源漏洞
将开源库、应用程序、容器映像或其他组件合并到组织自己的软件中可以提供各种好处。它加快了部署过程,节省了开发资源,并且(因为开源通常是免费使用的)可以降低许可成本。2022世界杯阿根廷预选赛赛程
然而,任何使用开源作为其软件堆栈一部分的团队都必须管理可能潜伏在开源代码中的漏洞。本文解释了什么是开放源代码漏洞,为什么它们可能是有问题的,以及如何有效地管理它们。

什么是开源漏洞?
开源漏洞是一个安全漏洞在任何类型的开源软件中,例如软件库、容器映像、Helm图表或独立的开源应用程序。已知开源软件漏洞通常会在公共漏洞数据库中发布,比如NVD和主教法冠CVE。使用这些数据库,您可以确定给定的开放源代码资源存在哪些漏洞。
开源漏洞的风险
与闭源软件一样,开源软件也可能包含编码缺陷,使攻击者有可能以某种方式利用软件。
然而,与大多数闭源软件不同的是,开放源代码通常被合并到其他软件中。例如,开发人员可能会将开放源码库导入到他们正在构建的应用程序中。或者,IT团队可能会为开源Web服务器(如NGINX或Apache HTTPD)或数据库(如MySQL)提取容器映像,并将它们部署在自己的环境中。
在某些情况下,开源组件可能会通过第三方产品出现在您团队的软件堆栈中。hth华体会最新官方网站如果您使用包含开源组件的商业产品,即使供应商没有透露产品中存在哪些开源组件,也可能发生这种情况。
开放源代码的重用是使开放源代码漏洞特别危险的原因。如果您将一个易受攻击的开源组件导入到您的环境中,但没有意识到这个漏洞,那么这个开源组件就会成为一个攻击向量,威胁参与者可以利用它来利用您的整个软件堆栈。
更糟糕的是,开源软件有时以难以识别的方式集成到应用程序或环境中。因此,团队可能部署易受攻击的软件,甚至没有意识到软件包含不安全的开源组件。
如何管理开源漏洞
管理和保护开源漏洞有两个主要步骤。
首先是要知道您使用的软件中存在哪些开源组件。你可以这样做创建软件物料清单或SBOM,用于团队内部创建的任何软件。您还可以向生成您使用的软件的供应商或其他第三方供应商请求soms。
管理开源漏洞的第二步是执行漏洞扫描在您的堆栈中部署的所有软件上。漏洞扫描器会根据漏洞数据库自动检查软件组件,以确定每个组件是否受到任何已知安全通知的影响。
保护开放源代码的其他最佳实践
除了创建SBOM和扫描软件的漏洞之外,安全使用开源的其他最佳实践包括:
- 如果可能的话,从可信的、成熟的来源获取开源软件。避免晦涩的存储库,坚持使用您感兴趣的开源项目的官方发行渠道。
- 使用访问控制锁定组织的软件存储库和注册中心。这有助于防止攻击者将易受攻击的软件插入存储库或注册中心,以便在您的组织中传播。
- 使用软件组合分析(SCA)工具识别代码库中的开源组件。SCA工具可以检测开源代码,即使它以一种没有在代码中标记为开放源代码组件,也没有在产品文档中提及的方式集成到更广泛的代码库中。此外,高级SCA工具提供了除漏洞(如操作风险和许可风险)之外的关于开源组件的数据,这些数据可以帮助支持有关使用哪个开源软件版本的决策。
- 在您的存储库和注册中心中启用版本控制,以跟踪您使用的每个软件组件的特定版本。在许多情况下,安全漏洞只适用于某些版本的软件,因此能够快速确定使用的是哪个版本非常重要。
- 除了使用公共漏洞数据库来验证开源软件外,还可以考虑使用专有数据库服务,如VulnDB,其中可能包含有关未公开的开源威胁的其他信息。
- 根据优先级级别对开源安全风险进行分类。并非开源组件中的所有漏洞都一定是可利用的;在许多情况下,它们只能在某些配置下被利用。能够提供这种类型的上下文漏洞评估的安全工具可以帮助团队确定将修复工作的重点放在哪里。