围绕着开源软件,以及与Python和R协同工作的工具,了解潜在的机遇和风险。
2023年9月19日更新
审查和维护人:
程·李,首席软件工程师,Anaconda
弗兰克·杨,首席解决方案架构师,Anaconda
利昂·周,高级产品经理,Anaconda
开源软件(OSS)已成为一股强大的力量,彻底改变企业处理数据科学和机器学习开发、协作和创新的方式。开源软件具有诸多优势,如透明度高、成本效益高、贡献者群体庞大。软件已在各行各业得到广泛应用。然而,开源安全每天都在带来挑战和威胁,可能会在新的安全威胁时代分出胜负。
驾驭这场新游戏,需要战略方法和发展意愿。随着开源技术得到更多人的采用,企业必须了解适应性战略的重要性,充分利用开源技术,谨慎应用专有解决方案,并防范潜在风险。
在您决定好,要将哪些平台和工具纳入数据科学和机器学习技术栈时,必须考虑,您所选择的工具的开发者和维护员,是如何管理开源安全性的。
我们创建本指南的目的,是提供方便的参考,参考内容涉及开源安全,确保软件供应链安全的关键考虑因素,以及使用Python和R实现开源安全的最佳实践。如果您觉得本指南对您有帮助,请将本页加入书签,并与同事分享。
我们将定义开源软件、开源软件工具和开源安全。我们将考虑使用开源软件的安全优势和挑战,并探索使用开源软件储存库、程序库、包和数据库时的安全方法。最后,我们将分享开源安全最佳实践,该实践可用于借助Anaconda、Python和R构建数据科学和机器学习解决方案。
让我们从最基本的问题开始。
这两者的结合是您的最佳选择。
Anaconda的安全团队整合了这些建议。
带着这份问题清单,与潜在提供商进行交流。
开源包的可靠来源。
搜索量最多的问题。
让我们从基础开始,告知那些正在学习开源软件的人,使用Python、R和开源软件构建应用程序时的安全注意事项。
对于数据科学和机器学习而言,开源软件是指免费向公众开放的储存库、软件包、程序库和平台,该平台允许用户访问、使用、修改和分发源代码。
具体来说,要成为开放源代码,软件必须满足以下条件:
欲了解更多详细信息,请查阅开源计划中的开源定义。
得益于其易用性、灵活性和积极的社区支持,开源解决方案已成为许多数据科学和机器学习(ML)项目的基础。下面是一些在数据科学和机器学习中常用的开源软件工具。您可以通过Anaconda访问它们。
这些只是大量数据科学和机器学习开源软件中的几个例子。这些工具的开源性质使数据科学家和机器学习从业人员能够利用社区的集体力量,为改进工具做出贡献。
任何人都可以使用开源软件。它被组织、学术界和个人广泛使用。近年来,开源软件在组织中的使用呈指数级增长,并仍在继续上升。绝大多数(97%)的应用程序使用开放源码软件。
我们看到开源软件的使用正在实时增加,Anaconda软件包的下载量从2017年的6.72亿次稳步增长到2022年的75亿次。Anaconda在单一平台上提供对数千种开源工具的集中访问。付费访问可增强安全性、治理和合规能力。
标题:Anaconda软件包下载了6年的数据。
随着开源软件使用的增加,相关的风险和漏洞也随之增多。最近,由于Solar Winds网络攻击和Log4Shell漏洞等安全漏洞,开源安全已成为每个人的担忧。近年来,我们已经看到软件中的小漏洞,是如何被犯罪企业利用,并获得巨大收益的,主要是通过勒索软件。如今,几乎所有的软件或技术都是开源的,因此维护其安全性至关重要。
开源工具包括存储库、软件包和程序库,这些都是开源软件生态系统的基本组成部分。在促进协作、知识共享以及开发各种应用程序和项目方面,开源工具发挥着至关重要的作用。
开源代码库是软件库、软件包和程序库的集合。它们由个人或组织精心创作,在一个中心的位置提供用户访问权限,通常是免费的。
在程序设计中,软件包或程序库是可重用代码模块、函数或类的集合,用于解决特定问题。它们提供预先编写好的代码,开发人员可以将其整合到自己的项目中,从而节省时间和精力。软件包和程序库通常作为开源软件发布,允许开发人员根据许可条款进行使用、修改和重新发布。例如Python中的NumPy、Pandas、TensorFlow 和scikit-learn,它们提供了数值计算、数据处理、机器学习等功能。
开源生态系统对于促进软件开发社区的创新与协作至关重要。它允许开发人员在彼此工作的基础上进行开发,鼓励透明度,有助于实现民主化,从而获取强大工具和技术。开源项目为数据科学、机器学习、网络开发等各个领域的发展和进步做出了巨大贡献。
开源安全是指应用开源软件相关的系统、流程、工具、角色和风险。作为由社区和志愿者驱动的软件,开源软件可以在组织内部释放卓越的创新力,并在各行各业发挥重要作用。从在应用程序中使用开源软件的开发人员,到利用开源软件减轻工作压力的非技术用户,开源软件惠及的用户无处不在。开放源码可以通过多种方式嵌入到组织中,因此管理和保护这种开源软件是现代IT部门的一项重要职能。
开源软件通常依赖于其他的开源软件,即所谓的依赖关系。依赖关系可能有自己的一套依存关系,这就是传递依赖关系。成千上万开源软件包依赖成千上万其他开源软件包,形成了高度复杂的依赖关系图,如下图所示。即使是嵌入在您未明确安装的传递依赖关系中的单个漏洞,也可能会危及您的整个系统。
此外,出现漏洞时,您必须积极主动地进行管理。这可以通过漏洞扫描或使用工具来实现,这些工具可以扫描代码库和依赖关系中的已知漏洞。
为了提高安全性,漏洞扫描必须与安全身份验证、策略过滤器和用户访问控制等其他功能相结合,使数据科学和IT领导者能够消除对已知易受攻击软件包和存储库的访问。
虽然开源软件是安全的,但我们必须明白,任何软件都不可能完全避免漏洞。针对开源软件的常见网络安全攻击有很多。
定期进行安全审计、随时了解安全公告并及时应用安全补丁,将有助于降低潜在风险。此外,您还可以通过遵循行业安全标准和最佳实践来提高开源软件的安全性,我们将在本指南的下一部分介绍这些内容。
市场上的许多安全工具都不能充分满足Python开发人员的需求,特别在数据科学和机器学习方面。例如,许多扫描工具的误报率(即虚假警报概率)和误判率(即未能检测到漏洞的概率)都很高。此外,许多扫描解决方案不提供缓解或修复建议。在企业组织内使用开源软件需要投入精力、时间和专业知识,以确保安全态势的真实性和稳定性。
这是一个复杂的问题,应在整个开源软件生态系统的背景下全面考虑。
与任何软件一样,开源软件也可能存在安全漏洞。软件漏洞是指在代码中发现的安全缺陷、故障或弱点。目前,美国国家标准与技术研究院国家漏洞数据库每天报告70多个新漏洞,这些漏洞是需要考虑的重要风险因素。例如,Equifax因安全漏洞导致数百万消费者的敏感记录外泄,被联邦贸易委员会处以7亿美元的罚款。出现该漏洞的原因,是Apache Struts(一种流行的开源Web应用程序框架)中的CVE-2017-5638漏洞。
供应链攻击是另一个主要考虑因素。这一风险因素并非开源软件所独有,但由于开源软件生态系统的开放性和相互关联性而被放大:准入门槛非常低,这是好事,因为它鼓励参与和促进创新,但这也带来了巨大挑战,让我们难以将恶意行为者拒之门外。
供应链攻击的特点是在软件包中注入恶意代码,以破坏供应链中更下游的依赖系统。错别字劫持和依赖性混淆是此类攻击的两个例子,恶意代码会伪装成合法软件包;这些攻击有时还会使用混淆和加密等技术来逃避检测。您可以在这篇博客文章中了解更多信息:针对开源软件的5种常见网络安全攻击。
供应链攻击越来越多。例如,2023年5月,PyPI因恶意活动过多,而暂时中止了新用户和项目的注册。
随着开源软件生态系统的扩大和使用量的增加,潜在网络攻击的范围也在扩大。事实上,正因开放源码软件十分受欢迎,才会带来攻击,因为攻击者的回报与付出之比非常高。尽管网络攻击变得越来越普遍和复杂,但只要采取正确措施,就可以降低风险,安全实施开放源码软件。攻击和防御技术是共同发展的,因此企业必须保持警惕,积极利用当前的最佳实践和工具。
本质上,无法形容开源软件是否比专有软件更安全,因为两者在安全方面各有利弊。还要记住,开源是一个庞大的生态系统(例如,截至2023年9月,仅PyPI就有超过478,000个项目),不同项目的安全性有所不同。
影响安全的因素包括项目的开发和测试实践、社区参与、代码质量、对安全问题的响应速度、直接和间接的依赖关系,以及专门用于安全的资源。如果开发、维护和实施过程中采用了安全最佳实践,开源软件和专有软件就都是安全的。
开源安全
组织应仔细评估其使用和开发的任何软件的安全实践,无论是开源软件还是专有软件。定期更新、安全审计、漏洞扫描和遵守安全最佳实践对维护软件解决方案的安全至关重要。
一般来说,开源安全有三种方法:
漏洞风险最大的组织有以下特征,即开源软件不用受监管即可使用。开源软件的开放方式意味着信任由开源贡献者、开发人员和安全人员组成的社区,相信社区会采取足够的措施来防范漏洞风险。这种方法大大增加了风险,因为组织网络中的许多用户都会下载软件包,每个软件包都有不同的版本号,而漏洞是不可见的。
漏洞更频繁地进入软件供应链,问题也更容易造成严重破坏。这就导致被动应付漏洞处理,而不是从一开始就防止漏洞进入企业。
为更新公司所使用的操作系统和软件包建立流程和协议,是朝着正确方向迈出的一步。然而,鉴于软件包和漏洞元数据的数量,成功管理必须保持更新的包的数量,可能很快就会变得难以应付。
在自动化方法中,工具与漏洞的数据库同步,以便跟踪、管理、预防和修复漏洞。开源安全的自动化方法可能是最可靠和最佳的解决方案,但前提是必须正确配置,并且依赖可信的数据,将误报率降到最低。请记住,过于严格的策略会迅速降低人们对自动化工具的信心,并导致对合法警告的忽略。
最有效的开源安全方法,是将自动流程和手动流程相结合,我们将在下一节详细介绍。
十多年来,Anaconda一直在为Python和R提供对数千个开源包的安全访问。Anaconda使数据科学从业人员能够轻松访问他们创新和协作所需的工具。他们可以控制环境并解决依赖问题。Anaconda还为安全团队提供所需的IT治理、审计和增强安全功能,即使在最敏感和最关键的环境中也是如此。
根据这些经验,我们的安全团队汇编了最佳实践,供您在用Python、R和Anaconda的开源包时使用。
每个渠道都有不同的目标和限制。您的不同团队和项目可能有不同的要求。在选择开源软件包数据源时,Anaconda的一般指导原则是使用最符合您的需求和限制的通道。以下是一些常见通道的简要概述。
许多开源项目,如Python的CPython解释器、Django和Nginx,都有几个并行维护的主要版本。同一开源软件包的不同版本具有不同功能、性能、安全更新和向后兼容。
在选择软件包版本,或考虑软件包更新时,我们建议评估以下标准,这些标准通常可在软件包的更新日志中找到:
考虑软件包的支持计划表,因为不建议使用的,或生命周期结束版本的软件包,不会再收到错误修复或安全更新——至少不会从免费社区收到。请注意,不同软件包的支持计划表可能并不完全一致。对于 Python或NumPy等关键软件包,请提前规划好日落法和迁移策略。
破坏性更改是指,使用旧版本软件包开发的代码,无法在该软件包的更新版本中正常运行。
如果存在破坏性更改,我们的建议是了解这些更改对现有代码的影响。有时您的应用不会使用库中已更改的部分,有时更新会完全破坏您的核心功能。一般来说,最好选择不会影响代码的最新版本,但在某些情况下,您还是需要升级,并计划额外的测试和返工。
这些版本通常包括安全或关键错误修复。它们是确定所需软件包版本下限的重要依据。如果以后的版本中存在安全修复,则应考虑将该版本约束转移到以后的版本,以确保您能始终获得这些修复。
当您开始构建一个环境时,您会发现有许多相互依赖的软件包。不同软件包需要不同版本的依赖包,这种情况并不罕见。要找到一组满足复杂依赖关系的兼容软件包并非易事。实现这一目标的最佳方式,是利用conda找到解决方案。一旦conda成功创建了符合规范的环境,就可以开发测试用例,确保代码在该环境中正常运行。
开放源码软件生态系统发展迅速,每天都有新软件包和软件包更新提供给用户。无需在您的环境中拥有每个软件包的最新版。试图拥有所有软件包的最新版,往往会导致软件包冲突和无法解决的环境问题。我们建议在环境中设置可接受的最低版本,让conda灵活地找到最兼容的解决方案。
目标是建立一个有能力、安全和稳定的环境来开展工作。
Anaconda建议我们的客户为项目甚至任务创建特定环境,以避免不同项目之间的依赖问题,而不是为所有项目创建一个大的环境。较小的环境可最大限度地减少潜在安全攻击的表面积,而且创建速度更快,更易于管理。
Conda让环境管理变得简单,Anaconda推荐用户使用conda作为他们的环境管理器。Conda可与Anaconda和社区代码仓库完美配合。使用conda,用户可以轻松创建和切换不同环境,并执行环境管理任务。要了解有关conda的更多信息,请查看此免费的conda基础知识课程。
为了方便用户获取conda,Anaconda提供了Miniconda,这是一个小型的引导安装程序,只包含conda、Python及其依赖项。这里的最佳做法是使用Miniconda,然后根据需要安装其他软件包。
升级或修改环境时,请执行回归测试,以确保环境变化不会给应用或模型带来意外变化。您可以克隆环境或从快照文件创建环境,以创建更改前和更改后环境,来并行运行,进行比较。
通常需要反复推敲,才能为每个项目找到合适的软件包集。对环境满意后,将软件包导出为文件,并将快照保存到版本控制系统中。除了作为备份外,这种机制还有利于可重复性操作,以及与同事协作。
依赖关系是软件开发的关键组成部分。重要的是,要仔细考虑您的项目中包含哪些依赖关系。以下是一些避免不必要依赖的指导方针,来帮助您减少漏洞暴露的机会:
通过遵循这些最佳解决方案,您可以最大限度地减少不必要依赖关系的引入,并降低相关风险,同时在外部库提供重要价值或满足特殊需求(如加密)时,仍然可以利用这些库。
俗话说,预防胜于治疗。您可以从可信任来源镜像,从而防御供应链攻击(如域名仿冒、星标劫持和依赖混淆)。从一开始就阻止恶意软件包进入您的组织,从而尽快安全左移并解决问题。
根据包的安全暴露(例如超过组织容许阈值的漏洞得分)来阻止包,也是一种有效的漏洞缓解措施。Anaconda Business提供了强大的过滤逻辑来帮助您筛选包。最终用户将无法访问您过滤掉的包。
请记住,当过滤掉业务关键型包时,自动过滤可能会导致中断。重要的是,要根据您实际使用软件的方式来评估组织的风险。在某些情况下,最合适的做法可能是重写一般过滤规则,并设置安全例外。如果是这样,适当管理异常是很重要的(例如,通过设置审核日期来管理异常)。
保护开源软件是一个动态持续的过程,因为新发现的漏洞可能随时出现。因此,跟上不断发展的威胁形势,并了解它如何影响您的组织对开源软件的特定实现和使用,是至关重要的。
美国国家标准与技术研究院(NIST)维护并发布了国家漏洞数据库(NVD),其中包含有关安全漏洞的弱点,包括那些可能影响开源软件的弱点。国家漏洞数据库中的每个漏洞都包含重要信息,包括通用漏洞披露(CVE)标识符(ID)、描述、严重性、已知受影响的软件配置等。
根据安全漏洞信息,确定您正在所使用的开源软件中,哪些组件受到哪些漏洞影响,这一过程称为漏洞匹配。匹配可能很费力,除非您有内部开发或通过第三方开发的自动化工具,来处理这个关键任务。订阅Anaconda Business或更高层级服务的组织,在Anaconda构建的开源软件包上执行始终在线的漏洞监控和匹配。Anaconda还正在将漏洞监控和匹配扩展到conda-forge包。
当安全漏洞监控和匹配报告称,包受到一个或多个已知漏洞的影响时,接下来有两个关键步骤:
错误正匹配可能导致不必要的后续缓解措施,造成工作浪费和工作中断,例如从包存储库中删除重要包。
请记住,国家漏洞数据库中不准确的安全漏洞并不少见,并且它超出了开源软件安全扫描器的控制。为了解决这个问题,Anaconda为Anaconda Business及更高层级服务的订阅提供了通用漏洞披露管理。在通用漏洞披露监管中,Anaconda的专家研究与Anaconda软件包相匹配的每个安全漏洞,并纠正发现的任何不准确之处。有了准确可靠的漏洞信息,客户现在可以放心解释漏洞的安全含义。
基于经过筛选的准确安全漏洞信息,组织可以通过将漏洞信息与他们使用受影响包的方式相结合,来全面评估匹配的漏洞如何影响他们。每个漏洞都是在特定情况下存在的,解释其安全含义对于帮助组织确定正确的缓解措施至关重要。
有多种方法可以缓解安全漏洞。组织在不同情况下可能需要不同的缓解措施。
开源软件项目可能会发布带有安全更新的软件包的新版本,这些更新修复了软件包暴露的已知安全漏洞。使用这些软件包的新版本更新您的环境,是减轻漏洞暴露的一种方法。
包更新作为一种缓解漏洞的方法,有其自身的复杂性:
当包的新版本所包含的更改多于安全修复时,例如新功能,它可能就有带来破坏性更改的风险。
破坏性更改可能会让使用旧版本包的原始功能代码失效。发生这种情况时,需要对原始代码进行重构和测试,然后将它们重新部署到使用新版本包的更新环境中。
如果需要安全更新的包具有依赖项(也称为传递依赖项),则可能需要将其中一些传递依赖项升级到较新的版本,才能使安全更新生效。更新其中的一些传递依赖关系,可能会导致进一步的包更新。
Conda作为一个包和环境管理工具,能够管理上述的连锁效应。然而,值得指出的是,看似简单的“一个包更新”,可以给整个环境带来重大变化。因此,在重新部署已更新的环境之前,必须对其进行彻底的测试。
包后向移植意味着将开源软件项目维护者发布的安全修复程序,移植到安全修复不覆盖的软件包早期版本。接收安全补丁的包在解决安全漏洞的同时,仍然提供完全相同的功能。后向移植通常由项目维护者以外的第三方执行,并且是在旧版本的软件包上执行的。
包后向移植不会通过传递依赖关系给环境带来破坏性变化和连锁反应。它能增强用户环境的稳定性,使他们无需采取其他更具破坏性的缓解措施,或为自己争取更多时间,来评估和准备应对这些破坏性变化。
尽管有这些优点,包后向移植仍有一个主要限制——依赖于开源软件项目维护者提供的安全修复。
2023年下半年,Anaconda安全后向移植服务的私有预览计划将面向现有Anaconda客户推出。感兴趣的客户可联系Anaconda代表,咨询如何注册。
修改用户代码可能是减少开源软件安全漏洞的另一种有效方法。用户可以根据开源软件包中安全漏洞的复杂程度进行阻止:
与软件包更新一样,用户代码修改也需要在部署前进行大量测试。
任何安全工具都无法完全取代人员和流程在安全方面的作用。安全应该是编码过程的一部分,而不是事后环节。确保您的开发人员了解与第三方软件包相关的潜在风险,精通安全编码实践,并将安全最佳实践作为其编码的一部分。在软件安全方面要积极主动,而不是被动反应。查看以下安全软件开发指南和培训材料,并根据您所在组织的实际情况,加以采用或调整。
向潜在的技术提供商提出这些问题,以便更好地了解他们在开源安全能力、IT支持和管理以及软件供应链安全方面的方法。
平台安全和功能
有了Anaconda,您可以从一开始就确保软件供应链的安全。我们为您的Python和R开发人员提供安全、可信的软件包,并具有防止恶意软件包进入您的管道的功能。我们还为您提供阻止风险软件所需的安全控制,以及管理功能和支持,该功能即便对于最大的团队而言也是必要的。
开源软件的安全性是一个复杂的话题,取决于各种因素。虽然开源软件具备有助于提高安全性的固有优势,但它的安全性不一定比闭源(专有)软件高。安全性取决于社区的参与,项目的开发实践,以及用于安全审计和维护的可用资源。
具有安全意识的组织应仔细评估任何软件,无论是开源软件还是专有软件;并考虑项目的声誉、开发团队的响应能力以及现有的安全实践。无论软件的来源如何,定期更新、正确配置和遵守安全最佳实践都是至关重要的。
开源并不一定比专有软件更安全,但它确实有其优势。开源软件之所以常被认为更安全,有以下几个原因,主要是透明度、社区参与和对安全问题的快速反应。
开源软件通常被认为更安全的原因:
不过,值得注意的是,开源软件的安全性并不能仅靠其开放性来保证。使用开源软件也会面临挑战和潜在风险,例如漏洞通过依赖关系引入,代码存在质量问题,恶意行为者可能利用常用软件包。
与专有软件相比,开源项目的安全性并没有本质上的优劣之分;它取决于各种因素和每个软件项目的具体情况。开源软件和专有软件都能以不同的安全级别进行开发和维护,而且各具优势和挑战。
开源项目更加透明,可由社区检查,并得到社区快速修补和更新的支持。不过,开源项目用于安全测试和维护的资源有限,而且不同项目的代码质量也可能不同。
专有软件是由组织开发和维护的,因此可以有专门的安全团队和受控访问。这意味着专有代码不公开,可能会混淆攻击面。不过,专有解决方案的代码审查有限,因此不对公众开放。此外,解决安全漏洞需要与开发团队协调,这意味着公司的反应可能会很慢。
网络安全中的开源情报 (OSINT) 是指,从公开来源收集和分析信息,以深入了解潜在的安全威胁、漏洞或风险的过程。对于网络安全专业人员和威胁情报分析师来说,开源情报是一种宝贵的工具,来帮助他们收集有关潜在对手、漏洞或安全事件的相关数据。开源情报的数据来源包括可公开访问的网站、社交媒体平台、在线论坛、公共数据库、新闻文章等。
网络安全开源情报的主要方面包括威胁情报、漏洞研究、数字足迹分析、威胁行为者特征分析、声誉监测、事件响应和取证,以及合规和监管情报。
开源安全测试方法手册(OSSTMM)是对计算机系统、网络和应用程序进行安全测试和分析的框架。它是一本全面、实用的指南,为评估安全措施和识别各种IT环境中的潜在漏洞提供了结构化方法。开源安全测试方法手册是一个开源项目,由安全和开放方法研究所 (ISECOM) 开发和维护。
开源安全测试方法手册的设计具有适应性和灵活性,使安全测试人员能够根据特定环境和测试场景调整方法。它强调,通过多种测试技术和工具,来全面了解目标安全状况是非常重要的。
安全专业人员、渗透测试员和组织在进行安全评估和渗透测试练习时,将开源安全测试方法手册作为参考和指南。通过遵循开源安全测试方法手册的方法,他们可以在潜在安全漏洞被恶意行为者利用前,识别并解决它们,从而增强系统和应用程序的安全性。
2023年开源软件安全法案(S.917)是2023年3月在美国参议院提出的一项法案。该法案的主要目标,是提高联邦机构和部门使用的开源软件的安全性。开源软件安全法案的主要目标,包括开源软件清单、安全审查和指导方针、漏洞识别以及协调和报告。
要确保开源容器的安全性,就必须实施一整套最佳实践和安全措施,以保护容器化应用程序及其运行的基础架构。由于具有可移植性和可扩展性,容器已成为打包和部署应用程序的一种流行方式。但是,如果管理不当,它们也会带来安全挑战。
确保开源容器安全的关键步骤包括:使用可信的基础映像、保持容器更新、启用映像签名、确保容器注册中心安全、限制权限、实施网络分段、监控容器活动、实施互联网安全中心(CIS)基准、隔离敏感数据、进行持续安全测试、实施运行时保护、确保容器编排(如Kubernetes)安全、教育开发人员和运营团队,以及制定明确的事件响应计划。
是的,有开源安全基金会(OpenSSF)。开源安全基金会是一项合作计划,旨在通过整合行业成果和资源,来提高开源软件的安全性。基金会于2020年8月在Linux基金会的牵头下成立。
其他有用的开源资源包括:
开源安全扫描器是一种软件工具,可帮助识别计算机系统、应用程序、网络或代码库中的安全漏洞。其中一些扫描器是开源的,免费向公众开放,任何人都可以访问和审查它们的源代码。还有一些扫描器以开源软件为目标,但其本身并非开源软件。
安全扫描器对于开发人员、系统管理员和安全专业人员来说非常重要,因为它们有助于发现和减轻软件或基础设施中潜在的安全风险。然而,仅靠安全扫描是不够的。团队必须将漏洞扫描与支持高水平安全的手动操作相结合。
Anaconda是一家开源软件和增强安全服务提供商,它将安全和IT治理能力以及自动扫描和人工筛选相结合,帮助用户快速解决漏洞问题。Anaconda用户可以利用Anaconda从国家漏洞数据库(NVD)、社区报告以及Anaconda专门的Python和R专家团队中整理出来的数据,排除包含漏洞的软件包和软件源。
开源软件具有许多优势,包括透明度、社区协作和成本效益。然而,它也伴随着一定的安全风险,团队应该意识到这些风险,并从被动应对转变为主动解决。
一些主要的开源安全风险包括依赖漏洞、缺乏支持和更新、代码质量问题、供应链风险、复杂性和庞大代码库带来的巨大攻击面、对问题缺乏责任感、许可证合规性、配置错误、补丁延迟以及网络钓鱼和作者冒充。了解更多信息,请参阅博客文章:5种针对开源软件的常见网络安全攻击。