Govulncheck v1.0.0がリリースされました!

Govulncheck v1.0.0 is released! by Julie Qiu, for the Go security team

govulncheck v1.0.0 のリリースをお知らせできることを嬉しく思います。同時に、スキャン機能を他のツールに 統合するためのAPIのv1.0.0もリリースされました。

Goの脆弱性管理サポートは、昨年9月に最初に発表されました。それ以来いくつもの変更を重ね、 本日のリリースに至りました。

この記事では、更新されたGoの脆弱性ツールと、その使い方について説明します。また、Goプロジェクトにおいて セキュリティを優先するための一助として、セキュリティのベストプラクティスガイドも 最近公開しました。

Govulncheck

Govulncheck は、Goユーザーがプロジェクトの依存関係に含まれる 既知の脆弱性を見つけるのを助けるコマンドラインツールです。このツールはコードベースとバイナリの両方を解析でき、 実際にコードが呼び出している関数の脆弱性を優先的に表示することでノイズを減らします。

govulncheckの最新バージョンは go install を使ってインストールできます。

go install golang.org/x/vuln/cmd/govulncheck@latest

次に、モジュール内でgovulncheckを実行します。

govulncheck ./...

ツールの使い方をはじめるための詳しい情報は、govulncheckのチュートリアルを 参照してください。

今回のリリースにより、安定版のAPIが利用可能になりました。詳細は golang.org/x/vuln/scanに記載されています。このAPIはgovulncheckコマンドと 同じ機能を提供するもので、開発者がセキュリティスキャナーや他のツールをgovulncheckと統合できるようにします。 一例として、 osv-scannerとgovulncheckの統合 を参照してください。

データベース

Govulncheckは、公開されているGoモジュールの既知の脆弱性に関する情報を包括的に提供するGo脆弱性データベース、 https://vuln.go.dev によって支えられています。データベース内のエントリは pkg.go.dev/vuln で閲覧できます。

初回リリース以降、パフォーマンスの向上と長期的な拡張性の確保のために データベースAPIを更新しました。独自の脆弱性データベースのインデックスを 生成するための実験的なツールも golang.org/x/vulndb/cmd/indexdb で提供されています。

Goパッケージのメンテナーの方は、ぜひ自分のプロジェクトにおける公開されている脆弱性について 情報を提供してください

Go脆弱性データベースについての詳細は、go.dev/security/vuln/database を参照してください。

各種ツールとの統合

脆弱性の検出は、多くのGo開発者のワークフローに既に組み込まれている一連のツール群に統合されました。

Go脆弱性データベースのデータは pkg.go.dev/vuln で閲覧できます。脆弱性の情報は pkg.go.devの検索ページやパッケージページにも表示されるようになりました。例えば、 golang.org/x/text/languageのバージョンページ では、モジュールの古いバージョンに含まれる脆弱性が表示されます。

Visual Studio Code用のGo拡張機能を使えば、エディタ上で直接govulncheckを実行することもできます。使い方は こちらのチュートリアルを参照してください。

最後に、多くの開発者がCI/CDシステムの一部としてgovulncheckを実行したいと考えていることも承知しています。 その第一歩として、プロジェクトに統合するための govulncheck用のGitHub Action を用意しました。

動画による解説

上記で紹介した統合機能のデモに興味がある方は、今年のGoogle I/Oで発表した Build more secure apps with Go and Google というトークで、これらのツールの解説を行っていますのでご覧ください。

フィードバック

いつものことですが、皆さんからのフィードバックをお待ちしています!貢献の方法や改善へのご協力方法については、 こちらをご覧ください。

Goの脆弱性管理サポートの最新リリースが皆さんのお役に立ち、より安全で信頼性の高いGoエコシステムの構築に ご協力いただけることを願っています。

By Julie Qiu, for the Go security team