The Go Blog
Goのための脆弱性管理
Go開発者が自身に影響を与える可能性のある既知の脆弱性について学ぶのを支援するための最初の一歩として、Goの脆弱性管理の新しいサポートを発表できることを嬉しく思います。
この記事では、現在利用可能なものと、このプロジェクトの次のステップについて概説します。
概要
Goは、コードベースを分析し、既知の脆弱性を明らかにするツールを提供します。このツールは、Goセキュリティチームによって管理されているGo脆弱性データベースによって支えられています。Goのツールは、コードが実際に呼び出している関数内の脆弱性のみを浮上させることで、結果のノイズを低減します。
Go脆弱性データベース
Go脆弱性データベース(https://vuln.go.dev)は、公開Goモジュール内のインポート可能なパッケージにおける既知の脆弱性に関する情報の包括的な情報源です。
脆弱性データは、既存の情報源(CVEやGHSAなど)およびGoパッケージメンテナーからの直接の報告から得られます。この情報はGoセキュリティチームによってレビューされ、データベースに追加されます。
パッケージメンテナーが自身のプロジェクトにおける公開脆弱性に関する情報を提供し、Goパッケージにおける脆弱性に関する既存の情報を更新することを推奨します。報告プロセスを低摩擦にすることを目指しており、改善のためのご提案がありましたら、ぜひお寄せください。
Go脆弱性データベースは、ブラウザでpkg.go.dev/vulnで閲覧できます。データベースの詳細については、go.dev/security/vuln/databaseを参照してください。
govulncheckによる脆弱性検出
新しいgovulncheckコマンドは、Goユーザーが自身のプロジェクトに影響を与える可能性のある既知の脆弱性について知るための、低ノイズで信頼性の高い方法です。Govulncheckはコードベースを分析し、コード内のどの関数が脆弱な関数を推移的に呼び出しているかに基づいて、実際に影響を与える脆弱性のみを浮上させます。
go installを使用してgovulncheckの最新バージョンをインストールできます
$ go install golang.org/x/vuln/cmd/govulncheck@latest
その後、プロジェクトディレクトリ内でgovulncheckを実行します
$ govulncheck ./...
Govulncheckは、ユーザーからのフィードバックを収集する間、頻繁な更新と迅速な反復を可能にするスタンドアロンツールです。長期的には、govulncheckツールをGoのメインディストリビューションに統合する予定です。
統合
開発およびデプロイメントプロセスの可能な限り早い段階で脆弱性について知ることが常に最善です。脆弱性チェックを自身のツールやプロセスに統合するには、govulncheck -jsonを使用してください。
Goパッケージ検索サイトなど、既存のGoツールやサービスに脆弱性検出を統合しました。たとえば、このページには、golang.org/x/textの各バージョンにおける既知の脆弱性が表示されます。VS Code Go拡張機能による脆弱性チェック機能も近日中に提供されます。
次のステップ
Goの脆弱性管理サポートが役に立つことを願っており、改善にご協力いただければ幸いです!
Goの脆弱性管理サポートは、現在活発に開発中の新機能です。いくつかのバグや制限が予想されます。
以下の方法で改善にご協力いただければ幸いです
- あなたが管理するGoパッケージの公開脆弱性に関する新しい情報を投稿し、既存の情報を更新する
- govulncheckの使用経験を共有するためにこのアンケートに回答する
- 問題や機能リクエストについてフィードバックを送信する
より良く、より安全なGoエコシステムを構築するために、皆さんと協力できることを楽しみにしています。
次の記事: Go開発者調査2022年第2四半期結果
前の記事: Go 1.19がリリースされました!
ブログインデックス