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