Golang程序漏洞檢測器govulncheck的安裝和使用
govulncheck 是什么?
govulncheck 是一個命令行工具,可以幫助 Golang 開發(fā)者快速找到項目代碼和依賴的模塊中的安全漏洞。該工具可以分析源代碼和二進制文件,識別代碼中對這些漏洞的任何直接或間接調用。
默認情況下,govulncheck 通過 Go 漏洞數(shù)據(jù)庫 https://vuln.go.dev 提供的接口查詢相關的模塊是否包含漏洞(查詢接口的請求只包含模塊路徑,不包含程序的代碼或其他屬性)。
安裝和使用方法
安裝之前需要將 Go 版本升級到1.18及以上,使用如下命令安裝最新版本的 govulncheck:
$ go install golang.org/x/vuln/cmd/govulncheck@latest
在項目的主目錄(包含 go.mod 文件的目錄)執(zhí)行如下命令進行漏洞掃描:
$ govulncheck ./...
govulncheck 也可以集成到自己的 CI/CD 系統(tǒng)里面,govulncheck 考慮到這方面的需求,所以輸出結果可以選擇 json 方式,例如:
$ govulncheck -json ./...
如果使用 govulncheck 掃描編譯好的二進制文件,需要使用參數(shù) -mode=binary 并跟上二進制文件的路徑,例如:
$ govulncheck -mode=binary $HOME/go/bin/my-go-program
默認情況下,項目如果不存在漏洞,govulncheck 將成功退出(狀態(tài)碼為0),如果存在漏洞,則返回非0的狀態(tài)碼。如果提供了 -json 參數(shù),無論檢測到多少漏洞,都會成功退出,即狀態(tài)碼為0。
使用 govulncheck 需要注意的點如下:
- 被掃描的二進制文件要求是使用 Go 1.18 或者更高版本構建的。
- 對于函數(shù)指針和接口調用的分析比較保守,在某些情況下可能會誤報或者打印不夠準確的堆棧信息。
- 使用包反射對函數(shù)的調用對靜態(tài)分析來說是不可見的。對于僅通過這些調用方式可訪問到的有漏洞的代碼也不會報告漏洞,使用 unsafe 包也可能產生誤報。
- 因為 Go 二進制文件不包含詳細的調用信息,所以 govulncheck 也無法顯示檢測到的漏洞的調用鏈。對于二進制文件中存在的但無法訪問到的代碼,也可能產生誤報。
- 只會給出當前執(zhí)行環(huán)境和配置(GOOS/GOARCH)下的漏洞。假設一個漏洞只在 Linux中才有,那么在 Windows 則不會報告該漏洞。所以需要注意跨平臺開發(fā)的情況,需要在不同的平臺做漏洞掃描。另外需要注意的一點時,執(zhí)行掃描的 go 版本需要和運行環(huán)境的 go 版本保持一致,假設 Go 1.18 標準庫里才有的漏洞,如果執(zhí)行掃描使用的 Go 版本是1.19,那么也不會報告該漏洞。
到此這篇關于Golang程序漏洞檢測利器govulncheck的安裝和使用的文章就介紹到這了,更多相關Golang govulncheck安裝和使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Golang優(yōu)雅保持main函數(shù)不退出的辦法
很多時候我們需要讓main函數(shù)不退出,讓它在后臺一直執(zhí)行,下面這篇文章主要給大家介紹了關于Golang優(yōu)雅保持main函數(shù)不退出的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07
關于go-micro與其它gRPC框架之間的通信問題及解決方法
在之前的文章中分別介紹了使用gRPC官方插件和go-micro插件開發(fā)gRPC應用程序的方式,都能正常走通。不過當兩者混合使用的時候,互相訪問就成了問題,下面通過本文給大家講解下go-micro與gRPC框架通信問題,一起看看吧2022-04-04

