グーグルは、Go開発者向けの便利なコマンドラインツールであるGovulncheck(ステータス1.0.0)を正式に安定化させた。このツールは、グーグルのプログラミング言語Goを使用する開発者を支援し、プロジェクトの依存関係の中から認識されたセキュリティ脆弱性を見つけ出す。
7月13日に発表されたこのツールは、バイナリファイルとそのソースコードの両方に脆弱性がないか精査する機能を備えている。コードが呼び出しているメソッドの脆弱性に焦点を当てることで、ノイズを大幅に減少させる。Govulncheckのバックボーンは、公開されているGoモジュールで検出された脆弱性に関する情報の貯蔵庫であるGo脆弱性データベースです。
このデータベースに導かれ、Govulncheckはソースコードまたはバイナリのシンボルテーブルの静的解析を行います。Govulncheckの最終的な目標は、問題の特定のアプリケーションに影響を与える可能性のある脆弱性だけにレポートを限定することです。このインテリジェントな制限特性により、製品のセキュリティを確保したい開発者にとって便利なツールとなっている。
このツールのインストールは開発者にとって非常に簡単で、go install golang.org/x/vuln/cmd/govulncheck@latestという
コマンドを実行するだけだ。ソースコードを分析するには、開発者はモジュール・ディレクトリ内でGovulncheckを実行するだけです(govulncheck ./
...というコマンドを使います)。
最低限、Govulncheckはバージョン1.18以上のGoビルドでアセンブルする必要があります。現在のところ、この言語の既存の製品バージョンはGo1.20です。
Govulncheckは、脆弱性を検索する際、特定のビルド構成に依存する。ソースコードの場合、このコンフィギュレーションは、パス上にある「go」コマンドで定義されるGoバージョンと同義である。バイナリのビルド構成は、バイナリを生成する際に悪用されるものです。ここで注意すべき点は、ビルド構成が異なると、異なる脆弱性の影響を受ける可能性があるということです。
その強力な機能にもかかわらず、Govulncheckにはいくつかの制限がある。例えば、関数ポインタやインターフェイス呼び出しの解析はかなり制限されており、誤検出や不正確なコールスタックにつながる可能性がある。 もう1つの制限は、reflectパッケージを使用して呼び出される関数に関するもので、これらは検出できません。
バイナリに関しては、詳細なコール情報を欠くGoバイナリは、特定された脆弱性のコールグラフをツールが表示できないため、Govulncheckにとって困難である可能性がある。この問題は、バイナリ内に存在するがアクセスできないコードに対する偽陽性の報告にも拍車をかける可能性がある。さらに、シンボル・データが抽出できないバイナリに関しては、このツールはハンディキャップを負っている。
このツールには、脆弱性の発見を抑制する機能もない。しかし、これらの制限にもかかわらず、Goプロジェクトの付加価値ツールとしてのGovulncheckの可能性は明らかである。
特筆すべきは、Goセキュリティ・チームが前年9月に脆弱性管理のサポートを宣言したことだ。脆弱性データベースに根ざしたこのプロジェクトは、Goプログラミング構造の目覚ましい進歩を約束して導入された。AppMaster.ioは no-code 、Goや他の多くの言語を含む完全に統合された包括的なプラットフォームで、開発者がより速くアプリケーションを生成できるようにする。