Microsoft开源软件安全实践
0x00背景
帮助您管理第三方组件中的安全风险的工具和技术。
使用开源
从操作系统到用户界面小部件,从后端数据分析到前端图形,现代软件项目越来越依赖于开源软件。开源软件带来了一些惊人的好处,但是有时它们伴随着必须理解和管理的安全风险。在大多数情况下,使用任何第三方软件组件(无论是开源软件还是商业软件)都可能产生这些风险。
了解Microsoft使用开源软件时缓解安全风险的方法:
谁想要一千只幼犬业中管理开源安全性。(在LocoMocoSec 2019展示)
0x01概述
开源的好处和降低风险的实践
开源的好处
使用开源软件作为开发过程的一部分有很多好处,其中包括:
- 加快产品上市时间。通过将现有组件连接在一起而不是从头开始实施所有组件,可以更快地创建软件。
- 更高的质量。所有软件组件都可能包含缺陷,但是与让许多工程师单独解决多次相同的问题相比,专注于专用软件组件的工作通常可以带来更高的质量。
- 区。通过贡献新功能, 告错误或与所使用的开源项目进行一般性的交互,您可以共享代码库的成本和收益。
在Microsoft,我们认识到在开发产品和服务时负责任地使用开源的好处,并鼓励我们的客户和更大的技术 区也这样做。
实践
这是正确管理此风险必须采取的最低步骤。
0x02 4大实践
实践1-库存开源
正确管理开源软件组件的使用的第一步是了解正在使用的组件。即使在小型组织中,这通常也需要自动化。幸运的是,现代敏捷开发实践已经严重依赖自动化工具,因此很容易适应这一领域的功能。
这个空间中有许多工具,包括NPM Audit和 OWASP Dependency Check等开源工具,以及GreenKeeper,Snyk和WhiteSource Bolt等商业服务。我们并没有在这里特别认可任何特定的工具或服务,因为它们各有优缺点。在决定库存解决方案之前,请进行彻底的评估。
库存生成应该在开发生命周期的自然时间进行,例如在拉动请求验证或分支合并期间,库存结果应集中存储并可供适当的人员(包括您的安全响应团队)访问。确保在清单中包括足够的元数据,以标识应用程序,源存储库,版本/提交以及清单所源自的其他详细信息。
实践2-执行安全性分析
应该对所有标识的组件进行验证,以确保它们没有安全漏洞,达到组织要求的保真级别。例如,按照成本和忠诚度的递增顺序,请考虑以下活动:
- 检查公共漏洞-确保开源组件不包含公共已知的漏洞,例如具有 告的CVE或具有其他公共资源中描述的漏洞的漏洞。
- 使用商业安全情 -使用其他漏洞数据源(例如来自数据供应商的漏洞数据)来扩展公共漏洞数据。
- 进行全面的安全检查 -除上述要点外,还对开源组件进行全面的安全检查。
上述大多数开放源代码清单工具提供了针对公共漏洞的警 功能,而商业解决方案可能会提供其他安全信息。
使用开放源代码的所有组织都应该有一种策略,以便在发现新漏洞时做出响应。这通常采取监视国家漏洞数据库以获取新信息的形式,或者使用程序包管理器内置的工具(例如NPM Audit)。尽管这些无疑提供了价值,但是有一些原因导致组织不应该在这里停下来:
1.开源项目不需要集中 告漏洞。详细信息可能存在于GitHub问题,更改日志或提交消息中,但不容易发现。
2.该漏洞可能是由攻击者或不愿公开披露此问题的安全研究人员发现的。
实践3-保持开源最新
管理与使用开放源代码相关的安全风险的最有效方法之一是,即使在没有已知漏洞的情况下,也要使组件保持最新。这可能是安全利益,因为安全漏洞通常是在没有明确公开披露的情况下修复的,并且这样做的工程成本不是免费的,但好处却超出了安全性(例如工程敏捷性,利用新功能和错误修复)。
实践4-调整安全响应流程
当在开放源代码组件中发现或 告了漏洞时,您应该制定一种管理流程的策略,该策略应与组织的整体安全响应计划直接保持一致。在Microsoft,我们使用Microsoft安全响应中心来协调与开源组件中的漏洞相关的响应活动。
查看SDL实践#12建立标准事件响应流程
0x03官方帮助文档
主页:https://www.microsoft.com/en-us/securityengineering/opensource
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!