来源:脑子进煎鱼了 业务系统的官方安全问题一直是各企业的 “头号” 问题(被发现时)。不知道有多少读者朋友们经历了刚刚结束的新玩项目 HW 行动。 最近发现有厂商已经可以对 Go 开始做检测了,具漏这又是洞管一大进步。 这不,理和最近发现 Go 官方自己推出了新的扫描工具,作用是自己漏洞管理,告诉你已报告的有没有坑漏洞,并告知你应该如何升级到什么版本。官方 今天这篇文章就是分享这个安全工具。前置的具漏版本要求是:Go >= 1.18。 Go 安全团队在 2022 年 9 月,正式推出了 govulncheck 工具,理和可以根据背后的扫描 Go 漏洞数据库去分析 Go 代码,对已知的自己问题发出警告,提醒开发者进行修复。 以下是 govulncheck 的架构图: Go 漏洞管理由以下几个部分组成: 根据 Go 官方的示例,我们需要模拟一个例子来验证安全功能。创建一个 Go 项目 vuln-tutorial,写入如下代码: ( ... ) { :] { tag, err := language.Parse(arg) { , arg, err) tag == language.Und { , arg) { , arg, tag) } } } 拉取相关依赖: $ go mod tidy package golang.org/x/text/language go: downloading golang.org/x/text v0.13.0 golang.org/x/text v0.13.0 将 golang.org/x/text 版本降级至 v0.3.5。这个版本存在已知的问题: $ go get golang.org/x/text@v0.3.5 go: downloading golang.org/x/text v0.3.5 go: downgraded golang.org/x/text v0.13.0 => v0.3.5 安装 govulncheck: install golang.org/x/vuln/cmd/govulncheck@latest c255bcf846 对比一下,查看是否正常: $ govulncheck -version Go: go1.20.5 Scanner: govulncheck@v1.0.1 DB: https://vuln.go.dev DB updated: 2023-09-13 19:45:03 +0000 UTC No vulnerabilities found. Share feedback at https://go.dev/s/govulncheck-feedback. 一切就绪,接下来正式开始。 我们回到上一节创建的 vuln-tutorial 项目,在根目录执行如下命令: ➜ vuln-tutorial govulncheck ./... known vulnerabilities... golang.org/x/text/language More info: https://pkg.go.dev/vuln/GO-2021-0113 Module: golang.org/x/text : golang.org/x/text@v0.3.5 : golang.org/x/text@v0.3.7 Example traces found: === Informational === packages that you import, but there are no call stacks leading to the use of this vulnerability. You may not need to take any action. See https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck details. golang.org/x/text/language More info: https://pkg.go.dev/vuln/GO-2022-1059 Module: golang.org/x/text : golang.org/x/text@v0.3.5 : golang.org/x/text@v0.3.8 Your code is affected by 1 vulnerability from 1 module. Share feedback at https://go.dev/s/govulncheck-feedback. 整个输出信息分两大块。 第一块区域是 Vulnerability(漏洞),上述例子的扫描结果是发现了漏洞 #GO-2021-0113,告知了具体的原因、触发函数、发现的源码下载版本和修复的版本(方式): golang.org/x/text/language More info: https://pkg.go.dev/vuln/GO-2021-0113 Module: golang.org/x/text : golang.org/x/text@v0.3.5 : golang.org/x/text@v0.3.7 Example traces found: 第二块区域是 Informational(信息),可以理解为进一步的修复建议。上述例子的建议是基于漏洞 #GO-2022-1059,建议升级更新的版本: golang.org/x/text/language More info: https://pkg.go.dev/vuln/GO-2022-1059 Module: golang.org/x/text : golang.org/x/text@v0.3.5 : golang.org/x/text@v0.3.8 当然,这部分是建议修复。因为不存在实际涉及到此漏洞的调用堆栈内容。可能仅是该包的漏洞进行了展示。 最后部分在开头和结尾对本次扫描结果的统计输出和代码行数的描述性输出了。告诉你都扫描和识别了多少内容。 这是一个我比较感兴趣的问题。 因为你看,感觉这个 govulncheck。好像 rsc 也没有出来站台过,Go 核心团队里似乎也没人发过声。但就是出现了。 好在 govulncheck 是 “开源” 的服务器租用(只是个镜像仓库),项目地址:golang/vuln。我们可以看到一些蛛丝马迹: 目前 Go 是有一个安全团队,由 @Julie Qiu 带队。她的个人 About: 相当于是个小组,大概 2~5 个有阶段性大量提交代码。也承担 pkg.go.dev 的相关开发。参与的成员都是 Google 公司的人。与核心团队有职责上的区分。 (Google 为 Go 输送人才...) Go 近年来感觉加大了对周边生态组件的一些小建设,虽然达不到齐全。但起码有了。本次 Go 安全工具 govulncheck 就是一个很好的开始。 对日常应用程序有安全要求的小伙伴们,也可以将 govulncheck 加入 CI/CD 流程中,自动的扫描识别,按时升级。可以避免一些已知的漏洞风险。govulncheck 是洞管什么
最简 Demo
准备有缺陷的项目
快速运行 govulncheck
govulncheck 作者是谁
总结