Snykは、セキュリティ脆弱性の優先順位付けを簡略化する、一連の新機能のリリースを発表した。この中には、特定したイシューを評価してスコアを提供する、同社独自のアルゴリズムが含まれている。このアプローチでは、エクスプロイトの完成度(maturity)を考慮し、影響されたコードがアプリケーション実行を通じて到達可能かどうかを分析することが可能である。 Kubernetesのワークロードに関する脆弱性を特定する新機能も含まれている。
新リリースは、開発者向けの優先度付け機能としてバンドルされたもので、一般的な優先度付け方法の簡略化と改善を目的としてデザインされている。優先度採点システムはCVSSスコアや修正可能性、エクスプロイトの世代、到達可能性といったさまざまなファクタを処理し、1から1000までのスコアを生成する。このスコアは、セキュリティ脆弱性とアプリケーションリポジトリ内のライセンス問題の両方に基づいて計算される。
この分析の一部として行われるのがエクスプロイトの完成度評価で、脆弱性に対してエクスプロイトが存在するか、それがいかに簡単に活用可能か、といった点の判断に使用される。評価には、公開されたエクスプロイトの存在する"Mature"、理論上のエクスプロイトが存在する"Proof of Concept"、既知の公開されたエクスプロイトの存在する"No Known Exploit"という3つのレベルがある。エクスプロイトの完成度評価は、Snykの全プランで使用することができる。
SnykのプロダクトマーケティングディレクタであるDaniel Berman氏によると、
例えばJavaの脆弱性では、10パーセントにエクスプロイトが存在します。しかし、より詳細に分析すれば、これらエクスプロイトの36パーセントが"Mature"、すなわち現実に重大な危険性をもたらすものであることが分かります。したがってこれらは、優先度リストの最上位に置かなければなりません。
新たに導入した到達性の分析では、アプリケーションの実行中に脆弱なコードに到達するかどうかを判断できるようになる。分析の結果として、アプリケーションコードと特定のインタラクションをオープンソースの依存関係とマップすることで、コールグラフが出来上がる。このコールグラフがSnykの脆弱性データベースと関連付けられることで、アプリケーションを通じたデータフローが脆弱性のある関数に到達するかどうか判断されるのだ。脆弱性の到達可能性を判断する機能は、現時点ではJava(Maven)プロジェクトのみを対象として、すべてのSnykプランでベータ版として提供されている。
UI内では、オープン状態の脆弱性をフィルタし、ステータスによって並べ替えることができる。Snyk APIを経由することで、レポートの出力も可能だ。
Berman氏はこの新しい優先度採点システムについて、"標準では解読が難しく、誤解を招くようなスコアになる場合がある"といった、CVSSの共通的な問題に対処するものだ、と説明している。CVSS(Common Vulnerability Scoring System)は、脆弱性の重大性をスコアとして割り当てる標準的なアプローチである。基本的なメトリクスが対象にするのは重大性(severity)のみだが、緩和策の利用可能性や組織内における影響範囲を考慮に入れて、時間的および環境的な評価を行うことが可能である。
時間的ないし環境的分析を除外して、基本的なCVSSメトリクスのみに過度に依存することは、結果的に誤解を招くようなスコアを生み出す可能性がある。NISTの実装ガイドにあるように、"CVSSの基本的なメトリクスのみに依存して、脆弱性の時間的な面や環境特有の状況を考慮しない場合、脆弱性の重要度が不適切に測定される可能性がある"のだ。
今回のリリースには新たにKubernetes分析が導入されており、実行中のワークロードをインポートしてテストし、イメージやコンフィギュレーション内にある脆弱性を特定することができる。一度インポートしたワークロードは継続的に監視され、新たな脆弱性が特定される。この機能はSnykの有償プランで提供される。
これらの新しい優先度付け機能は、Snykの全プラン(Free、Standard、Pro、Enterprise)で使用することができる。ただし、レポートと優先度スコア機能のAPIについては、Standard以上のプランのみの提供となる。