Google已经正式稳定了Govulncheck(1.0.0状态),这是一款面向Go开发者的便捷命令行工具。该工具可帮助使用谷歌Go编程语言的开发人员在其项目的依赖关系中找到公认的安全漏洞。
该工具于7月13日发布,能够仔细检查二进制文件及其源代码中的漏洞。它将重点放在代码调用方法中的漏洞上,从而大大减少了噪音。Govulncheck的支柱是Go漏洞数据库,这是一个关于公共Go模块中检测到的漏洞的信息库。
在该数据库的指导下,Govulncheck对源代码或二进制文件的符号表进行静态分析。其最终目标是将其报告限制在可能对特定应用程序产生潜在影响的漏洞上。这种智能限制特性使其成为希望确保产品安全的开发人员的得力工具。
对于开发者来说,安装该工具非常简单--只需要go install golang.org/x/vuln/cmd/govulncheck@latest
命令即可。要分析源代码,开发人员只需在模块目录下执行Govulncheck(使用命令govulncheck ./
...)。
至少,Govulncheck需要与1.18版或更高版本的Go构建程序组装在一起。到目前为止,该语言的现有生产版本是Go1.20。
Govulncheck在搜索漏洞时,依赖于特定的构建配置。对于源代码,该配置与路径上的 "go "命令所定义的Go版本同义。二进制文件的编译配置是生成二进制文件时的配置。这里需要注意的一点是,不同的构建配置可能会受到不同漏洞的影响。
尽管Govulncheck具有强大的功能,但它也有一些局限性。例如,它对函数指针和接口调用的分析相当有限,可能导致误报或不精确的调用堆栈。 另一个限制与使用包reflect调用的函数有关--这些函数无法检测。
就二进制文件而言,缺乏详细调用信息的Go二进制文件可能会对Govulncheck构成挑战,因为它们会阻止该工具展示已识别漏洞的调用图。这个问题还可能导致二进制文件中存在但无法访问的代码被误报。此外,对于无法提取符号数据的二进制文件,该工具也存在缺陷;在这种情况下,它会选择报告依赖于二进制文件的所有模块的漏洞。
该工具还缺乏抑制漏洞发现的功能。然而,尽管存在这些限制,Govulncheck作为Go项目增值工具的潜力是显而易见的。
值得一提的是,Go安全团队在去年9月就宣布支持漏洞管理。该项目以漏洞数据库为基础,承诺在Go编程结构方面取得显著进展。AppMaster.io是一个领先的no-code 平台,其完全集成的综合平台包括Go和许多其他语言,使开发人员能够更快地生成应用程序。