在VS Code IDE中使用Golang Shift左键安全

用VS code屏蔽保护Go模块的Gopher

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

左移为安全

早期捕获和修复依赖项中的问题是“左移”或“左移测试”原则的一部分。左移位测试要求工程师尽早构建强大的测试方法(使用自动化)。向左移动可以节省调试和QA的时间和成本,显著缩短发布之间的时间,最终产生更高质量的软件。

在其他问题中,开发人员现在需要更加了解安全漏洞——不仅在它们自己的代码中,而且在依赖项中也是如此。使开发人员能够识别安全和易受攻击的开源组件是转移安全性的重要开始。

左移VS Code IDE为Golang安全性

确保Go模块的安全

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

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

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

JFrog GoCenter和VS Code扩展

对于VS Code的用户来说,JFrog扩展VS Code使您的OSS Go模块依赖的免费安全漏洞识别。安装后,该扩展将自动标记高、中、低漏洞CVE问题CVSS v2等级直接在用户界面中。因此,甚至在构建完整的Go应用程序或模块之前,您就可以知道特定依赖项是否容易受到攻击,以及有多严重。

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

coredns v1.1.2中突出的中等严重问题是CVE-2019-19794

当查看你的“go”时。VS code IDE中的mod文件:

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

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

  • 模块许可信息和ReadMe信息可从GoCenter
  • 升级到模块最新版本的建议
  • 快速查看包含可传递依赖信息的依赖树
  • 链接到GoCenter“安全”页签,查看CVE详细信息和问题说明

使用VS Code IDE扩展为Go

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

让我们浏览一个使用witness和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. in”)。函数Test_Validate(t *testing.T){…

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

$ 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中看到的。security选项卡显示了此漏洞的详细信息:

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

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

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

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

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

勇往直前,捍卫自己

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

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

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