Goのセキュリティ:Goアプリケーションのセキュリティ強化を発表
2020年12月16日
0 分で読めますSnyk Open SourceとSnyk Containerで、Goのセキュリティサポートを強化しました。開発チームとセキュリティチームは、Goアプリケーションの脆弱性をより効率的に検出し、修正できるようになります。
Go開発者は、IDEで最初のコードを書き始める段階から、Snyk CLIを使ったCI/CDパイプライン、そして今回、SnykのSCMインテグレーションでGo Modulesがベータ版として利用可能になったことで、Gitベースのワークフローに至るまで、SDLCのさまざまな段階でGoプロジェクトをテストし、監視できるようになりました。
Goのすべてがここに!
今年のStackOverflowの調査では、Goは「最も愛されている言語」と「最も使いたい言語」の上位5つに選ばれ、この数年その順位を維持しています。Goユーザーも増加しており、GitHubのState of Octoverseにもその傾向が表れています。現在、GoはGitHubでプルリクエスト数が4番目に多い言語です。
なぜこれほど人気なのでしょうか。Goは、実用性と使いやすさを重視して設計されました。高いパフォーマンス、軽量なアーキテクチャ、シンプルな構文を備えています(Goにはクラスがありません!)。Goのgoroutinesによる並行処理は、Goが「効率的な」言語とされる理由の一例です。Uberはこの機能を活用し、2017年当時、毎秒のクエリ数でUber最高記録を誇るサービスを構築しました。もちろん、活用しているのはUberだけではありません。こうした理由からGoは「クラウドのプログラミング言語」と呼ばれ、Google、Netflix、Salesforceなどの企業で使われているほか、DockerやKubernetesなどのプロジェクトを支えています。
こうした傾向はSnykでも見られます。セキュリティ上の脆弱性やライセンス上の問題を確認するために、テストと監視の対象となるGoプロジェクトが着実に増えています。
SnykによるGoのセキュリティ対策
Goは比較的新しい言語で(登場からまだ10年余りです)、Goパッケージに関連する既知のセキュリティ脆弱性は着実に増加しています。こうしたパッケージを取り込むことで生じるリスクも高まっています。
2019年のGoコミュニティ調査によると、Go開発者の75%がセキュリティを非常に重要だと考え、Goのセキュリティに満足しています。Goチームも、脆弱性の精査とテストへの今後の投資を発表しました。これは非常に前向きな兆候ですが、成熟したエコシステムと同様に、オープンソースの依存関係を取り込むことで生じるリスクには、管理と軽減が必要です。
Snykは、Goアプリケーションの開発時にセキュリティを維持したい開発チームとセキュリティチームに、導入しやすく、迅速な修正を可能にする、精度の高いセキュリティインテリジェンスを活用したソリューションを提供します。
開発者に使いやすい - Snykは既存の開発ワークフローにシームレスに統合でき、プロジェクトを数秒でスキャンします(Kubernetes規模のプロジェクトでも対応)。非常に使いやすいため、幅広い導入と生産性の最大化につながります。
包括的なカバレッジ - Snykは、Go Modulesアプリケーション(コンテナ内で実行されるものも含む)に対応し、SDLCのさまざまな段階でセキュリティ脆弱性 とライセンス上の問題を特定します。
深いセキュリティ知見 - 2019年以降、SnykはSnyk Intel脆弱性データベースにGoのセキュリティ脆弱性を数百件追加してきました。その多くは独自に発見されたもので、NVDには掲載されていません。Snykのセキュリティリサーチチームによる調査の成果です。

Snyk CLIを使ったGoのセキュリティテスト
Snyk CLIは、アプリケーションに取り込むGoのオープンソースパッケージに含まれる既知の脆弱性をテスト、監視、修正するためのコマンドライン機能を提供します。アプリケーションの開発中に必要に応じて実行することも、CI(ビルド)システムの一部として利用することもできます。Snykは依存関係をスキャンする際にDepGraphsを利用するため、大規模なプロジェクトでも数秒でテストが完了します。
Snyk CLIを使うには、まずインストールし、Snykアカウントで認証してAPIトークンを取得します。無料で利用できます!
snyk testコマンドを実行すると、ローカルプロジェクトの既知の脆弱性をテストし、検出された問題の詳細(深刻度、種類、説明、脆弱な経路の数、修正方法など)を確認できます。

snyk monitorコマンドもsnyk testを実行しますが、Goプロジェクトのスナップショットを取得して、結果をSnykアプリ/UIにアップロードします。ご安心ください。取得するのは依存関係のスナップショットのみで、ソースコードは取得しません!その後、Snykがプロジェクトを監視し、新たな脆弱性や修正が見つかったときに通知します。
コンテナにパッケージされたGoアプリケーションをテストしたい場合(ソースコードを直接テストできないサードパーティ製コンテナなど)、コンテナスキャンの一環として、まもなく一度のスキャンで確認できるようになります。コンテナレジストリからイメージをインポートするか、Snyk CLIのコンテナ機能を使用できます。コンテナの脆弱性と、検出されたGoモジュールの脆弱性をどちらも確認できます。この種のコンテナスキャンでは、コンテナとコードの問題を一度に検出できますが、結果は別々のプロジェクトとして表示されます。コンテナの問題を修正するチームとコードの問題を修正するチームが異なる場合に便利なほか、それぞれの問題を分けて報告できます。
Goプロジェクトのセキュリティ対策をIDEにシフト
セキュリティテストを早い段階にシフトするほど、修正にかかるコストを抑えられます。Go開発者は、コードを書き始めた段階から、使い慣れた開発ツールで脆弱性を発見し、修正できます。Snykは豊富なIDEプラグインを提供しており、上記の開発者調査によると、Go開発者にとってVSCodeに次いで人気の高いIDEであるJetBrainsのGoLand向けプラグインも用意しています。
Snykプラグインを使うには、GoLand内でPreferencesからPluginsを開き、プラグインをダウンロードするだけです。

インストールすると、プラグインが最新バージョンのSnyk CLIをダウンロードします。処理が完了すればスキャンを実行でき、数秒で結果が表示されます。以下の例では、HashiCorpのVaultプロジェクトをスキャンしたところ、少数のセキュリティ上の問題が見つかりました。詳細を確認して、修正方法を把握できます。

新機能! GitワークフローにGoのセキュリティテストを統合(ベータ版)
今回発表する最新の機能強化により、リポジトリ内のGo Modulesプロジェクトをテスト、監視できるようになり、Snykによるセキュリティテストとライセンスチェックをさらに効率化できます。
Snykのソースコード管理(SCM)インテグレーションを利用すると、連携済みのすべてのGo Modulesリポジトリを継続的にスキャンし、オープンソースの依存関係に含まれるセキュリティ脆弱性やライセンス上の問題を検出できます。
GitHubまたはBitbucketのインテグレーションを設定してGo Modulesプロジェクトをインポートすると、Snyk UIのProjectsページで問題を追跡できます。

この機能は現在ベータ版で、順次提供を開始しています。Goプロジェクトで有効にしたい場合は、サポートチームまでお気軽にお問い合わせください。
Goの依存関係で新たに公開された脆弱性が検出された場合や、これまで利用できなかったパッチまたはアップグレードの経路が作成された場合、設定済みの通知チャネルを通じてSnykからお知らせします。
準備はいいですか?安全にGoを始めましょう!
今回の機能強化は、Snyk CLIによるGoプロジェクトのセキュリティテストのパフォーマンスを向上させた最近の改善に続くものです。開発者に使いやすく、包括的で、深いセキュリティ知見を備えた、Goアプリケーションを守るSnykのソリューションをさらに強化します。
Goの人気と導入が急速に広がり、ユーザーのニーズも高まるなか、私たちはこのエコシステムへのサポートを改善し続けていきます。2021年には、Goの脆弱性を自動で簡単に修正できるよう、修正ワークフローも強化する予定です。
Goをお使いですか?今すぐSnykを無料でお試しください!
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。
