IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2024-170106コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法
<>
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図1
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図2
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図3
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図4
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図5
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図6
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図7
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図8
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図9
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図10
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図11
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図12
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図13
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図14
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図15
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図16
  • 特開-コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024170106
(43)【公開日】2024-12-06
(54)【発明の名称】コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法
(51)【国際特許分類】
   G06F 21/57 20130101AFI20241129BHJP
【FI】
G06F21/57 370
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2023087085
(22)【出願日】2023-05-26
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】刑部 雅江
(72)【発明者】
【氏名】水越 裕也
(72)【発明者】
【氏名】相樂 恭宏
(72)【発明者】
【氏名】井出 貴也
(57)【要約】
【課題】システム上のコンテナ又はレジストリ(リポジトリ)のコンテナイメージに脆弱性が見つかった場合において、コンテナ又はコンテナイメージの脆弱性を有するレイヤの作成由来に応じた適切な脆弱性修正方法を提案することができるコンテナ脆弱性修正システム及びコンテナ脆弱性修正方法を提供する。
【解決手段】コンテナ脆弱性修正システムは、脆弱性特定情報に基づいて、脆弱性レイヤを含むコンテナを作成するためのコンテナイメージ、又は、脆弱性レイヤを含むコンテナイメージを作成するためのコンテナ構築スクリプトを取得する。コンテナ脆弱性修正システムは、コンテナ構築スクリプトを分析することにより、脆弱性レイヤの作成方法を特定し、特定した脆弱性レイヤの作成方法に応じた脆弱性修正方法の選択肢を提案する。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンテナ又はコンテナイメージに関する情報を取得する情報処理装置を含むコンテナ脆弱性修正システムであって、
前記情報処理装置は、
脆弱性を有するコンテナ又はコンテナイメージ、及び、脆弱性を有するレイヤである脆弱性レイヤを示す脆弱性特定情報を取得し、
前記脆弱性特定情報に基づいて、前記脆弱性レイヤを含むコンテナを作成するためのコンテナイメージ、又は、前記脆弱性レイヤを含むコンテナイメージを作成するためのコンテナ構築スクリプトを取得し、前記コンテナ構築スクリプトを分析することにより、前記脆弱性レイヤの作成方法を特定し、特定した前記脆弱性レイヤの作成方法に応じた脆弱性修正方法の選択肢を提案する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項2】
請求項1に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
提案した前記選択肢の前記脆弱性修正方法によって脆弱性を修正し、テストする、
ように構成された、
コンテナ脆弱性修正システム。
【請求項3】
請求項2に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
前記コンテナ構築スクリプトを分析することにより、前記脆弱性レイヤがベースイメージ由来であるか、それ以外かを判定し、判定結果に応じた前記脆弱性修正方法の選択肢を提案する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項4】
請求項3に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
前記脆弱性レイヤが前記ベースイメージ由来である場合、前記ベースイメージのレジストリがパブリックレジストリであるか否かを判定し、前記ベースイメージのレジストリが前記パブリックレジストリである場合、分析を終了し、
前記ベースイメージのレジストリが前記パブリックレジストリではない場合、且つ、前記コンテナ構築スクリプトが取得可能である場合、当該取得可能な前記コンテナ構築スクリプトを取得し、取得した前記コンテナ構築スクリプトを分析する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項5】
請求項4に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
前記脆弱性レイヤが前記ベースイメージ由来ではない場合、前記脆弱性レイヤは、あとからインストールされたライブラリ由来であると特定する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項6】
請求項1に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
前記脆弱性特定情報に基づいて、ライブラリに原因があるか否かを判定し、前記ライブラリに原因がない場合、前記脆弱性レイヤが前記ベースイメージ由来である否かを判定し、
前記脆弱性レイヤが前記ベースイメージ由来でない場合、脆弱性を持つ設定ファイルを特定し、特定した前記設定ファイルを分析する、
ように構成された
コンテナ脆弱性修正システム。
【請求項7】
請求項2に記載のコンテナ脆弱性修正システムであって、
前記情報処理装置は、
前記脆弱性修正方法の選択肢の中から、テストの結果が、脆弱性が未解決であるとの結果であり、且つ、将来的に脆弱性が解決できる理想的な脆弱性修正方法を登録し、
テストの結果が、脆弱性を解決したとの結果である前記脆弱性修正方法を暫定的な措置として実行し、
その後、前記理想的な脆弱性修正方法が実行可能になったことを検知した場合に、前記理想的な脆弱性修正方法を実行する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項8】
請求項2に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
前記選択肢の前記脆弱性修正方法の優先順位を予め設定し、
前記優先順位に従った順番で、前記脆弱性修正方法によって脆弱性を修正し、テストする、
ように構成された、
コンテナ脆弱性修正システム。
【請求項9】
請求項2に記載のコンテナ脆弱性修正システムにおいて、
画像を表示可能な表示装置を備え、
前記情報処理装置は、
前記脆弱性修正方法のテスト結果を示す情報と、対応する前記脆弱性修正方法を適用するために操作されるボタンと、を含むGUI画面を前記表示装置に表示する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項10】
請求項7に記載のコンテナ脆弱性修正システムにおいて、
画像を表示可能な表示装置を備え、
前記情報処理装置は、
前記脆弱性修正方法のテスト結果を示す情報と、対応する前記脆弱性修正方法を適用するために操作されるボタンと、対応する前記脆弱性修正方法を前記理想的な脆弱性修正方法として登録するために操作されるボタンと、を含むGUI画面を前記表示装置に表示する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項11】
請求項1に記載のコンテナ脆弱性修正システムにおいて、
前記情報処理装置は、
コンテナの識別情報とコンテナイメージの識別情報とが対応付けられた情報に基づいて、前記脆弱性特定情報に対応するコンテナイメージを特定し、
コンテナイメージとコンテナ構築スクリプトのパスとが対応付けられた情報に基づいて、特定した前記コンテナイメージに対応するコンテナ構築スクリプトのパスを特定し、
特定した前記コンテナ構築スクリプトのパスを用いて、前記コンテナ構築スクリプトを取得する、
ように構成された、
コンテナ脆弱性修正システム。
【請求項12】
コンテナ又はコンテナイメージに関する情報を取得する情報処理装置を用いたコンテナ脆弱性修正方法であって、
前記情報処理装置によって、
脆弱性を有するコンテナ又はコンテナイメージ、及び、脆弱性を有するレイヤである脆弱性レイヤを示す脆弱性特定情報を取得し、
前記脆弱性特定情報に基づいて、前記脆弱性レイヤを含むコンテナを作成するためのコンテナイメージ、又は、前記脆弱性レイヤを含むコンテナイメージを作成するためのコンテナ構築スクリプトを取得し、前記コンテナ構築スクリプトを分析することにより、前記脆弱性レイヤの作成方法を特定し、特定した前記脆弱性レイヤの作成方法に応じた脆弱性修正方法の選択肢を提案する、
コンテナ脆弱性修正方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンテナ脆弱性修正システム及びコンテナ脆弱性修正方法に関する。
【背景技術】
【0002】
システムのセキュリティリスクは、年々上昇している。安全及び安心なシステムを提供するためには、これらの脆弱性への迅速対応が必須である。特許文献1は、コンピュータの脆弱性を解決する自動化されたシステムを開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2005-532606号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
システム上のコンテナ又はレジストリ(リポジトリ)のコンテナイメージに脆弱性が見つかった場合において、レイヤがベースイメージ由来のものであるか、後から追加したライブラリ、バイナリ、構成ファイルなどであるかを判別することは難しい。従って、コンテナ又はレジストリ(リポジトリ)のコンテナイメージに脆弱性が見つかった場合において、コンテナ又はコンテナイメージの脆弱性を有するレイヤの作成由来(作成方法)に応じた適切な脆弱性修正方法を提案することは難しかった。
【0005】
本発明は上記課題を解決するためになされた。即ち、本発明の目的の一つは、システム上のコンテナ又はレジストリ(リポジトリ)のコンテナイメージに脆弱性が見つかった場合において、コンテナ又はコンテナイメージの脆弱性を有するレイヤの作成由来に応じた適切な脆弱性修正方法を提案することができるコンテナ脆弱性修正システム及びコンテナ脆弱性修正方法を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明のコンテナ脆弱性修正システムは、コンテナ又はコンテナイメージに関する情報を取得する情報処理装置を含むコンテナ脆弱性修正システムであって、前記情報処理装置は、脆弱性を有するコンテナ又はコンテナイメージ、及び、脆弱性を有するレイヤである脆弱性レイヤを示す脆弱性特定情報を取得し、前記脆弱性特定情報に基づいて、前記脆弱性レイヤを含むコンテナを作成するためのコンテナイメージ、又は、前記脆弱性レイヤを含むコンテナイメージを作成するためのコンテナ構築スクリプトを取得し、前記コンテナ構築スクリプトを分析することにより、前記脆弱性レイヤの作成方法を特定し、特定した前記脆弱性レイヤの作成方法に応じた脆弱性修正方法の選択肢を提案する、ように構成される。
【0007】
本発明のコンテナ脆弱性修正方法は、コンテナ又はコンテナイメージに関する情報を取得する情報処理装置を用いたコンテナ脆弱性修正方法であって、前記情報処理装置によって、脆弱性を有するコンテナ又はコンテナイメージ、及び、脆弱性を有するレイヤである脆弱性レイヤを示す脆弱性特定情報を取得し、前記脆弱性特定情報に基づいて、前記脆弱性レイヤを含むコンテナを作成するためのコンテナイメージ、又は、前記脆弱性レイヤを含むコンテナイメージを作成するためのコンテナ構築スクリプトを取得し、前記コンテナ構築スクリプトを分析することにより、前記脆弱性レイヤの作成方法を特定し、特定した前記脆弱性レイヤの作成方法に応じた脆弱性修正方法の選択肢を提案する。
【発明の効果】
【0008】
本発明によれば、システム上のコンテナ又はレジストリ(リポジトリ)のコンテナイメージに脆弱性が見つかった場合において、コンテナ又はコンテナイメージの脆弱性を有するレイヤの作成由来に応じた適切な脆弱性修正方法を提案することができる。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載された何れかの効果であってもよい。
【図面の簡単な説明】
【0009】
図1図1は本発明の第1実施形態に係るコンテナ脆弱性自動修正システムの概要を説明するための図である。
図2図2は本発明の第1実施形態に係るコンテナ脆弱性自動修正システムを含むシステムの構成の一例を示すブロック図である。
図3図3図2に示す各コンポーネントが動作する計算機の構成の一例を示すブロック図である。
図4図4はユーザが利用する端末のメモリ又は記憶装置及びコンテナ脆弱性自動修正システムメモリ又は記憶装置に格納されたプログラム及びデータの一例を示すブロック図である。
図5図5はコンテナ-コンテナイメージ対応管理情報を説明するための図である。
図6図6はコンテナイメージ-コンテナ構築スクリプト対応管理情報を説明するための図である。
図7図7は脆弱性修正選択肢情報を説明するための図である。
図8図8は脆弱性を有するレイヤの作成方法を特定することが難しいことを説明するための図である。
図9図9は脆弱性修正選択肢抽出部が実行する処理フローを示すフローチャートである。
図10図10は脆弱性修正結果提示部が表示する脆弱性修正結果画面の例を示す。
図11図11は脆弱性修正選択肢抽出部が実行する処理フローを示すフローチャートである。
図12図12は脆弱性修正選択肢抽出部が実行する処理フローを示すフローチャートである。
図13図13は本発明の第2実施形態に係るコンテナ脆弱性自動修正システムの概要を説明するための図である。
図14図14はユーザが利用する端末のメモリ又は記憶装置、コンテナ脆弱性自動修正システムのメモリ又は記憶装置に格納されたプログラム及びデータの一例を示すブロック図である
図15図15は暫定措置情報の一例を説明するための図である。
図16図16は脆弱性修正結果提示部が表示する脆弱性修正結果画面の例を示す。
図17図17はコンテナ脆弱性自動修正システムの理想措置再実施部が実行する処理フローを示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の各実施形態について図面を参照しながら説明する。なお、実施形態の全図において、同一又は対応する部分には同一の符号を付す場合がある。
【0011】
以下の説明では、「レコード」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されてもよい。識別情報について説明する際、「ID」、「名前」、「名称」等の表現を用いるが、これらについてはお互いに置換が可能である。以下の説明では、プログラム又は機能ブロックを主語として処理を説明する場合があるが、処理の主語が、プログラム又は機能ブロックに代えて、CPU又は装置とされてもよい。
【0012】
<<第1実施形態>>
<概要>
本発明の第1実施形態に係るコンテナ脆弱性自動修正システム100について説明する。図1は本発明の第1実施形態に係るコンテナ脆弱性自動修正システム100の概要を説明するための図である。
【0013】
コンテナ脆弱性自動修正システム100は、脆弱性チェックツール200により検出された脆弱性のあるコンテナ及び/又はコンテナイメージの脆弱性特定情報210を取得する。
【0014】
脆弱性チェックツール200は、監視対象システム300に配備されたコンテナ及び/又はコンテナイメージのコンテナイメージレジストリ/リポジトリ400に格納されたコンテナイメージをスキャンし、脆弱性のあるコンテナ及び/又はコンテナイメージを特定し、特定した脆弱性のあるコンテナ及び/又はコンテナイメージを示す脆弱性特定情報210をコンテナ脆弱性自動修正システム100に送信する。脆弱性チェックツール200には、公知の脆弱性診断ツール(例えば、「Trivy」、「Vuls」など)を適用することができる。
【0015】
図1に示す脆弱性特定情報210の一例は、コンテナID/名前を示す情報と、レイヤIDと、脆弱性内容とを含む。コンテナID/名前を示す情報は、コンテナの識別情報を含む。レイヤIDは、脆弱性のあるレイヤのIDを含む。脆弱性内容は、脆弱性の内容を示す情報を含む。
【0016】
コンテナ脆弱性自動修正システム100は、脆弱性検出通知受付部110と、脆弱性修正選択肢抽出部120と、脆弱性修正部130と、テスト部140と、脆弱性修正結果提示部150と、脆弱性修正結果適用部160と、を含む。コンテナ脆弱性自動修正システム100は、便宜上、「コンテナ脆弱性修正システム」とも称呼される場合がある。
【0017】
コンテナ脆弱性自動修正システム100は、コンテナデプロイ管理システム500、開発管理システム600及びコード管理システム700のそれぞれとの間で、情報を送受信可能に接続されている。
【0018】
コンテナデプロイ管理システム500は、コンテナ-コンテナイメージ対応管理情報510を有している。
【0019】
開発管理システム600は、コンテナイメージ-コンテナ構築スクリプト対応管理情報610を有している。
【0020】
コード管理システム700は、コンテナ構築スクリプト710及び設定ファイル720を有している。
【0021】
詳細は後述するが、コンテナ脆弱性自動修正システム100は、脆弱性チェックツール200から脆弱性特定情報210を取得することにより、脆弱性検出通知を受け付けると、コンテナイメージを作成したコンテナ構築スクリプト710を特定し、取得する。コンテナ構築スクリプト710は、例えば、Dockerfile(ドッカーファイル)である。
【0022】
コンテナ脆弱性自動修正システム100は、コンテナ構築スクリプト710に基づいて、脆弱性を持つライブラリのインストール経路を解析したりする。コンテナ脆弱性自動修正システム100は、ベースイメージのレイヤIDの比較によるベースレイヤとオリジナルレイヤとの境界の特定を行う。コンテナ脆弱性自動修正システム100は、ベースイメージがプライベートレジストリ/リポジトリ420から取得されたものである場合、上記操作を繰り返すことで脆弱性の根本原因を修正できる。更に、コンテナ脆弱性自動修正システム100は、脆弱性を持つライブラリをインストールしたコマンド特定によりアップデートすべきパッケージを特定できる。
【0023】
<構成>
図2は本発明の第1実施形態に係るコンテナ脆弱性自動修正システム100を含むシステムの構成の一例を示すブロック図である。図2に示すように、システムは、コンテナ脆弱性自動修正システム100と、脆弱性チェックツール200と、監視対象システム300と、コンテナイメージレジストリ/リポジトリ400と、コンテナデプロイ管理システム500と、開発管理システム600と、コード管理システム700と、パッケージ管理サーバ800と、端末TR1と、を含む。これらは、ネットワークNW1を介して、互いに情報を送受信可能に接続されている。パッケージ管理サーバ800は、ライブラリを有している。
【0024】
(計算機の説明)
図3図2に示す各コンポーネントが動作する計算機3000の構成の一例を示すブロック図である。計算機3000は、プロセッサであるCPU(Central Processing Unit)3010と、主記憶デバイスであるメモリ3020と、不揮発性の二次記憶装置3030と、入出力装置3040と、ポート3050を有する。これらの各構成要素は、バス3060により相互に接続される。
【0025】
CPU3010は、メモリ3020に記憶されているプログラムを実行することによって、各計算機3000の所定の機能を実現する。メモリ3020は、CPU3010によって実行されるプログラム及びプログラムの実行に必要なデータを記憶する。プログラムは、二次記憶装置3030からメモリ3020にロードされる。
【0026】
入出力装置3040は、ディスプレイ(タッチパネル)、ポインタ又はキーボード等のデバイスの一つ又は複数のデバイスを含む。ユーザUs1は、入出力装置3040により、各計算機3000を操作することができる。
【0027】
ポート3050は、ネットワークNW1に接続される。各計算機3000は、ポート3050を介して、他の計算機3000と通信することができる。なお、各コンポーネントが動作する計算機3000は、仮想マシンやコンテナ等の仮想環境であっても良い。計算機3000には、入出力装置3040としての機能を有さない表示装置(ディスプレイ)が接続されていてもよい。各コンポーネントは、複数の計算機3000で構成されていてもよい。計算機3000は、便宜上、「情報処理装置」とも称呼される場合がある。
【0028】
(メモリ又は記憶装置のデータ構成の説明)
図4はユーザUs1が利用する端末TR1のメモリ又は記憶装置4000及びコンテナ脆弱性自動修正システム100のメモリ又は記憶装置4100に格納されたプログラム及びデータの一例を示すブロック図である。なお、例えば、メモリは上述のメモリ3020に対応し、記憶装置は上述の二次記憶装置3030に対応する。
【0029】
端末TR1のメモリ又は記憶装置4000は、GUI(Graphical User Interface)画面等の画像をディスプレイ(タッチパネル)に表示するためのクライアントプログラム4001を持つ(格納(記憶、保持)している。)。クライアントプログラム4001の一例は、ウェブブラウザである。
【0030】
コンテナ脆弱性自動修正システム100のメモリ又は記憶装置4100は、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150、及び、脆弱性修正結果適用部160を含む。なお、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150、及び、脆弱性修正結果適用部160は、メモリ又は記憶装置4100に格納されたプログラムにより構成される。
【0031】
ユーザ脆弱性自動修正システム100のメモリ又は記憶装置4100は、コンテナ-コンテナイメージ対応管理情報510、コンテナイメージ-コンテナ構築スクリプト対応管理情報610、脆弱性修正選択肢情報121、及び、テストを実行するためのテストスクリプト141を含む。
【0032】
(データの説明)
図5はコンテナ-コンテナイメージ対応管理情報510を説明するための図である。図5に示すように、コンテナ-コンテナイメージ対応管理情報510は、情報(値)を格納する列(カラム)として、コンテナIDまたは名前511と、コンテナイメージ名512と、コンテナイメージタグ513と、を含む。
【0033】
コンテナ-コンテナイメージ対応管理情報510には、コンテナ及びコンテナイメージに関する各列に対応する情報が互いに対応付けられて、行単位の情報(レコード)として格納されている。具体的に述べると、コンテナIDまたは名前511には、コンテナを識別するための識別情報であるIDまたは名前が格納されている。コンテナイメージ名512には、コンテナイメージの名称が格納されている。コンテナイメージタグ513には、コンテナイメージのタグが格納されている。
【0034】
図6はコンテナイメージ-コンテナ構築スクリプト対応管理情報610を説明するための図である。図6に示すように、コンテナイメージ-コンテナ構築スクリプト対応管理情報610は、情報(値)を格納する列(カラム)として、コンテナイメージ名611と、コンテナイメージタグ612と、コンテナ構築スクリプトファイルPath613と、を含む。コンテナイメージ-コンテナ構築スクリプト対応管理情報610には、コンテナイメージに関する各列に対応する情報が互いに対応付けられて、行単位の情報(レコード)として格納されている。具体的に述べると、コンテナイメージ名611には、コンテナイメージの名称が格納されている。コンテナイメージタグ612には、コンテナイメージのタグが格納されている。コンテナ構築スクリプトファイルPath613には、コンテナ構築スクリプトファイルのPath(パス)が格納されている。
【0035】
図7は脆弱性修正選択肢情報121を説明するための図である。図7に示すように、脆弱性修正選択肢情報121は、情報(値)を格納する列(カラム)として、脆弱性修正選択肢121aと、脆弱性存在レイヤの作成方法121bと、優先順位121cとを含む。脆弱性存在レイヤの作成方法121bは、情報を格納するサブカラムとして、ベースイメージ121dと、オリジナル121eと、を含む。
【0036】
脆弱性修正選択肢情報121には、脆弱性修正選択肢情報に関する各列に対応する情報が互いに対応付けられて、行単位の情報(レコード)として格納されている。具体的に述べると、脆弱性修正選択肢121aには、脆弱性修正方法の選択肢が格納されている。脆弱性存在レイヤの作成方法121bのベースイメージ121dには、脆弱性存在レイヤ(「脆弱性レイヤ」とも称呼される。)がベースイメージから作成したレイヤである場合に取り得る選択肢を示す情報(〇)が格納されている。「〇」に対応する脆弱性修正選択肢がベースイメージから作成したレイヤである場合に取り得る選択肢である。脆弱性存在レイヤの作成方法のオリジナルには、脆弱性存在レイヤがオリジナルから作成したレイヤである場合に取り得る選択肢を示す情報(〇)が格納されている。「〇」に対応する脆弱性修正選択肢がオリジナルから作成したレイヤである場合に取り得る選択肢である。
【0037】
<作動の概要>
図8は脆弱性を有するレイヤの作成方法を特定することが難しいことを説明するための図である。ベースイメージBIMG1から作成されたコンテナイメージIMG1は、レイヤで構成される。典型的なコンテナイメージIMG1のレイヤは、ベースイメージBIMG1から作成されたレイヤと、あとから作成されたレイヤ(ユーザの独自のコマンドにより作成されたレイヤ)とに大別できる。
【0038】
しかし、ベースイメージBIMG1から作成されたレイヤと、あとから作成されたレイヤとの境界は、コンテナイメージIMG1(又はコンテナイメージIMG1から作成されるコンテナ)からはわからない。従って、コンテナ(又はコンテナイメージIMG1)の脆弱性があるレイヤが特定できても、適切な脆弱性修正方法を提案(決定)することが難しかった。
【0039】
これに対して、第1実施形態に係るコンテナ脆弱性自動修正システム100は、脆弱性チェックツール200により、脆弱性を有するコンテナ(又はコンテナイメージ)のレイヤに関する情報である脆弱性特定情報210を取得する。コンテナ脆弱性自動修正システム100は、脆弱性特定情報210及びコンテナ-コンテナイメージ対応管理情報510、コンテナイメージ-コンテナ構築スクリプト対応管理情報610に基づいて、脆弱性を有するレイヤの作成由来(作成方法)を特定する。
【0040】
コンテナ脆弱性自動修正システム100は、特定したレイヤの作成由来(作成方法)に基づいて、脆弱性を修正するための脆弱性修正方法の選択肢を提示(提案)する。提示された脆弱性修正方法の選択肢は、ユーザによって選択されることによって、脆弱性を有するコンテナ(又はコンテナイメージ)に適用される。
【0041】
<作動>
以下、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150及び脆弱性修正結果適用部160の作動について説明する。
【0042】
(脆弱性検出通知受付部)
脆弱性検出通知受付部110は、脆弱性チェックツール200から脆弱性特定情報210を受信し、脆弱性検出通知を受け付ける。
【0043】
(脆弱性修正選択肢抽出部)
図9は脆弱性修正選択肢抽出部120が実行する処理フローを示すフローチャートである。脆弱性修正選択肢抽出部120はステップ900から処理を開始し、以下に述べるステップ905乃至ステップ925の処理を順に実行した後、本処理フローを一旦終了する。
【0044】
ステップ905:脆弱性検出通知受付部110が脆弱性特定情報210を受信すると、脆弱性修正選択肢抽出部120は、脆弱性特定情報210に基づいて、脆弱性を含むレイヤを特定する。更に、脆弱性修正選択肢抽出部120は、脆弱性特定情報210及びコンテナ-コンテナイメージ対応管理情報510に基づいて、脆弱性を有するコンテナに対応するコンテナイメージ及びコンテナイメージタグを特定する。
【0045】
ステップ910:脆弱性修正選択肢抽出部120は、特定したコンテナイメージ及びコンテナイメージタグと、コンテナイメージ-コンテナ構築スクリプト対応管理情報610と、に基づいて、特定したコンテナイメージ及びコンテナイメージタグに対応する脆弱性を含むイメージのコンテナ構築スクリプトファイル(コンテナ構築スクリプトファイルのパス(Path))を特定する。
【0046】
ステップ915:脆弱性修正選択肢抽出部120は、特定したコンテナ構築スクリプトファイルのパス(Path)を用いて、コード管理システム700からコンテナ構築スクリプト710を取得する。
【0047】
ステップ920:脆弱性修正選択肢抽出部120は、コンテナ構築スクリプト710及び脆弱性特定情報210のレイヤIDに基づいて、脆弱性を含むレイヤのイメージのインストール元を特定する。なお、この処理については、後に詳述する。
【0048】
ステップ925:脆弱性修正選択肢抽出部120は、脆弱性修正選択肢情報121に基づいて、インストール元に応じた対応方針を決定する。
【0049】
(脆弱性修正部)
脆弱性修正部130は、決定した選択肢(選択された脆弱性修正方法)を実行し、脆弱性を修正する。
【0050】
(テスト部)
テスト部140は、脆弱性修正選択肢抽出部120によって決定された各対応方針(選択肢(脆弱性修正方法))について、脆弱性が修正されたこと、及び、アプリケーションが正常に動作することをテストする。
【0051】
このとき、テスト部140は、脆弱性修正選択肢情報121の優先順位121cに格納された順番で、決定された脆弱性修正方法による脆弱性修正及びテストを行うようにしてもよい。これにより、ユーザUs1は、選択肢全ての脆弱性修正及びテストが完了しなくても、優先順位の高い選択肢の脆弱性修正及びテストが完了すれば(完了し問題なければ)、他の優先順位の低い選択肢の脆弱性修正及びテストの結果を待たないで、その選択肢を直ぐに適用すればよいので、脆弱性修正完了までの時間を短縮できる。なお、ユーザUs1によって、入出力装置3040を介して、脆弱性修正選択肢に対応する優先順位を示す情報をコンテナ脆弱性自動修正システム100に入力することにより、優先順位が優先順位121cに格納(登録)されるようにしてもよい。
【0052】
(脆弱性修正結果提示部)
脆弱性修正結果提示部150は、複数の修正選択肢と、それによる脆弱性解決の有無と、アプリケーションのテスト結果とを管理者(ユーザUs1)に提示し、望ましい修正方法を選択させる。
【0053】
図10は脆弱性修正結果提示部150が表示するGUI画面である脆弱性修正結果画面1000の例を示す。図10に示すように、脆弱性修正結果画面1000は、脆弱性コンテナ情報1001と、原因情報1002と、テスト結果情報1003と、第1修正適用ボタン1004と、第2修正適用ボタン1005と、修正不適用ボタン1006と、を含む。
【0054】
脆弱性コンテナ情報1001は、脆弱性があるコンテナの名称、イメージ名、及び、イメージタグを含む。原因情報1002は、脆弱性の原因を示す情報を含む。テスト結果情報1003は、脆弱性修正方法と、脆弱性解決と、テスト結果と、を示す情報を含む。第1修正適用ボタン1004及び第2修正適用ボタン1005は、画像で構成されたボタンである。
【0055】
第1修正適用ボタン1004がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が適用される。第2修正適用ボタン1005がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が適用される。修正不適用ボタン1006がユーザによって操作されると、そのボタンに対応する脆弱性修正方法は、適用されず実施されない。
【0056】
(脆弱性修正結果適用部)
脆弱性修正結果適用部160は、管理者(ユーザUs1)の脆弱性修正選択肢の選択に従って、脆弱性修正方法を適用したコンテナ(又はコンテナイメージ)を作成し、監視対象システム300にデプロイまたはコンテナイメージレジストリ/リポジトリ400に登録する。
【0057】
(脆弱性を含むレイヤのイメージのインストール元を特定する処理の詳細)
図11は脆弱性修正選択肢抽出部120が実行する処理フローを示すフローチャートである。脆弱性修正選択肢抽出部120はステップ1100から処理を開始してステップ1105に進み、脆弱性特定情報210の脆弱性の内容を確認し、ライブラリに原因があるか否かを判定する。例えば、脆弱性特定情報210の脆弱性内容が、「Lib-1 ver1」のように、ライブラリに原因があることを示す内容である場合、ライブラリに原因があると判定され、脆弱性特定情報210の脆弱性内容が、「value1」のように、設定値を示す内容である場合、ライブラリに原因がないと判定される。
【0058】
ライブラリに原因がある場合、脆弱性修正選択肢抽出部120は、ステップ1105にて「YES」と判定し、以下に述べるステップ1110乃至ステップ1125の処理を順に実行する。
【0059】
ステップ1110:脆弱性修正選択肢抽出部120は、図9のステップ915にて取得されたコンテナ構築スクリプト710から当該コンテナイメージのベースイメージ名及びタグを取得する。
【0060】
ステップ1115:脆弱性修正選択肢抽出部120は、ベースイメージ名からベースイメージが格納されているレジストリを特定する。なお、ベースイメージ名には、レジストリホスト名やリポジトリ名等が含まれているので、ベースイメージ名からレジストリを特定することができる。
【0061】
ステップ1120:脆弱性修正選択肢抽出部120は、特定したレジストリに接続し、ベースイメージをpull(取得、ダウンロード)する。
【0062】
ステップ1125:脆弱性修正選択肢抽出部120は、ベースイメージのレイヤ構成を確認することにより、ベースイメージを構成するレイヤを特定する。
【0063】
その後、脆弱性修正選択肢抽出部120は、ステップ1030に進み、脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれるか否かを判定する。
【0064】
脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれない場合、脆弱性修正選択肢抽出部120は、ステップ1130にて「NO」と判定し、以下に述べるステップ1135及びステップ1140の処理を順に実行した後、ステップ1195に進んで本処理フローを一旦終了する。
【0065】
ステップ1135:脆弱性修正選択肢抽出部120は、脆弱性を持つレイヤはあとからインストールされたライブラリ由来であることを特定する。
【0066】
ステップ1140:脆弱性修正選択肢抽出部120は、コンテナ構築スクリプト710から脆弱性を持つライブラリをインストールしたコマンドを特定する。
【0067】
脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれる場合、脆弱性修正選択肢抽出部120は、ステップ1130にて「YES」と判定してステップ1145に進み、脆弱性はベースイメージ由来であることを特定する。
【0068】
その後、脆弱性修正選択肢抽出部120は、ステップ1150に進み、ベースイメージのレジストリはパブリックレジストリ/リポジトリ410であるか否かを判定する。
【0069】
ベースイメージのレジストリはパブリックレジストリ/リポジトリ410である場合、脆弱性修正選択肢抽出部120は、ステップ1150にて「YES」と判定してステップ1095に進み、本処理フローを一旦終了する。
【0070】
ベースイメージのレジストリはパブリックレジストリ/リポジトリ410ではない場合、確認したベースイメージが、ベースイメージ及び独自のコマンドにより作成された可能性がある。従って、この場合、脆弱性修正選択肢抽出部120は、ステップ1150にて「NO」と判定してステップ1155に進み、ベースイメージのコンテナ構築スクリプト710を取得可能であるか否かを判定する。
【0071】
ベースイメージのコンテナ構築スクリプト710を取得可能ではない場合、これ以上の詳細な分析はできないので、脆弱性修正選択肢抽出部120は、ステップ1155にて「NO」と判定してステップ1195に進み、本処理フローを一旦終了する。
【0072】
ベースイメージのコンテナ構築スクリプト710を取得可能である場合、脆弱性修正選択肢抽出部120は、ステップ1155にて「YES」と判定してステップ1160に進み、新たなコンテナ構築スクリプト710を取得した後、ステップ1110に戻る。そして、脆弱性修正選択肢抽出部120は、新たに取得したコンテナ構築スクリプト710に関して、ステップ1110乃至ステップ1155のうちの適当な処理を実行する。これにより、脆弱性修正選択肢抽出部120は、前回の処理で確認したベースイメージに関して、ベースイメージと独自で作成したオリジナルイメージとの境界を探索することができる。
【0073】
上述したステップ1105にて、ライブラリに原因がない場合、脆弱性修正選択肢抽出部120は、ステップ1105にて「NO」と判定しステップ1165に進み、図12に示す処理フローを実行する。
【0074】
図12は脆弱性修正選択肢抽出部120が実行する処理フローを示すフローチャートである。脆弱性修正選択肢抽出部120は、図11のステップ1165に進むと、ステップ1200から処理を開始し、以下に述べるステップ1205乃至ステップ1220の処理を順に実行する。
【0075】
ステップ1205:脆弱性修正選択肢抽出部120は、図9のステップ915にて取得されたコンテナ構築スクリプト710から当該コンテナイメージのベースイメージ名及びタグを取得する。
【0076】
ステップ1215:脆弱性修正選択肢抽出部120は、ベースイメージ名からベースイメージが格納されているレジストリを特定する。
【0077】
ステップ1220:脆弱性修正選択肢抽出部120は、特定したレジストリに接続し、ベースイメージをpull(取得、ダウンロード)する。
【0078】
ステップ1225:脆弱性修正選択肢抽出部120は、ベースイメージのレイヤ構成を確認することにより、ベースイメージを構成するレイヤを特定する。
【0079】
その後、脆弱性修正選択肢抽出部120は、ステップ1225に進み、脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれるか否かを判定する。
【0080】
脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれない場合、脆弱性修正選択肢抽出部120は、ステップ1225にて「NO」と判定し、以下に述べるステップ1230乃至ステップ1240の処理を順に実行した後、ステップ1295に進んで本処理フローを一旦終了する。
【0081】
ステップ1230:脆弱性修正選択肢抽出部120は、脆弱性を持つレイヤはあとからインストールされたライブライリ由来であることを特定する。
【0082】
ステップ1235:脆弱性修正選択肢抽出部120は、コンテナ構築スクリプト710から脆弱性を持つ設定ファイル720を特定する。
【0083】
ステップ1240:脆弱性修正選択肢抽出部120は、設定ファイル720から脆弱性の原因である設定項目を特定する。
【0084】
脆弱性を持つレイヤIDがベースイメージを構成するレイヤに含まれる場合、脆弱性修正選択肢抽出部120は、ステップ1225にて「YES」と判定してステップ1245に進み、脆弱性はベースイメージ由来であることを特定してステップ1250に進み、ベースイメージのレジストリはパブリックレジストリ/リポジトリ410であるか否かを判定する。
【0085】
ベースイメージのレジストリはパブリックレジストリ/リポジトリ410である場合、脆弱性修正選択肢抽出部120は、ステップ1250にて「YES」と判定してステップ1295に進み、本処理フローを一旦終了する。
【0086】
ベースイメージのレジストリはパブリックレジストリ/リポジトリ410ではない場合、確認したベースイメージが、ベースイメージ及び独自のコマンドにより作成された可能性がある。従って、この場合、脆弱性修正選択肢抽出部120は、ステップ1250にて「NO」と判定してステップ1255に進み、ベースイメージのコンテナ構築スクリプト710を取得可能であるか否かを判定する。
【0087】
ベースイメージのコンテナ構築スクリプト710を取得可能ではない場合、これ以上の詳細な分析はできないので、脆弱性修正選択肢抽出部120は、ステップ1255にて「NO」と判定してステップ1295に進み、本処理フローを一旦終了する。
【0088】
ベースイメージのコンテナ構築スクリプト710を取得可能である場合、脆弱性修正選択肢抽出部120は、ステップ1255にて「YES」と判定してステップ1260に進み、新たなコンテナ構築スクリプト710を取得した後、ステップ1255に戻る。そして、脆弱性修正選択肢抽出部120は、新たに取得したコンテナ構築スクリプト710に関して、ステップ1210乃至ステップ1255のうちの適当な処理を実行する。これにより、脆弱性修正選択肢抽出部120は、前回の処理で確認したベースイメージに関して、ベースイメージと独自で作成したオリジナルイメージとの境界を探索することができる。
【0089】
<効果>
以上説明したように、本発明の第1実施形態に係るコンテナ脆弱性自動修正システム100は、脆弱性を有するコンテナ(又はコンテナイメージ)のレイヤの作成由来(作成方法)を特定することにより、脆弱性を有するコンテナ(又はコンテナイメージ)に対する適切な脆弱性修正方法(脆弱性修正方法の選択肢)を提案することができる。
【0090】
更に、第1実施形態に係るコンテナ脆弱性自動修正システム100は、脆弱性を有するコンテナの作成に使用されたコンテナ構築スクリプト710に基づいて、コンテナ構築時に利用されるリソースの設定ファイル720を特定し、特定した設定ファイル720を取得し、その中身を検証し、脆弱性の原因となった設定項目を特定することもできる。従って、第1実施形態に係るコンテナ脆弱性自動修正システム100は、リソースの設定内容に原因がある脆弱性に対応した脆弱性修正方法(脆弱性修正方法の選択肢)を提案することもできる。
【0091】
更に、第1実施形態に係るコンテナ脆弱性自動修正システム100は、脆弱性がベースイメージに含まれていた場合、そのベースイメージはユーザUs1がアップデートできるものであるか(ユーザUs1がベースイメージの持ち主であるか、ユーザUs1を含む特定のグループに属する者が作成したベースイメージであるか、どこかからダウンロードしてきたものか、パブリックリポジトリか、プライベートリポジトリかなど)を判断する。
【0092】
第1実施形態に係るコンテナ脆弱性自動修正システム100は、ユーザUs1を含む特定のグループに属する者たちの管理範囲内であれば、ベースイメージを作成したときのコンテナ構築スクリプト710を取得及び解析を繰り返し、脆弱性の根本原因を探る。そして、第1実施形態に係るコンテナ脆弱性自動修正システム100は、ベースイメージがユーザUs1を含む特定のグループに属する者たちの管理範囲外となるか、脆弱性を持つライブラリをインストールしたコマンドが特定できた時点で処理を終了する。これにより、第1実施形態に係るコンテナ脆弱性自動修正システム100は、脆弱性の根本原因を探索し、脆弱性を根本から修正することができる。
【0093】
<<第2実施形態>>
本発明の第2実施形態に係るコンテナ脆弱性自動修正システム100について説明する。図13は本発明の第2実施形態に係るコンテナ脆弱性自動修正システム100の概要を説明するための図である。第2実施形態に係るコンテナ脆弱性自動修正システム100は、以下の点のみにおいて第1実施形態に係るコンテナ脆弱性自動修正システム100と相違点を有する。
【0094】
コンテナ脆弱性自動修正システム100は、暫定措置情報構成部170及び理想措置再実施部180を含む。
【0095】
以下、この相違点を中心として説明する。
【0096】
(メモリ又は記憶装置のデータ構成の説明)
図14はユーザUs1が利用する端末TR1のメモリ又は記憶装置4000、コンテナ脆弱性自動修正システム100のメモリ又は記憶装置4100に格納されたプログラム及びデータの一例を示すブロック図である。
【0097】
端末TR1のメモリ又は記憶装置は、GUI画面をディスプレイ(タッチパネル)に表示するためのクライアントプログラム4001を持つ(格納(記憶、保持)している。)。クライアントプログラム4001の一例は、ウェブブラウザである。
【0098】
端末TR1のメモリ又は記憶装置4000は、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150、脆弱性修正結果適用部160、暫定措置情報構成部170、及び、理想措置再実施部180を含む。なお、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150、脆弱性修正結果適用部160、暫定措置情報構成部170及び理想措置再実施部180は、メモリ又は記憶装置4100に格納されたプログラムにより構成される。
【0099】
ユーザ脆弱性自動修正システム100のメモリ又は記憶装置4100は、コンテナ-コンテナイメージ対応管理情報510、コンテナイメージ-コンテナ構築スクリプト対応管理情報610、脆弱性修正選択肢情報121、暫定措置情報1500、及び、テストを実行するためのテストスクリプト141を含む。
【0100】
図15は暫定措置情報1500の一例を説明するための図である。図15に示すように、暫定措置情報1500は、情報(値)を格納する列(カラム)として、コンテナ名1501と、イメージ名1502と、イメージタグ1503と、レイヤ情報1504と、暫定措置1505と、理想修正方法1506と、を含む。レイヤ情報1504は、情報を格納するサブカラムとして、レイヤID1507と、作成方法1508と、ベースイメージ情報1509と、レイヤ構築コマンド1510と、を含む。
【0101】
コンテナ名1501には、コンテナの名称が格納される。イメージ名1502には、コンテナイメージの名称が格納されている。イメージタグ1503には、コンテナイメージのタグが格納されている。レイヤ情報1504のレイヤID1507には、レイヤのIDが格納されている。作成方法1508には、各レイヤの作成方法が格納されている。ベースイメージ情報1509には、ベースイメージの情報が格納されている。レイヤ構築コマンド1510には、対応するレイヤを構築するコマンドが格納されている。暫定措置1505には、暫定的な措置を示す情報が格納されている。理想修正方法1506には、理想的な措置を示す情報が格納されている。
【0102】
<作動>
以下、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140、脆弱性修正結果提示部150、脆弱性修正結果適用部160、暫定措置情報構成部170及び理想措置再実施部180の作動について説明する。なお、脆弱性検出通知受付部110、脆弱性修正選択肢抽出部120、脆弱性修正部130、テスト部140の作動は、第1実施形態と同様であるので説明を省略する。
【0103】
(脆弱性修正結果提示部)
脆弱性修正結果提示部150は、複数の修正選択肢と、それによる脆弱性解決の有無と、アプリケーションのテスト結果とを管理者(ユーザUs1)に提示し、望ましい修正方法を選択させる。更に、脆弱性修正結果提示部150は、現時点では脆弱性を解決することができていないが、将来脆弱性を解決することが可能になり得る理想的な措置を理想措置として、保存するかどうかをユーザUs1に選択させるためのGUI画面を表示する。
【0104】
図16は脆弱性修正結果提示部150が表示するGUI画面である脆弱性修正結果画面1600の例を示す。図16に示すように、脆弱性修正結果画面1600は、脆弱性コンテナ情報1601と、原因情報1602と、テスト結果情報1603と、第1修正適用ボタン1604と、第2修正適用ボタン1605と、第1理想措置保存ボタン1606と、第2理想措置保存ボタン1607と、修正不適用ボタン1608と、を含む。
【0105】
脆弱性コンテナ情報1601は、脆弱性があるコンテナの名称、イメージ名、及び、イメージタグを含む。原因情報1602は、脆弱性の原因を示す情報を含む。テスト結果情報1603は、脆弱性修正方法と、脆弱性解決と、テスト結果と、を示す情報を含む。第1修正適用ボタン1604及び第2修正適用ボタン1605は、画像で構成されたボタンである。
【0106】
第1修正適用ボタン1604がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が適用される。第2修正適用ボタン1605がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が適用される。第1理想措置保存ボタン1606及び第2理想措置保存ボタン1607は、画像で構成されたボタンである。
【0107】
第1理想措置保存ボタン1606がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が、理想措置(理想修正方法)として保存される。第2理想措置保存ボタン1607がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法が、理想措置(理想修正方法)として保存される。
【0108】
修正不適用ボタン1608がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法は、適用されず実施されない。
【0109】
修正不適用ボタン1006がユーザUs1によって操作されると、そのボタンに対応する脆弱性修正方法は、適用されず実施されない。
【0110】
(脆弱性修正結果適用部)
脆弱性修正結果適用部160は、管理者(ユーザUs1)の脆弱性修正選択肢の選択に従って、脆弱性修正方法を適用したコンテナ(又はコンテナイメージ)を作成し、監視対象システム300にデプロイまたはコンテナイメージレジストリ/リポジトリ400に登録する。
【0111】
(暫定措置情報構成部)
暫定措置情報構成部170は、脆弱性修正結果画面1600に対する入力に基づいて、暫定措置情報1500を構成(作成)する。
【0112】
(理想措置再実施部)
図17はコンテナ脆弱性自動修正システム100の理想措置再実施部180が実行する処理フローを示すフローチャートである。
【0113】
理想措置再実施部180は、ステップ1700から処理を開始してステップ1710に進み、暫定措置情報1500に基づいて理想修正方法を特定してステップ1720に進む。
【0114】
理想措置再実施部180は、ステップ1720に進むと、理想修正方法が可能であることを検知できたか否かを判定する。例えば、理想措置再実施部180は、定期的にベースイメージアップデートを確認することなどにより、理想修正方法が可能(脆弱性を修正可能)であることを検知する。
【0115】
理想修正方法が可能であることを検知できない場合、理想措置再実施部180は、ステップ1720にて「NO」と判定してステップ1720に戻る。
【0116】
理想修正方法が可能であることを検知できた場合、理想措置再実施部180は、ステップ1720にて「YES」と判定し、以下に述べるステップ1730乃至ステップ1750の処理を順に実行した後、ステップ1795に進んで本処理フローを一旦終了する。
【0117】
ステップ1730:理想措置再実施部180は、脆弱性修正部130に理想修正方法を実施させる。
【0118】
ステップ1740:理想措置再実施部180は、テスト部140にテストを実施させる。
【0119】
ステップ1750:理想措置再実施部180は、脆弱性修正結果提示部150にテスト結果を表示させる。この際、理想措置再実施部180は、脆弱性修正結果提示部150に暫定措置が不要になったことを示す情報を含む画面を端末TR1の表示装置(ディスプレイ)などに表示させてもよい。
【0120】
<効果>
以上説明したように、本発明の第2実施形態に係るコンテナ脆弱性自動修正システム100は、第1実施形態と同様の効果を奏する。更に、第2実施形態に係るコンテナ脆弱性自動修正システム100は、理想的な脆弱性修正方法が有効ではない場合に、暫定的な脆弱性修正方法を適用でき、理想的な脆弱性修正方法が事後的に有効になった場合、その旨を通知して、暫定的な脆弱性修正方法に代えて、理想的な脆弱性修正方法を適用することができる。
【0121】
例えば、脆弱性の原因はベースイメージに存在するが、ベースイメージの最新版ではまだ脆弱性が修正されていないため、ベースイメージのアップデートによる対応は不可能であり、暫定対応として、パッケージアップデートコマンドによりライブラリを直接更新するケースがある。一方でこの場合、脆弱性対応版のベースイメージが公開されればそちらを利用したいようなケースがある。
【0122】
そこで、第2実施形態に係るコンテナ脆弱性自動修正システム100は、定期的にベースイメージアップデートを確認し、ベースイメージの脆弱性対応版が公開された際にはそれを利用して修正を行った場合のテスト結果と共に管理者(ユーザUs1)に通知することで、より望ましい理想修正方法で脆弱性修正ができるようになったときに、その理想修正方法で再修正することができる。
【0123】
<<変形例>>
本発明は上記各実施形態に限定されることなく、本発明の範囲内において種々の変形例を採用することができる。更に、上記各実施形態は、本発明の範囲を逸脱しない限り、互いに組み合わせることが可能である。
【0124】
上記各実施形態において、図11のフローチャートにより示した処理フロー及び図12のフローチャートにより示した処理フローの何れか一つが実行されるようにしてもよい。
【0125】
上記各実施形態において、図11のフローチャートにより示した処理フローに代えて、図11のフローチャートのステップ1155及びステップ1160を省略した処理フローを実行するようにしてもよい。上記各実施形態において、図12のフローチャートにより示した処理フローに代えて、図12のフローチャートのステップ1255及びステップ1260を省略した処理フローを実行するようにしてもよい。これらの場合においても、脆弱性を有するコンテナ(又はコンテナイメージ)のレイヤの作成由来(作成方法)を特定することにより、脆弱性を有するコンテナ(又はコンテナイメージ)に対する適切な脆弱性修正方法(脆弱性修正方法の選択肢)を提案することができる。
【符号の説明】
【0126】
100…コンテナ脆弱性自動修正システム、110…脆弱性検出通知受付部、120…脆弱性修正選択肢抽出部、130…脆弱性修正部、140…テスト部、150…脆弱性修正結果提示部、160…脆弱性修正結果適用部、170…暫定措置情報構成部、180…理想措置再実施部、200…脆弱性チェックツール、210…脆弱性特定情報、300…監視対象システム、400…コンテナイメージレジストリ/リポジトリ、500…コンテナデプロイ管理システム、600…開発管理システム、700…コード管理システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17