yamory を使って脆弱性管理をしてみよう! -導入編-
ソフトウェアを開発されている方は、オープンソース・ソフトウェア(OSS)を利用して開発することが多いと思います。
OSS の導入時には最新のバージョンのものを利用するため脆弱性が含まれていなかったとしても、時間が経つにつれ脆弱性が新たに公開され、セキュリティリスクが高まることがあります。
自分たちが使っている全てのライブラリとそのバージョンを常に把握して、新たに公開された脆弱性がないかどうかを人手で監視することは非常に労力のかかる作業でしょう。
開発チームの規模が大きく、複数のプロジェクトを管理する場合にはより多くの工数がかかることが予想されます。
脆弱性管理ツール「yamory」 では、これらの作業を自動化し、自分たちに影響がある脆弱性情報だけを通知することができます。
また、脆弱性の対応優先度を自動で分類し、脆弱性への対策を提示することもできるので調査工数を削減することもできます。
本記事では、yamory の基本的な機能である脆弱性の検出から、脆弱性情報の確認、ダッシュボードや通知機能の紹介をします。
アカウントを作成しよう
早速 yamory のアカウントを作成してみましょう。
yamory のお問い合わせページより、無料トライアルをお申し込みください。
メールアドレスとパスワードを入力して登録を行いますと、記入したメールアドレス宛てに登録を完了するためのメールが届きます。
そちらより登録を完了してください。
また、初めてログインをする際は組織名を登録する必要があります。
任意の組織名を登録してください。
プロジェクトをスキャンしてみよう
自分たちの開発・運用しているソフトウェアに脆弱性があるかどうかを把握するためには、まずどんなソフトウェアが使われているのか把握する必要があります。
利用しているソフトウェアの名称とバージョンを自動で特定するために、まずスキャンを行いましょう。
yamory アプリケーション左側メニューから「スキャン」を選択し、「スキャン」ページの「新しいプロジェクトをスキャン」よりスキャンを行うことができます。
スキャンを行う方法としては「Github リポジトリスキャン」と「コマンドラインスキャン」の 2 つの方法があります。
Github リポジトリスキャンでは、Github 連携を使うことで GitHub で管理しているリポジトリ内のマニフェストファイルをスキャンし、利用しているソフトウェアの名称とバージョンを自動で特定します。
コマンドラインスキャンでは、コマンドラインに yamory より発行されたコマンドを入力することで、利用しているソフトウェアの名称とバージョンを自動で特定します。
サポート言語・スキャン対象に関する詳しい情報はこちらでご確認ください。
今回は、コマンドラインで Java のソフトウェア、JavaScript のソフトウェアをスキャンしてみました。
結果は以下のようになります。
スキャンしたプロジェクトをクリックすることで、そのソフトウェアで使われているソフトウェアの名称とバージョンを確認することができます。
ソフトウェアの詳細画面を見ると、org.apache.struts:struts2-core:2.5.25 の下にツリー状に他のソフトウェアが列挙されていることが確認できます。
これは、org.apache.struts:struts2-core:2.5.25 が commons-fileupload:commons-fileupload:1.4 という外部のソフトウェアを利用していることを表しています。
このように yamory では直接依存のソフトウェアだけでなく、間接依存のソフトウェアまでスキャンすることができます。
(直接依存、間接依存といった依存関係と脆弱性に関してはこちらの記事を参照ください。)
また、org.apache.struts:struts2-core:2.5.25 の横に赤く書かれている「I 1」はオートトリアージ機能によってリスクが高い(Immediate)と判断された脆弱性の数を示しています。
スキャンを行うことで利用しているソフトウェアの特定と、この後の脆弱性の検出を行うことができます。
脆弱性を確認してみよう
アプリケーション左側メニューの「脆弱性」ページよりスキャンによって検出されたソフトウェアに含まれている脆弱性を確認することができます。
一番左の列の「トリアージレベル」では、脆弱性の対応優先度を自動で分類するオートトリアージ機能の結果を示しています。
オートトリアージ機能では CVSS の値、攻撃コード(PoC)の有無、公開サービスかどうか、の 3 つの観点を利用して悪用されるリスク評価を自動で行い、一番リスクの高い Immediate から Delayed、Minor、None の 4 つのカテゴリーに分類します。
CVSS の値だけで優先順位付けを行ってしまうと本当に悪用されるリスクが高いもの、比較的リスクが低いものが同様の優先順位で扱われてしまい、結果的にリスクが高いものへの対応が遅れてしまうことがあります。
攻撃コード(PoC)の有無といった時間の経過で変化する要素や、公開サービスかどうかといった自分たちの環境によって異なる要素を含めて評価することで、外的環境・内的環境を考慮した優先順位づけを行うことができます。
また、右上のボタンの「現在の検索条件で CSV 出力する」を押すと、脆弱性一覧の情報を CSV 形式で出力することができます。
CSV 形式で出力することで、脆弱性情報を社内の報告用のフォーマットに変換するといった活用も可能です。
各脆弱性をクリックするとより詳細な情報を確認することができます。
このページでは、脆弱性によるリスクの概要と対応方法が表示されます。
リスクの概要では「Remote Code Exection」といった脆弱性の種類や PoC があるかどうかなどを確認できます。
より詳細な脆弱性の情報を確認したい場合には「脆弱性情報を詳しく見る」ボタンをクリックしてください。
このページでは、今回検出された脆弱性の概要情報や CVSS の値、PoC がある場合にはその PoC の URL、関連する URL の情報などを確認することができます。
PoC 情報、関連情報を利用することで、攻撃がどのようなステップで行われる可能性があるのか、ペイロードはどのようなものがあるのか、を確認することが可能です。より詳細な脆弱性の調査なども行うことができます。
たとえば、「利用しているソフトウェアに脆弱性が検出されたがすぐに対応できない」という場合にも、PoC 情報や関連情報を活用して本当に自分たちのソフトウェアの利用方法、環境下においても影響が大きく出るのか、アップデート以外の軽減策はないのか、などの調査に役立てることができます。
ダッシュボードで脆弱性の推移を確認しよう
アプリケーション左側メニューの「ダッシュボード」ページより、現在の脆弱性の数とこれまでの脆弱性の数の推移を見ることができます。
推移のグラフを確認することで、発見された脆弱性が現場でしっかりと対応されているのかを確認することができます。
冒頭でもお話しましたが、OSS の導入時には脆弱性がなかったとしても、時間が経つにつれ脆弱性が新たに公開され、セキュリティリスクが高まるケースがあります。
そのため、導入時から何も対策を取らなかった場合には脆弱性の数が増加していき、攻撃者によって脆弱性を突いた悪用が行われるリスクが高まってしまいます。
脆弱性の数を 0 にすることが理想ではありますが、対応するコストを考慮すると難しい場合がほとんどだと思います。
組織として求めるセキュリティの基準を設定して、それに合わせて対応していくことが重要です。
自分たちが実現できるセキュリティの基準はどれくらいか検討した上で、設定した基準が維持できているのかを日々確認していきましょう。
メールや Slack でリスクの高い脆弱性の通知を受け取ろう
リスクの高い脆弱性が発見された場合は早急に対応を行う必要があります。
リスクの高い(Immediate / Delayed に分類された)脆弱性が新たに発見された場合にはメールでの通知を受け取ることができます。
加えて「アプリ・通知設定」ページより Slack との連携を行うことで Slack でも通知を受け取ることができます。
メールや Slack で発生した脆弱性の情報を受け取ることで、わざわざ yamory にログインせずに必要な情報を得ることができます。
より詳細な脆弱性情報の確認や、調査が必要になった時にのみログインして対応することができるので、脆弱性を確認する手間も低く抑えることができます。
また、1 週間のレポートという形で、現状の脆弱性の数、先週と比較して脆弱性の数がどれくらい変化したのか、どの脆弱性がまだ残っているのかをサマリーにした週間報告も通知されます。
週間報告が簡易的なダッシュボードの役割となっているので、組織として設定したセキュリティの基準を満たせているかどうかをメールでも確認することができます。
さいごに
今回は以下の yamory の基本的な機能の紹介をしました。
・スキャンによる利用しているソフトウェアの特定と脆弱性の検出
・脆弱性情報の確認方法と活用方法
・現状と過去の脆弱性数の推移を確認するダッシュボード機能
・メール・Slack による新たな脆弱性検出と週間報告の通知機能
まずは自分たちの使っているソフトウェアを把握して、脆弱性がどれくらいあるのかの現状把握を行うことが脆弱性管理の第一歩だと思います。
今回紹介した機能以外に、セキュリティチーム機能を利用することで以下の機能も活用することができます。
・チームを横断した脆弱性の状況把握
・利用しているソフトウェアの一覧閲覧
・脆弱性データベースの利用
・ソフトウェアライセンスの確認(α 版)
14 日間のトライアル で、今回紹介した機能以外もお試しすることができますので興味がある方はぜひ登録してみてください。
また、企業としてチームに導入してみたいがどうすればいいのかお悩みの方、詳しい資料請求や yamory について話を聞いてみたい方は お問い合わせページ よりお気軽にご連絡ください。