> Source: https://www.ymotongpoo.com/works/goblog-ja/vuln/


# Goの脆弱性管理

[Vulnerability Management for Go](https://go.dev/blog/vuln) by Julie Qiu, for the Go security team

Goの脆弱性管理サポートの新機能を発表できることをうれしく思います。これは、Go開発者が自身に影響する可能性のある既知の脆弱性を知るための第一歩です。

この記事では、現在利用可能な機能の概要と、このプロジェクトの今後のステップについて紹介します。

## 概要

Goでは、コードベースを解析して既知の脆弱性を明らかにするツールを提供しています。このツールはGoの脆弱性データベースを基盤としており、このデータベースはGoセキュリティチームによって管理されています。Goのツールは、実際にコードが呼び出している関数の中にある脆弱性のみを表示することで、結果に含まれるノイズを減らします。

![Architecture diagram of Go's vulnerability management system](./architecture.png)

## Goの脆弱性データベース

[Goの脆弱性データベース](https://vuln.go.dev)は、公開されているGoモジュール内のインポート可能なパッケージにおける既知の脆弱性についての情報を包括的にまとめたものです。

脆弱性のデータは、CVEやGHSAなどの既存の情報源、およびGoパッケージメンテナからの直接の報告から得られます。この情報はGoセキュリティチームによってレビューされたのち、データベースに追加されます。

パッケージメンテナの皆さんには、自身のプロジェクトにおける公開された脆弱性についての情報を[提供](https://go.dev/s/vulndb-report-new)していただいたり、自分のGoパッケージに関する既存の脆弱性情報を[更新](https://go.dev/s/vulndb-report-feedback)していただくことを推奨しています。報告のプロセスをできるだけ手間のかからないものにしたいと考えていますので、改善のための提案があれば[ぜひお寄せください](https://go.dev/s/vuln-feedback)。

Goの脆弱性データベースは、ブラウザから[pkg.go.dev/vuln](https://pkg.go.dev/vuln)で閲覧できます。データベースについての詳細は[go.dev/security/vuln/database](https://go.dev/security/vuln/database)を参照してください。

## govulncheckによる脆弱性検出

新しい[govulncheckコマンド](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck)は、Goユーザーが自身のプロジェクトに影響する可能性のある既知の脆弱性を、ノイズを抑えた信頼できる方法で知るためのものです。govulncheckはコードベースを解析し、コード内のどの関数が脆弱性のある関数を推移的に呼び出しているかに基づいて、実際に影響のある脆弱性のみを表示します。

最新版のgovulncheckは[go install](https://pkg.go.dev/cmd/go#hdr-Compile_and_install_packages_and_dependencies)でインストールできます。

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

そして、プロジェクトのディレクトリ内でgovulncheckを実行します。

```
$ govulncheck ./...
```

govulncheckは、ユーザーからのフィードバックを集めながら頻繁な更新と迅速な反復を可能にするため、独立したツールとなっています。長期的には、govulncheckツールをGo本体に統合する計画です。

### 統合

脆弱性についてはできるだけ早い段階、つまり開発とデプロイのプロセスの中で知っておくのが常に望ましいことです。脆弱性のチェックを自分のツールやプロセスに統合するには、[govulncheck -json](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck#hdr-Flags)を使用してください。

私たちは、[Goパッケージ検索サイト](https://pkg.go.dev)など、既存のGoのツールやサービスに脆弱性検出機能をすでに統合しています。例えば[このページ](https://pkg.go.dev/golang.org/x/text?tab=versions)では、golang.org/x/textの各バージョンにおける既知の脆弱性を確認できます。VS Code Go拡張機能を通じた脆弱性チェック機能についても近日公開予定です。

## 次のステップ

Goの脆弱性管理サポートを役立てていただき、また改善のためにご協力いただければ幸いです。

Goの脆弱性管理サポートは現在活発に開発が進められている新機能です。いくつかのバグや[制限事項](https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck#hdr-Limitations)があることをご了承ください。

次のような方法でぜひ改善にご協力ください。

* 自分が管理しているGoパッケージについて、公開されている脆弱性の新規[報告](https://go.dev/s/vulndb-report-new)や既存情報の[更新](https://go.dev/s/vulndb-report-feedback)をする
* govulncheckを使った経験を共有するために[このアンケート](https://go.dev/s/govulncheck-feedback)に回答する
* 問題点や機能要望について[フィードバックを送る](https://go.dev/s/vuln-feedback)

より良く、より安全なGoのエコシステムを築くために、皆さんと共に取り組んでいけることを楽しみにしています。

By Julie Qiu, for the Go security team

