Snyk CodeにGoのセキュリティスキャンが追加
Frank Fischer
2021年10月14日
0 分で読めます編集者注(2022年1月10日): Snyk CodeのGoサポートがGAになりました。
2021年初頭にリリースされたSnyk Codeは、短期間で大きく進化しました。開発者を第一に考えたセキュリティツールとして、直感的に使えるUIとCLIを備え、主要なIDEに組み込めるほか、実行可能な修正案を提示します。また、業界をリードするリアルタイムのスキャン速度と高い精度を実現しています。さらに、世界中の開発者コミュニティから学習する機械学習ベースのアルゴリズムに支えられており、堅牢なナレッジベースを飛躍的に拡大しています。
リリース以来、対応言語も着実に増やしてきました。Snyk CodeはすでにJavaScript、TypeScript、Java、Python、C#、PHP(ベータ版)に対応し、そして今回……お待ちかね……Goのベータ版サポートが加わりました!
Snyk CodeのGoセキュリティスキャンがベータ版に至るまでの経緯と、その機能を活用する方法をご紹介します。
Snyk CodeにおけるGoの歩み
通常、新しい言語を追加するプロセスは、元のコードを中間表現に変換するパーサーをSnyk Codeエンジンに追加することから始まります。この中間表現は言語に依存せず、現代の汎用言語が持つ特性をすべてサポートします。次に、機械学習を活用したプロセスを実行し、ルールのナレッジベースを生成します。言語ごとにランタイムやライブラリのセットは異なるため、エンジンはそれぞれのソース関数とシンク関数を学習します。
ご想像のとおり、これは反復的なプロセスであり、その結果、ナレッジベースは日々飛躍的に拡大しています。初期テスターから、ほかのツールでは検出できなかったセキュリティ問題を見つけられて役立ったというフィードバックが得られた段階で、新しいナレッジベースを本番環境に追加します。まだ完成していないためルールには「ベータ」の印を付けていますが、価値をできるだけ早く提供し、継続的に改善していきたいと考えています。その後も毎日新しいルールを追加していくため、現時点では結果にすべてが含まれていない場合がありますが、検出できる項目は継続的に増えていきます。社内での測定とテストにより、目標とするカバレッジと精度に達したことが確認されると、その言語のサポートはベータ版を終了し、正式サポートとなります。
そして今回、このプロセスを使ってGoという新しい言語を追加しています。Goは比較的新しい言語ですが、近年、広く採用されていることがわかっています。Goは、あるギャップを埋めるために設計されました。C++のようにパフォーマンスを細かく制御できる言語は、複雑で扱いにくいと見なされがちです。一方、Pythonのように理解しやすく読みやすい言語は、全体的なパフォーマンスが低いように思われます。Goは、ネットワーク接続が多くマルチコアのマシンが使われる現代の環境を見据え、このギャップを埋めるために設計されました。
Goには、静的型付けやメモリ安全性など、よくあるバグの原因を防ぐ特性が備わっています。また、開発環境にも初期からリンターなどのツールが用意されていました。それでも、セマンティックレベルの問題は残ります。そこで役立つのがSnyk Codeです。
注:一般に、アプリはオープンソースの依存関係と独自のコードで構成されています。Snyk Open Sourceは、Go Modules、dep、govendorのパッケージマネージャー設定をスキャンし、脆弱なパッケージがないか確認します。
GoプロジェクトをSnyk Codeでスキャンする
Snyk Codeの大きなメリットのひとつは、GitHubやGitLabなどのソースコード管理システムを使用していれば、インストールが不要なことです。自分のコードでなくても、オープンソースリポジトリをスキャンできます。まずはSnykの無料アカウントに登録してください。クレジットカードは不要で、必要なのはGitHubまたはGitLabのアカウントだけです。
次に、個人のGitアカウントにあるプロジェクトを追加するか、公開リポジトリのパスを指定します。スキャンは自動的に開始され、数万ファイルを含む大規模なリポジトリでも数分で完了します。
コード分析の結果を開くと、スキャン結果の詳細を確認できます。

注:Goはベータ版のため、正式サポートされている言語ほど結果の精度は高くありません。また、継続的な更新により、結果は日々変化します。
ほかの対応言語と同様に、Visual Studio CodeおよびJetBrains GoLand用のIDEプラグインでも、Snyk CodeによるGoのセキュリティスキャンを利用できます。もちろん、Snyk CLIもGoに対応しています。
ぜひお試しいただき、フィードバックをお寄せください。Goのセキュリティスキャンをより早くベータ版から正式版に移行するためにご協力ください。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。



