Golnagは、非常にシンプルで書きやすく便利なライブラリがOSSで公開されています。日々の開発でも、公開されたパッケージを利用しコードを書くことが多いですが、利用しているパッケージに脆弱性があるさっとチェックする方法を紹介します。

Nancyとは

Nancyというツールを利用します。こちらは、下記のように自身のGoプロジェクトに依存する脆弱性をチェックするとあります。

Nancy is a tool to check for vulnerabilities in your Go dependencies, powered by Sonatype OSS Index. Nancy currently works for projects that use dep or go mod for dependencies.

公式ドキュメントは、こちらです。

インストール方法

macOSの場合

$ brew tap sonatype-nexus-community/tap
$ brew install nancy

実際に試す

CLIコマンド等の開発でよく利用するcobraといるライブラリに依存したコードを書いているプロジェクトで試してみます。go.modファイルには、下記のように依存関係が記載されています。


module appswingby.com/sample

go 1.16

require (
	github.com/mitchellh/go-homedir v1.1.0 // indirect
	github.com/spf13/cobra v1.1.3 // indirect
	github.com/spf13/viper v1.8.0 // indirect
)

実行してみます。

$ go list -m all | nancy go.sum
[1/19] github/fsnotify/fsnotify@1.4.9 No known vulnerabilities against package/version...
・・・省略・・・
[19/19] github/go-yaml/yaml@2.4.0   No known vulnerabilities against package/version...

Audited dependencies: 19, Vulnerable: 0

こんな形でシンプルなレポートが表示されます。

軽く触ってみた感じだとシンプルなので、導入しやすいかと思います。
GitHub ActionsでのNancy導入方法もこちらに記載がありますので、興味がある方は、こちらを参照ください。