Skip to main content

Snykの新しいPriority Scoreで、優先順位付けを大幅に強化

著者
Headshot of Dan Mckean

Dan Mckean

Prioritisation header feature

2020年8月4日

0 分で読めます

Snykの新しいPriority Scoreは、オープンソースを安全に利用するうえでの大きな課題の一つ、つまりどの脆弱性から対処すべきかを判断する作業を大幅に簡素化します。

ほとんどの組織にとって、すべての脆弱性を修正するのは現実的ではありません。変更にはそれぞれコストがかかり、ソフトウェアの古さや複雑さに応じて、そのコストは増大することがよくあります。平均的なリポジトリでは、Snykに初めてインポートされた時点で35件を超える脆弱性があり、コンテナプロジェクトでは平均して130件を超えています。

スコアの仕組み

Priority Scoreのアルゴリズムは、さまざまなデータポイント(要素)を処理し、0~1000のスコアを算出します。当初は0~100としていましたが、企業が優先順位を付けるのはプロジェクト内だけでなく、_all_のプロジェクトにまたがることにすぐ気づきました。重大度やCVSSだけを使った場合に起こる「すべてが最優先になる」という問題を避けるには、きめ細かなスコアが重要です。各要素の重み付けを算出し、スコアが幅広く分布しつつ、最も大きなリスクをもたらすものに最高スコアが付くようにしています。

各問題のスコアは、Projectsビューで確認できます。すべての問題がPriority Score順に並ぶため、最も緊急性の高い問題が先頭に表示されます。スコアの範囲で問題を絞り込むこともできます。

重大度が高く到達可能なデシリアライズの脆弱性について、修正方法の詳細とフィルタリングオプションを表示するセキュリティダッシュボード。

有料プランをご利用のお客様は、ReportsセクションのIssuesタブでもスコアを確認できます。Priority Scoreは並べ替え可能な独立した列として表示されます。テーブルはデフォルトでスコア順に並んでいるため、すぐに優先して取り組むべき問題を判断できます。スコアで問題を絞り込むこともできます。

スコア順に脆弱性が表示されたSnyk Reportsの問題ダッシュボード。スコア899、786、756の重大度が高い問題が強調表示されています。

有料プランをご利用のお客様は、各種の問題関連API呼び出しからもスコアを確認できます。レスポンスにスコアが含まれるようになり、スコアによる絞り込みにも対応しました。

関連するAPI呼び出しについて詳しくはこちらをご覧ください。

スコアの算出方法

アルゴリズムの最初のバージョンでは、問題ごとに最大10個の要素を処理します。企業内のすべてのプロジェクトに存在する数千件もの脆弱性について、手作業(スプレッドシートを使う場合も含めて)で評価するのは大変な作業です。今後Snykは、セキュリティリスクの低減に最も効果的な時間の使い方をより適切に判断できるよう、さらに多くの要素を追加する予定です。

以下は、現在含まれている要素の一部です。これがすべてではありません。

CVSSは、脆弱性のトリアージの多くで基盤となる指標です。幅広い要素を考慮していますが、特定のプロジェクトにおける個々の脆弱性の状況までは考慮しません。また、Snykが検出する脆弱性の23%超でCVSSが8.0を超えているため、CVSSだけで優先順位を付けるのは困難です。一方、Priority Scoreではより適切にスコアが分布し、1000点中800点を超える脆弱性は5%未満です。それでもCVSSの価値は明らかであり、Snykのスコア算出アルゴリズムでは大きな重みが与えられています。

次に、重大度です。CVSSと密接に関連していますが、エコシステムによってはCVSSを利用できない場合があり、場合によっては正確でなくなっていることもあります。SnykのSecurity Policiesでは、サービスがビジネスクリティカルかどうかなど、Snykでも判定できない情報に基づいて問題の重大度を変更できます。重大度を変更することで、その情報を優先順位付けに反映し、スコアを下げることができます。

当然ながら、SnykのExploit Maturityも要素に含まれます。業界をリードするSnykのセキュリティチームは、手動と自動の手法を用いて、どの脆弱性がどの程度悪用可能かを追跡しています。この情報は、脆弱性がもたらすリスクの判定に重要な役割を果たします。

Snykに新たに加わった機能として、Priority ScoreにReachable Vulnerabilitiesの情報も含めています。プロジェクト内で呼び出されるコードパスを調べることで、コード内で実際に到達可能な脆弱性をユーザーが特定できるよう支援します。

修正プログラムが提供されているかどうかで、脆弱性のリスク自体は変わりませんが、修正にかかるコストは大きく変わります。安全なバージョンへのアップグレードや、すぐに使えるSnykパッチがない場合、脆弱性を軽減するには自分でパッチを適用するか、ソフトウェア内で別のパッケージを使うしかありません。どちらも簡単でも迅速でもなく、修正できない脆弱性は避けられないリスクとして扱われることがよくあります。

そして時間です。影響を測るのが最も難しい要素の一つです。データを詳しく分析する前は、脆弱性は公開直後に最も大きなリスクをもたらす一方、時間の経過とともに「人気」が高まり、リスクも増す可能性があると仮説を立てていました。実際には前者の影響がはるかに大きいことが分かり、そのため時間もスコアの要素に含めています。

このほかにも、実際に使用されているコードパス内の脆弱性を特定する静的コード解析など、現在取り組んでいるアルゴリズム要素がいくつかあります。

利用を開始する

SnykのPriority Scoreは、すべてのSnykユーザーにご利用いただけます。利用を開始するには、任意のプロジェクトで脆弱性を確認するか、ReportingセクションのIssuesタブを開いて、どの問題から対処すべきかをご確認ください。

詳しくは Snyk Knowledge Centerをご覧ください。