Home

その脆弱性、本当に対応すべき?「VPSS」で真のサプライチェーンリスクを可視化

公開日

img of その脆弱性、本当に対応すべき?「VPSS」で真のサプライチェーンリスクを可視化
•••

現代のソフトウェア開発は、オープンソースのライブラリやフレームワークを組み合わせることで成り立っており、その恩恵は計り知れません。しかし、この「ソフトウェアサプライチェーン」は、一つのコンポーネントに脆弱性が発見されると、それに依存する無数のアプリケーションが危険に晒されるという深刻なリスクを抱えています。

本記事では、こうした課題を解決する可能性を秘めた、脆弱性評価の新しいアプローチを解説します。シンガポール国立大学の研究チームが発表した論文「Propagation-Based Vulnerability Impact Assessment for Software Supply Chains」に基づき、脆弱性の「真の影響度」を可視化する新指標「Vulnerability Propagation Scoring System (VPSS)」について、その仕組みと有効性を詳しく見ていきます。

なぜ脆弱性アラートに疲弊してしまうのか?従来の評価手法の限界

多くの開発者が脆弱性スキャンツールを導入していますが、その結果に首を傾げた経験はないでしょうか。そこには、従来の評価手法が抱える2つの大きな限界がありました。

1. 使われていないライブラリの脆弱性まで検知してしまう

従来の脆弱性評価の多くは、「パッケージレベル」での分析に留まっていました。これは、プロジェクトが依存しているライブラリに脆弱性が見つかれば、それだけで警告を発するという仕組みです。

しかし、実際にはライブラリ全体をインポートしていても、その中の脆弱性が存在する特定の関数を全く呼び出していないケースは少なくありません。結果として、自社のアプリケーションには何の影響もない脆弱性までが「要対応」としてリストアップされ、開発者は本来不要な調査や対応に追われる「誤検知(False Positive)」の問題に悩まされていました。

2. 脆弱性の「真の影響度」を測るモノサシがない

脆弱性自体の深刻度を示す指標として、CVSS(共通脆弱性評価システム)が広く利用されています。しかしCVSSは、あくまで個々の脆弱性の特性を評価するものであり、その脆弱性がソフトウェアサプライチェーン全体にどの程度広範囲に、そしてどれほど深く影響を及ぼすかを測ることはできませんでした。

例えば、 Heartbleed や Log4Shell のように、非常に多くのプロジェクトが依存するライブラリの根幹に関わる脆弱性は、サプライチェーン全体に甚大な影響を与えます。このような「伝播の影響度」を定量的に評価する統一的な指標が存在しなかったため、どの脆弱性から優先的に対応すべきかの判断が非常に困難でした。

ソフトウェアサプライチェーンの脆弱性評価を変える新アプローチ「VPSS」

このような従来の課題を克服するため、研究チームは脆弱性の「伝播」に着目した新しい評価アプローチを提案しました。その核心となるのが「コールグラフ分析」と、新指標「VPSS」です。

アプローチの核心:脆弱性の「伝播」をコールグラフレベルで追跡

このアプローチの最大の特徴は、単にパッケージの依存関係を見るのではなく、プログラムの実行時にどの関数がどの関数を呼び出すかという関係性(コールグラフ)を詳細に追跡する点にあります。

これにより、脆弱性が存在する関数が、依存関係の連鎖をたどって自社のアプリケーションから最終的に呼び出される可能性があるのかを正確に特定します。つまり、「使われていない脆弱性」を分析の初期段階で除外することができ、誤検知を劇的に減らすことが可能になります。

ただし、静的解析にも限界はあります。プログラムの実行時に初めて呼び出し先が決まるような動的な仕組み(Javaのリフレクションなど)が使われている場合、ごく稀に脆弱な関数への呼び出しパスを見逃してしまう可能性(偽陰性)はゼロではありません。それでも、このアプローチによって、従来の評価手法で問題となっていた膨大な数の誤検知(偽陽性)を劇的に削減できるメリットは非常に大きいと言えます。

VPSSとは?:影響の「広さ」と「深さ」を定量化する動的スコア

そして、この伝播分析の結果を基に算出されるのが、新しい評価指標「Vulnerability Propagation Scoring System (VPSS)」です。VPSSは、ある脆弱性がソフトウェアのエコシステム内で「どれだけ広く(Breadth)」「どれだけ深く(Depth)」影響を及ぼしているかを、0から10の範囲でスコア化します。

スコアが高いほど、その脆弱性がより多くのプロジェクトに、より深い依存関係を通じて影響を与えていることを意味します。また、VPSSは一度算出したら終わりではなく、エコシステムの変化(新しいバージョンのリリースやパッチの適用など)に応じて変動する「動的なスコア」である点も特徴です。

提案アプローチの全体像

この新しい評価フレームワークは、大きく4つのステップで構成されています。

  1. 依存関係グラフの構築 (Dependency Graph Construction): まず、対象となるエコシステム(例:Maven)の全プロジェクトとその依存関係を解析し、プロジェクト間のつながりをグラフ化します。
  2. 脆弱な関数の特定 (Vul Func Identification): 次に、脆弱性情報と修正パッチを基に、脆弱性の根本原因となっている具体的な関数(Vulnerable Functions)を特定します。
  3. 脆弱性の伝播分析 (Vulnerability Propagation Analysis): 脆弱な関数を起点として、依存関係グラフを逆にたどり、その関数を直接的または間接的に呼び出している全ての川下プロジェクトを洗い出します。この際、階層的な絞り込み(プルーニング)を行い、分析の効率を大幅に高めます。
  4. VPSSスコアの算出 (VPSS Calculation): 最後に、伝播分析で明らかになった影響の広がり(影響を受けるプロジェクト数など)と深さ(依存関係の階層の深さなど)を基に、VPSSスコアを算出します。

この一連の流れにより、個々の脆弱性がサプライチェーン全体に与える影響を、定量的かつ動的に評価することが可能になります。

図表1: アプローチの全体像

提案された脆弱性影響評価アプローチの全体像を示す図。依存関係グラフの構築、脆弱な関数の特定、脆弱性の伝播分析、VPSSスコアの算出という4つのステップが描かれている。

実証実験で明らかになったVPSSの有効性

研究チームは、このアプローチの有効性を検証するため、JavaのエコシステムであるMavenに存在する100個の実際の脆弱性を対象とした大規模な実証実験を行いました。

分析対象を97%以上削減する効率的なプルーニング

エコシステム全体のコールグラフを分析するのは計算コストが非常に高くなりますが、提案手法では階層的な絞り込み(プルーニング)によって、この問題を解決しています。

実験の結果、バージョンベース(v1)、インポートベース(v2)、そしてコールグラフベース(v3)の3段階のプルーニングを経ることで、分析の初期段階で存在した依存関係のうち、プロジェクト(P)単位で平均97.8%、プロジェクトのバージョン(PV)単位では実に平均99.2%が「影響なし」として除外されました。 これにより、膨大な数のコンポーネントが存在する現代のソフトウェアエコシステムにおいても、現実的な時間で詳細な影響分析を行う道が拓かれました。

図表2: プルーニング段階ごとの平均伝播統計

3つの棒グラフが並んでおり、左から「平均P(プロジェクト)」「平均PV(プロジェクトバージョン)」「最長および平均パス長」を示している。いずれのグラフも、プルーニングの段階(initial, v1, v2, v3)を経るごとに数値が大幅に減少していることを示している。

時間と共に変動するVPSSスコア:脆弱性のライフサイクルを追う

VPSSは、脆弱性の影響度が時間と共にどう変化するかを追跡できる動的な指標です。下の図表3は、影響が大きかった上位10件の脆弱性(CVE)について、公開日(t0)から30日間隔でVPSSスコアの変化を示したものです。

全体として、時間の経過と共にスコアが緩やかに減少していることがわかります。 これは、脆弱性が修正された新しいバージョンがリリースされ、川下のプロジェクトがそれに追随することで、エコシステム全体のリスクが低減していく様子を捉えたものです。

一方で、興味深いことに「CVE-2016-3086」では、公開直後に一時的にスコアが上昇する現象が見られました。 これは、川下のプロジェクトが依存関係を更新する際の遅延などが原因で、かえって脆弱なバージョンへの依存が拡大してしまうケースがあることを示唆しています。

図表3: 上位10件のCVEに関するVPSS時系列データ(30日ごと) 上位10件の脆弱性ID(CVE ID)を縦軸に、時間の経過(t0からt23)を横軸にとったヒートマップ。スコアが高いほど赤色に、低いほど緑色に色付けされており、全体的に時間の経過とともに緑色に変化していく傾向が見て取れる。

また、図表4は、実験対象となった100件すべての脆弱性について、VPSSスコアの分布が時間と共にどう変化したかを示しています。多くの脆弱性は比較的低いスコアに留まり、2年程度の期間で影響が安定または収束していく傾向が見て取れます。 このように、VPSSは個々の脆弱性だけでなく、エコシステム全体の脆弱性の動態をマクロな視点で理解するためにも役立ちます。

図表4: 100件のCVEにおけるVPSSスコアの分布(60日ごと) 時間の経過(t0からt22)ごとのVPSSスコアの分布を示す箱ひげ図。時間の経過と共に、箱(四分位範囲)とひげ(最小値・最大値)が全体的に下方にシフトし、分布のばらつきも小さくなっていく傾向が示されている。

まとめ:VPSSがもたらす、よりスマートな脆弱性管理

本記事で紹介した、脆弱性の伝播分析と新指標「VPSS」は、従来の脆弱性評価が抱えていた「誤検知の多さ」と「影響度の不透明さ」という課題を解決する強力なアプローチです。

実際に呼び出される可能性の高い脆弱性に絞り込み、その影響の広さと深さを客観的なスコアで示すことで、開発者やセキュリティ担当者は、無数のアラートの中から 「優先して対応すべき脆弱性」をより合理的に判断できるようになります。 VPSSは、より効率的で効果的な脆弱性管理の実現に大きく貢献する、非常に有望なアプローチと言えるでしょう。VPSSが、今後のソフトウェアサプライチェーンセキュリティにおける新たなスタンダードとなることが期待されます。


Webサービスや社内のセキュリティにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!

参考資料:

Author: vonxai編集部

Google Scholarで開発生産性やチーム開発に関する論文を読むことが趣味の中の人が、面白かった論文やレポートを記事として紹介しています。