公開:2026年5月26日

6分で読めます

SBOMベースの依存関係スキャンでサプライチェーンリスクを軽減

GitLab 19.0でSBOMベースの依存関係スキャンが一般提供開始。プロジェクト内の直接・推移的依存関係を網羅的に一覧化し、脆弱なパッケージがプロジェクトに混入した経路を追跡します。コードが実際に使用している脆弱性を優先的に特定・修正できます。

現代のコードベースの大部分はサードパーティのコードで構成されており、最近発生した4件のサプライチェーンインシデントは、侵害された1つのパッケージがそれに依存するすべてのプロジェクトに波及する危険性を示しています。そして、AIの普及がこの問題をさらに深刻化させています。AIが生成するコードの約半数に脆弱性が含まれているという調査結果も報告されています。

GitLabのGemnasiumアナライザーを含む従来の依存関係スキャナーは、「宣言済みのパッケージに既知のCVEはあるか」という1つの問いに答えることを目的として設計されていました。依存関係ツリーがそれほど深くなく、リリースサイクルも現在ほど速くなかった時代には、このアプローチで十分でした。

現在のアプリケーションセキュリティチームはより困難な問いに向き合っています。脆弱なパッケージはどのようにしてプロジェクトに混入したのか。それと一緒に何が持ち込まれたのか。そして、コードが実際に使用している依存関係はどれなのか。GitLab 19.0では、これらの問いに答えるために、ソフトウェア部品表(SBOM)を使用した依存関係スキャンが一般提供(GA)となります。この機能はプロジェクト内のすべての直接的・推移的依存関係を一覧化し、アプリケーションが実際に使用している脆弱なパッケージを特定します。

GitLabによる脆弱な依存関係の検出

SBOMベースの依存関係スキャンは、プロジェクト内のサードパーティライブラリやパッケージの脆弱性を検出する軽量なアナライザーです。依存関係をSBOMとしてカタログ化し、各コンポーネントをGitLab Advisory Databaseと照合して既知の問題を検出します。

GitLabは、実際に作業が行われる場所に検出結果を表示します。変更によって生じた脆弱性はマージリクエスト上に表示されるため、デベロッパーはリリース前に修正できます。また、脆弱性ダッシュボードやレポートにも検出結果が表示されるので、セキュリティチームはすべてのプロジェクトの状況を一元的に把握できます。

ソフトウェア部品表を表示する依存関係スキャンレポートソフトウェア部品表を表示する依存関係スキャンレポート

このアナライザーは、CycloneDX形式のSBOMと依存関係スキャンレポートの両方を生成します。これらは機械可読な出力形式で、GitLab内での活用はもちろん、コンプライアンスレポーティングやサプライチェーン管理ツールとの連携にも使用できます。

SBOMベースの依存関係スキャンでできること

SBOMベースの依存関係スキャンは、Gemnasiumベースのアナライザーを超える機能を提供します。

推移的依存関係をソースまで追跡 — アナライザーは、どれほど深くネストされていても推移的依存関係を追跡します。脆弱なパッケージが検出された場合、そのパッケージがプロジェクトに持ち込まれた経路が表示されます。library-alibrary-bに依存し、library-bが脆弱なlibrary-cに依存している場合、その依存チェーンをたどって対処すべき箇所を特定できます。

コードが実際に影響を受ける脆弱性に集中 — マニフェストやビルドファイルに含まれるすべての依存関係が、アプリケーション内で実行されているわけではありません。Java、JavaScript/TypeScript、Pythonプロジェクトでは、アナライザーがコードによる脆弱なパッケージの直接インポートや参照の有無を確認し、到達可能な依存関係と推移的に取り込まれているだけで実際には参照されていない依存関係を区別します。各検出結果には到達可能性のステータスが表示されるため、コードが一度もインポートしないパッケージの脆弱性への対応を後回しにし、実際にリスクが生じる箇所への対処に集中できます。

継続的脆弱性スキャン — 新しいセキュリティアドバイザリが公開されるたびに、またMRやパイプラインの実行ごとにアナライザーを呼び出せます。アクティブな開発が落ち着いても、コードが本番環境で稼働し続けているプロジェクトでこそ、この機能が特に重要になります。

SBOMベースの依存関係スキャンの動作を確認する

対応言語とファイル形式

このリリースでは24以上のパッケージエコシステムに対応しており、今後のリリースでさらに拡充される予定です。アナライザーがロックファイルや依存関係グラフを直接解析するようになったため、各パッケージマネージャーのビルドツールチェーンを再現する必要がなくなり、新しい言語やファイル形式のサポート追加がこれまでより簡単になりました。

対応するロックファイルや依存関係グラフが利用できない場合、アナライザーはpom.xmlrequirements.txt、Gradleビルドファイルなどのマニフェストファイルの解析にフォールバックします。この場合は直接的な依存関係のみが検出され、推移的依存関係は検出されないため、ロックファイルベースのスキャンと比べてカバレッジが低くなります。ロックファイルの使用が推奨されますが、ロックファイルがないプロジェクトの出発点としてマニフェスト解析も活用できます。

依存関係スキャンを一度設定して、全体に適用する

プロジェクト数が増えるにつれて、すべてのプロジェクトに手動でスキャナーを設定することは大きな運用負担となります。設定が漏れるプロジェクトが生まれ、構成内容にばらつきが生じ、誰も把握していなかったギャップが監査で発覚するといった事態につながります。

GitLab 19.0には、依存関係スキャン用のセキュリティ設定プロファイルが搭載されています。セキュリティチームやプラットフォームチームは、各パイプラインを個別に編集する代わりに、スキャンを一度設定して数百のプロジェクトに適用できます。

スキャン実行ポリシーパイプライン実行ポリシーを使用して、これらのセキュリティ標準を組織全体に強制適用できます。.gitlab-ci.ymlファイルを一切変更することなく、複数のプロジェクトにまたがって依存関係スキャンを適用できます。グループまたはインスタンスレベルで要件を一度定義するだけで、ポリシーが自動的にすべての場所に適用されます。

今すぐ始める

SBOMベースの依存関係スキャンはGitLab Ultimateをご契約いただいているお客様にご利用いただけます。GitLab.comではすでに利用可能で、GitLab DedicatedおよびSelf-Managed版のお客様には通常のリリーススケジュールで順次提供されます。

Gemnasiumの依存関係スキャナーからの移行を検討しているお客様は、移行期間中に両方のアナライザーを並行して実行できます。移行ガイドでは、2つのアナライザーの結果を比較する方法が確認でき、移行手順を追って説明しています。

新規に始める場合は、セットアップチュートリアルの手順に従ってください。設定、対応言語、詳細オプションについては、GitLabドキュメントをご覧ください。

依存関係スキャンに関するご要望やアイデアは、フィードバックエピックよりお寄せください。

GitLab 19.0のその他の内容

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成してあなたの声を届けましょう。

フィードバックを共有する

今すぐ開発をスピードアップ

DevSecOpsに特化したインテリジェントオーケストレーションプラットフォームで実現できることをご確認ください。