如何为您的开源软件项目制定防御计划

发布于:2020-12-24 16:16:19

0

121

0

网络安全 开源 安全性 防御计划

开源软件越来越受欢迎。 Forrester Research最近的研究发现,开源模型现在在应用程序开发中占主导地位,而自定义编写的代码现在通常仅占大多数应用程序的10%到20%。

随着开源模型成为开发人员的实际标准,人们对其安全性的关注也越来越突出。正如CIO在2017年所说的那样,“各地企业的开源部署速度使软件安全性受到质疑。”在过去的十年中,这场辩论一直在不断浮出水面,许多评论员声称,开源比专有代码更安全或更安全。

实际上,可以使开源代码与最严格开发的专有代码一样安全,但是为了实现这一点,开发人员需要制定同样严格的防御计划。这不仅对于防止代码段中的安全漏洞很重要,而且对于您自己的理智也很重要:如果经常要求您修复由黑客造成的损害,就很难避免倦怠。

在本文中,我们将贯穿四个核心原则,这些原则应构成任何开源项目防御计划的基础。

1.盘点你的仓库

尽管使用开放源代码的频率很高,但事实是,许多开发人员无法列出他们当前使用的所有开放源代码组件。由于您无法确保未跟踪的内容的安全,因此保护系统的第一步必须是对正在运行的所有开放源代码进行彻底的清点。在进行清单清点时,您还应该记住所使用的组件具有依赖性,因此进行清单清点也很重要。

虽然对于喜欢的纸牌游戏来说,这种研究水平似乎有些过头了,但在考虑通用支付处理功能的技术基础时,它却引起了更多的关注,近年来,这些功能已越来越依赖于更高水平的代码。约会,计费,CRM软件和许多其他功能也是如此。当有缺陷的代码危及小企业的底线或功能时,匆忙就变得更加严重。

此清单应考虑软件的各个方面。从根本上讲,许多应用程序都使用开源数据库,但是这些系统在软件中的高度集中性使其很容易被忽略。在堆栈的另一端,以客户为中心的系统(例如约会提醒软件)通常包含开源组件,即使这些软件包是专有的。您的清单应该彻底评估软件的每个部分,甚至是最小的开源代码。

2.映射关键漏洞

有了所有正在使用的开源代码的列表,您可以使用公共资源,例如国家漏洞数据库(NVD)来收集有关这些组件中已知漏洞的信息。 请注意,并非所有安全问题都会及时报告给NVD,因此您不应依赖它作为唯一的信息来源。

您可以使用更多调查技术来补充NVD等公共系统,利用论坛和行业报告来查找更多漏洞报告。 正如媒体所报道的那样,从引人注目的数据泄露中甚至可以学到很多东西,因为即使是大公司也可能会遭受开源漏洞的侵害。

3.使用政策

使用策略对于保护开源代码非常重要,但开发人员通常会忘记使用策略。使用策略是软件文档的关键部分,应包含有关测试了哪些其他组件的详细信息。它们可以确保用户不要将其与其他未经测试的软件一起使用,从而帮助用户确保组件的安全。理想情况下,开发人员应与管理层紧密联系,为发布的每个软件设计严格,安全的使用策略,并且这些策略应特别涵盖访问和身份验证协议。

当然,在开放源代码环境中,您不能阻止最终用户与您的软件一起使用软件或将您推荐的组件替换为其他组件。但是,您还应该认识到,员工经常尝试使用未经批准的额外软件来规避安全措施。有时这些软件是直接的软件骗局,有时它们只是不安全。如果您竭尽全力来确保自己软件的安全性,那么还应该鼓励最终用户使用经过安全性测试的组件。

4.持续监控

虽然常见的软件和硬件漏洞列表本身很短,但这掩盖了每年查明的原始漏洞数量。每年有3600多个开放源代码漏洞的个体实例:每天将近100个。因此,您需要在防御计划中建立持续监控。持续监控对于不同的开发人员和公司而言可能意味着各种各样的事情。

有些将利用专用软件来扫描公告中的新漏洞。其他人将仅每周查看一次新闻。但是,在所有情况下,持续监视意味着您需要一个系统来完全捕获所有漏洞的发生,即使对于几年前发布的软件也是如此。

实际上,监视既应在软件开发过程中进行,也应在软件发布后至关重要地进行。修补新出现的漏洞与在开发过程中避免它们一样重要。监视也应与管理团队联系进行,并且应构成产品开发过程的组成部分。尽管您的业务开发团队可能会很好地构思最新流行的在线业务的变体,但可能几乎不知道这些因素如何影响您已经安装(或开发中)的软件的安全性。在每个新产品发布之前进行风险评估,可以帮助避免以后出现问题。

学习

上面所有步骤都是开源软件开发任何防御计划的关键组成部分。 此外,它们不仅适用于开发人员和安全团队。 有效的防御计划需要各个组织级别的投入:不仅是开发人员,而且还包括管理人员和最终用户。

这种组织集成是2020年网络安全的关键部分,因为它允许将安全性内置到每个软件的概念化,开发和持续维护的每个阶段。 因此,这种类型的组织联络是DevSecOps的重要组成部分,DevSecOps是一种相对较新的网络安全方法,试图将开发流程与运营业务功能结合起来。

这可能是您目前工作方式的重大变化。 但是,正如我们之前指出的那样,在2020年成为一名开发人员就是要拥抱变革并保持敏捷。 换句话说,这是关于学习方法的知识。