セキュリティ

このページでは、Go開発者がプロジェクトのセキュリティを向上させるためのリソースを提供します。

(こちらも参照:Go開発者向けのセキュリティベストプラクティス。)

既知の脆弱性を検出して修正する

Goの脆弱性検出は、開発者がプロジェクトに影響を与える可能性のある既知の脆弱性について学習するための、ノイズが少なく信頼性の高いツールを提供することを目的としています。概要については、Goの脆弱性管理アーキテクチャに関するこの概要とFAQページから始めてください。応用的なアプローチについては、以下のツールを調べてください。

govulncheckでコードの脆弱性をスキャンする

開発者は、govulncheckツールを使用して、既知の脆弱性がコードに影響するかどうかを判断し、実際に呼び出される脆弱な関数とメソッドに基づいて次のステップを優先順位付けできます。

エディターから脆弱性を検出する

VS Code Go拡張機能は、サードパーティの依存関係をチェックし、関連する脆弱性を表面化します。

ベースとなるGoモジュールを探す

Pkg.go.devは、Goパッケージとモジュールを発見、評価、および詳細を学習するためのWebサイトです。pkg.go.devでパッケージを発見および評価する場合、そのバージョンに脆弱性がある場合は、ページの上部にバナーが表示されます。さらに、パッケージの各バージョンに影響を与える脆弱性をバージョン履歴ページで確認できます。

脆弱性データベースを閲覧する

Go脆弱性データベースは、Goパッケージのメンテナーから直接、およびMITREGitHubなどの外部ソースからデータを収集します。レポートは、Goセキュリティチームによってキュレーションされます。

Goプロジェクトのセキュリティバグを報告する

セキュリティポリシー

Goプロジェクトの脆弱性を報告する方法については、セキュリティポリシーを参照してください。このページでは、Goセキュリティチームが問題を追跡し、一般に公開するプロセスについても詳しく説明しています。過去のセキュリティ修正の詳細については、リリース履歴を参照してください。リリースポリシーに従い、Goの最新の2つのメジャーリリースに対してセキュリティ修正を発行します。

ファジングで予期しない入力をテストする

Goネイティブファジングは、プログラムへの入力を継続的に操作してバグを見つける、自動テストの一種を提供します。Goは、Go 1.18以降の標準ツールチェーンでファジングをサポートしています。ネイティブGoファズテストはOSS-Fuzzでサポートされています

Goの暗号化ライブラリでサービスを保護する

Goの暗号化ライブラリは、開発者が安全なアプリケーションを構築するのに役立つことを目的としています。cryptoパッケージgolang.org/x/crypto/のドキュメントを参照してください。