在VS Code IDE中使用Golang左移安全

使用VS代码屏蔽保护其Go模块的地鼠

如今,大多数现代软件都在积极地使用第三方开源依赖关系,通过使用已有的代码来减少重复并加速开发。这些依赖关系通常是由一个分布式的工程师团队构建和管理的,而这种构建软件的模型通常会更快特性改进(更好的反馈循环,有助于功能问题的早期改进),这也意味着您的OSS依赖中的代码可以快速更改,并且可以引入新的问题。

为了安全向左移动

及早发现并修复依赖关系中的问题是“左移”或“左移测试”原则的一部分。左移测试要求工程师在早期就建立强大的测试方法(使用自动化)。向左移动可以节省调试和QA方面的时间和成本,极大地减少发布之间的时间间隔,最终产生更高质量的软件。

除了其他问题,开发人员现在需要更多地了解这些问题安全漏洞-不仅在他们自己的代码中,而且在依赖关系中。使开发人员能够识别安全和易受攻击的开源组件是转移左安全性的重要开始。

向左移动VS Code IDE的Golang安全

保证运行模块的安全

在Golang进行左移测试可能具有挑战性,因为去模块经常使用直接依赖和传递依赖,其中许多都有在不同时间更新的新版本。在Golang中确保依赖关系的安全性和强大的测试也很重要,因为:

  • Go应用程序发布的规模、速度和频率
  • 扩展基于go的微服务,作为主要企业应用程序的骨干
  • 同一应用的多渠道设备使用意味着软件更新必须在手机、浏览器、平板电脑、游戏系统和其他设备上有效运行。

但是如果您是Golang开发人员,您如何知道要测试什么,以及要测试什么呢?你有时间深入研究每一个OSS依赖的起源吗?幸运的是,JFrog社区团队有一个免费的工具,可以帮助你向左平移,而不影响你的工作效率。

JFrog GoCenter和VS Code扩展

对于VS Code的用户,使用JFrog扩展的VS代码可以免费识别OSS Go模块依赖项的安全漏洞。一旦安装,扩展自动标记高,中,低漏洞CVE问题使用CVSS v2评级直接在你的用户界面。因此,甚至在构建完整的Go应用程序或模块之前,您就可以知道特定的依赖项是脆弱的,以及有多严重。

VS Code扩展从JFrog GoCenter中获取这些安全信息,我们的免费公共存储库中有超过740,000个(并且还在增长!)开源Go模块版本。除了可以作为速食,公共GOPROXY, GoCenter对所有Go模块进行深度递归扫描JFrog x光的安全信息国家漏洞数据库

coredns v1.1.2中强调的中等严重程度问题是CVE-2019-19794

当看到你的“走”。在VS code IDE中的mod文件:

  • 易受攻击的模块用波浪下划线标记。
  • 将鼠标悬停在模块名称上显示其严重级别。
  • 单击灯泡图标可查看该模块版本的完整依赖关系树。

其他免费功能包括在扩展:

  • 模块许可证信息和ReadMe信息可从GoCenter
  • 建议升级到模块的最新版本
  • 快速查看依赖树,包括可传递的依赖信息
  • 链接到GoCenter安全选项卡,查看CVE详细信息和问题描述

使用VS Code IDE扩展Go

扩展中的每一个特性都是为了帮助Golang社区以更快、更安全的方式开发软件,并允许每个开发人员成为左移哲学中包含的一些测试原则的拥护者。你可以导入任何Go模块到VSCode和扩展将自动扫描它,并从GoCenter提供严重信息和元数据。

让我们通过一个使用作证和yaml/v2 Go模块的简单测试文件示例来了解漏洞扫描的帮助。

首先,在我的机器上安装了VSCode,我点击VSCode左边的Extensions标志,在左上角的搜索框中搜索“JFrog”。

JFrog VS Code IDE扩展- Golang免费安全扫描

在安装扩展之后,使用一个真实的例子,我为我的Go应用程序创建了一个解析YAML的测试文件。

我构建了以下测试验证包并导入我的模块:

包验证导入("testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gopkg.in/yaml. "Test_Validate(t *testing.T){…

我运行一个go测试,我的测试文件通过ok。

$ go test PASS ok

一切看起来都很好,但是等等当我去go.mod我注意到文件下面有一个波浪下划线gopkg.in / yaml.v2v2.2.7.看起来我的测试文件实际上在模块中有一个漏洞yaml。v2 v2.2.7。

这个版本的gopkg.in / yaml.v2有1中等脆弱性。开枪!

当我单击带下划线的模块名称时,会出现一个灯泡,我可以看到一些选项。我想查看CVE的详细信息,所以我点击了该选项,在GoCenter中查看它。

这就是我在GoCenter上看到的。安全选项卡显示了这个漏洞的详细信息:

我绝对不希望在我的应用程序中出现这个漏洞。

幸运的是,如果我回到VSCode -安装了JFrog扩展,我可以点击“升级依赖项”链接,它会自动导入这个模块的新版本。

现在我们已经升级到最新版本:

没有波浪下划线-看起来这个是干净的!我做了一个整理衣柜清理go.mod文件并点击保存。现在我的应用程序没有漏洞了。

恭喜你!你在QA团队注意到之前就解决了一个问题!

向前去防守

虽然这个简单的例子可能无法涵盖左移哲学的全部测试需求,但它确实展示了JFrog VSCode扩展的强大功能,以及Go开发人员了解在不同版本的模块依赖关系中如何容易引入漏洞是多么重要。

要了解更多关于Golang的安全,请查看我们的GoCenter关于漏洞的博客并安装免费的JFrog VSCode扩展

更新:自2021年5月1日起,GoCenter中央存储库已被淘汰,所有功能将被弃用。有关中心日落的更多信息,请阅读弃用博客文章