Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  安全很重要,但实际工作中,大家不知不觉会忘记它。我希望通过这篇文章,用上我介绍的工具,你能对安全问题更重视,也更好的规避库的安全漏洞。

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  作为一个 Go 开发人员,安全问题一样得重视。如果你使用 VSCode,推荐给你一个免费的插件,它能够方便的将有风险的 Go Module 及时告诉你。

  这个插件就是 JFrog,在 VSCode 中搜索安装。它能将当前项目使用的公开依赖的实时漏洞信息从 JFrog GoCenter[1] 的元数据中直接引入到源代码编辑器中。这意味着你在首次构建之前就能看到开源 Go 模块的潜在风险,并做出更好的选择。

  VSCode 已成为许多 Go 开发人员的首选源代码编辑器,包括 JFrog 的一些开发人员。它是为 JFrog Xray 客户提供的针对流行 IDE[2] 的几种 JFrog 集成之一,使开发人员更容易理解开源依赖的风险,并有助于保持对安全的警惕。

  为了帮助实现使软件开发和交付更快、更安全和更可靠的使命,JFrog 将 VSCode 扩展提高到了一个新水平。通过利用 GoCenter 中可用的 Go 模块漏洞数据,即使没有 Xray 许可实例,VSCode 用户也可以从中受益。

  安装扩展程序后,有两种方式查看项目中的漏洞。

  安装了 JFrog 扩展后,在 VSCode 编辑器左侧会出现一个按钮:

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  点击它,会看到如下的界面:

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  在左侧看到了一些问题:有叹号,中等级别的漏洞。

  咦?echo 框架竟然有漏洞?于是点开它左侧的 > :

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  原来是 golang/x/text 包有漏洞。但具体什么问题不清楚。同时我们发现该包最新的版本是 v0.3.4。

  将鼠标悬停在 go.mod 文件中的模块上时,即可在 VSCode 中查看所有这些信息。

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  同时依赖底部的黄色波浪线也表明有问题。

  你可以从 go.mod 中的模块直接跳至树状视图(鼠标停留在某个依赖,左侧会出现一个黄色小灯泡),并支持从树中跳转至 go.mod 中的模块定义。图中红框部分就是做这种跳转。

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  点击小灯泡,出来的菜单还可以直接跳转到 GoCenter 网站。关于 GoCenter 的一些相关信息,以后再介绍。这里简单提一句,在 GoCenter 网站,点击 “Security” 标签下查看有关该模块的更多信息。

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  也可以看到 golang/x/text 有漏洞。

  但怎么看到具体漏洞信息呢?通过 GoCenter,找到有问题的包,比如这里是上面的 golang/x/text 包,对应 0.3.0 或 0.3.2 都行。在 Security 标签下,可以看到漏洞描述:

  

Go Module有漏洞?免费的Go漏洞扫描VSCode插件

  这个漏洞大意是:在 0.3.3 版本之前,x/text 包在编码/解码方面存在漏洞,可能导致 UTF-16 解码器进入无限循环,导致程序崩溃或内存耗尽。如果调用解码器上的 String 函数,或者解码器传递到

  golang/x/text/transform.String,攻击者可以为使用 UseBOM 或 ExpectBOM 实例化的 UTF16 解码器提供单个字节来触发无限循环。

  切换到 0.3.3 发现确实没有漏洞了。因此我们项目中应该升级该库的版本。

  这里有一个小问题。比如上面提到的

  github/polaris1119/go-echo-example 项目,golang.org/x/text 库在这个项目中被很多库依赖,而且不同库依赖的版本还不一样,而且有些库的最新版本依赖的 golang.org/x/text 还是 0.3.2,比如 locales 库的 go.mod

  github/go-playground/locales/blob/v0.13.0/go.mod,依赖的还是 0.3.2。所以即使更新了相关的库,VSCode 上 JFrog 插件还是提示有漏洞。但实际上已经没有问题了,你可以试试删除掉 golang.org/x/text v0.3.3 以下的版本(在 $GOPATH/pkg/mod 下面),然后编译项目,是否能成功过。

  希望本文能够让你重视项目安全问题,重视 go module 的安全。

  此外,Jfrog 的 VSCode 扩展还可以使用在其他语言项目中。例如 Maven,Gradle,npm,NuGet,RubyGems 和 PHP Composer 等。

上一篇:ESP32 以太网例程配置W5500笔记


下一篇:vscode:四个乱码问题及解决方法