LeanSeeksが標準対応していないスキャナのデータでトリアージを実行!

こんにちは。今回はLeanSeeksを使ってみたいものの、自社の脆弱性スキャナとの連携ができるかがわからずに躊躇されている方むけのブログとなります。

現在LeanSeeksはPrisma CloudとVulsの出力するJSONを用いてトリアージを行うことができますが、それ以外のスキャナが出力するデータを使いたいというケースも非常に多くいただきます。

前回のブログで紹介したようにSBOMを用いてトリアージを行うアプローチもありますが、同ブログ内で紹介したOSVなどフリーのサービスを用いた場合、対象のソフトウェア構成によっては網羅性が十分ではないケースもあり得ます。
(例えばOSVの場合、非常に豊富なOSSの脆弱性データが提供されていますが、OSVはあくまでもOSSを対象としており、有償ソフトウェアの脆弱性情報は提供対象外です)
こういったケースに該当する場合は、既存のスキャナの出力する脆弱性データをLeanSeeksのフォーマットに変換することでトリアージを行うアプローチが有効です。

LeanSeeksのフォーマットは非常にシンプルで、配列の中に脆弱性情報のオブジェクトをフラットに並べていく形式です。

[
 {
  "cveId": "",
  "packageName": "",
  "packageVersion": "",
  "severity": "",
  "cvssScore": "",
  "title": "",
  "description": "",
  "link": "",
  "AV": "",
  "AC": "",
  "C": "",
  "I": "",
  "A": "",
  "hasFix": "",
  "exploit": "",
  "publicExploits": "",
  "published": "",
  "updated": "",
  "type": ""
 }
]
図1: LeanSeeksフォーマットのJSON構造

トリアージを行うためには最低限上記の”cveId”のみを記入するだけでも可能です。これは、投入されたCVE-IDをベースにLeanSeeksがバックエンドで様ざまなインテリジェンスと連携し、データを保管することができるためです。ただし、何かしらの理由でLeanSeeksがバックエンドで情報を取得できないケースがあった場合は、CVE-IDだけしかデータが無ければトリアージを行うことができません。こういったケースでも上記の項目を可能な限り埋めることで、トリアージを実施することが可能になります。

LeanSeeksがバックエンドのインテリジェンスから情報を取得できないケースの例として挙げられるのが、比較的新しく、まだCVE IDが割り振られていないものの、GHASなどのIDが割り振られており、エクスプロイトの状態などもわかっているケースなどがあります。
こういったケースでは、cveIdの部分 以外にも可能な限り多くの項目に情報を代入いただくことで、LeanSeeks内で独自のロジックで計算を行える情報がそろえば、トリアージ対象とすることができます。
なお、実際の脆弱性対処においてはどのパッケージに脆弱性があるのかが重要な要素となりますので、上記理由にかかわらずパッケージの名前やバージョンは可能な限り代入しておくことが推奨されます。

上記に記載の各データについては以下の概要のとおりです。

  • "cveId": (入力必須) CVE ID
  • "packageName": パッケージの名前
  • "packageVersion": パッケージのバージョン
  • "severity": CVSSのSeverity
  • "cvssScore": CVSSのスコア
  • "title": CVEのタイトル
  • "description": CVEの説明
  • "link":情報のソースへのURL
  • "AV": Attack Vector(攻撃区分)
  • "AC": Attack Complexity(攻撃条件の複雑さ)
  • "C": Confidentiality Impact(機密性への影響)
  • "I": Integrity Impact(完全性への影響)
  • "A": Availability Impact(可用性への影響)
  • "hasFix": 修正パッチ適用の有無
  • "exploit": Exploitの有無の情報
  • "publicExploits": 公開ExploitのURL
  • "published": 公開日時
  • "updated":更新日時

世の中には非常に多くの脆弱性スキャナが存在し、無料で利用できる簡易的なものから有償の専門的なツールまでいろいろありますが、ほとんどのツールではスキャン結果をJSON形式やCSVなどで出力することが可能で、APIなどで取得することも可能です。
ただし、CSVの配列やJSONの構造はツールごとに様々なので、それぞれの形式にあわせてどのようにデータをパースするかを検討する必要があります。

とはいえ、一度パースのロジックが明確になれば、その後はスクリプトなどを用いて変換を自動がすることができるようになります。

スクリプトにすることで、CIのビルドパイプラインでスクリプトを読み込むみ、従来のセキュリティ判断基準をCVSSベースではなくLeanSeeks(SSVCベース)に置き換えたり、リリース済みのソフトウェアをトリアージ対象とする場合でも、スキャナなどから最新の脆弱性情報を取得しなおしながら日次でトリアージを行うような自動化も可能です。

図2: 既存のパイプラインにトリアージを組み込む例

こういったスクリプトが必要になるケースでは、LeanSeeks導入時に弊社側にてそのまま利用可能なサンプルスクリプトを提供させていただいております。
ユーザー様の需要の多いスキャナに関しては将来的にはLeanSeeks側に直接取り込むことを検討しますが、こういった変換スクリプトについてもご要望が多いものは今後GitHubなどで公開していければと思います。

次回以降のブログで、実際のサンプルスクリプトの解説の機会も検討していますので、ぜひご期待ください。

お問い合わせ・資料請求

株式会社マクニカ  LeanSeeks担当

月~金 8:45~17:30