JP7322963B2 - 評価装置、評価方法及びプログラム - Google Patents

評価装置、評価方法及びプログラム Download PDF

Info

Publication number
JP7322963B2
JP7322963B2 JP2021553261A JP2021553261A JP7322963B2 JP 7322963 B2 JP7322963 B2 JP 7322963B2 JP 2021553261 A JP2021553261 A JP 2021553261A JP 2021553261 A JP2021553261 A JP 2021553261A JP 7322963 B2 JP7322963 B2 JP 7322963B2
Authority
JP
Japan
Prior art keywords
library
risk
evaluation
value
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021553261A
Other languages
English (en)
Other versions
JPWO2021079496A1 (ja
JPWO2021079496A5 (ja
Inventor
淳 西岡
純明 榮
和彦 磯山
佑嗣 小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2021079496A1 publication Critical patent/JPWO2021079496A1/ja
Publication of JPWO2021079496A5 publication Critical patent/JPWO2021079496A5/ja
Application granted granted Critical
Publication of JP7322963B2 publication Critical patent/JP7322963B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Description

本発明は、評価装置、評価方法及びプログラムに関する。
近年、ソフトウェア(アプリケーションプログラム)の規模は増加の一途であり、全てのソースコードを自前で開発することは困難な状況にある。そのため、オープンソースソフトウェア(OSS;Open Source Software)等と称される第3者が開発したソースコードを利用する開発が盛んに行われている。例えば、アプリケーションプログラムの一部機能が、OSSとして公開されているライブラリにより実現される。
特許文献1には、並行開発で予測不能な任意のタイミングで依存関係が生成されるような開発工程における変更影響把握の困難さを解決する、と記載されている。特許文献2には、ソフトウェアの構造的な障害の発生箇所を予測することができる危険度判定プログラムを提供する、と記載されている。特許文献3には、ソフトウェア開発、保守、および修復ライフサイクルにおける重要な側面を自動化する、大量のソフトウェアファイルを活用することが可能なシステム及び方法を提供する、と記載されている。特許文献4には、ソフトウェア開発効率の低下とソフトウェアエージングの検出精度の低下を招かないような適切な頻度で負荷テストを実行する、と記載されている。
特開2008-040760号公報 特開2010-257091号公報 特表2017-520842号公報 国際公開第2015/022890号
上述のように、アプリケーションプログラムの開発にオープンソースソフトウェアとして公開されたライブラリが用いられることがある。
ライブラリをアプリケーションプログラムに組み込み際、通常、当該ライブラリに対する検証が行われる。具体的には、使用予定のライブラリに関する脆弱性情報の有無等やソースコードに組み込んだ場合の振る舞いが検証される。
また、ライブラリ自身も他のライブラリに依存(他のライブラリを呼び出し)するなど多段の依存関係を有し、ライブラリの持つ複雑度が増している。そのため、ライブラリ自身がバグやセキュリティホール等の脆弱性を有していることも珍しくない。
ここで、使用予定のライブラリに関し、その導入時には念入りに当該ライブラリの検証が行われるが、導入後には動作確認等の簡単な確認に留まることが多い。即ち、アプリケーションプログラム自体の開発に重点が置かれ、導入後のライブラリに対する検証は重要視されないことも多い。
しかし、ライブラリを使用する側(呼び出し側)のソースコードはプロジェクトの進行と共に改版され、ライブラリの使用態様も変化する。例えば、ライブラリの導入時には1つの関数が当該ライブラリを呼び出すに過ぎなかったものが、開発の進行と共に複数の関数が上記ライブラリを呼び出すこともある。
この場合、ライブラリの脆弱性がアプリケーションプログラム全体に及ぼす影響が拡大していることになる。しかし、上述のように、ライブラリの導入時にはその検証が念入りに行われるが、ライブラリの導入後には同等の検証が行われることは少ない。その結果、ライブラリの有する脆弱性がシステム(アプリケーションプログラム全体)に及ぼす深刻な影響が見落とされる可能性がある。即ち、ライブラリが有する脆弱性がアプリケーションプログラムに及ぼす影響は時間と共に変化するが、現状のシステム開発体制では当該ライブラリの影響度を適切に評価することができない。
本発明は、時間の経過と共に変化するソースコードのリスクを適切に評価することに寄与する、評価装置、評価方法及びプログラムを提供することを主たる目的とする。
本発明の第1の視点によれば、ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成する、生成部と、少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する、出力部と、を備える、評価装置が提供される。
本発明の第2の視点によれば、評価装置において、ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成するステップと、少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力するステップと、を含む評価方法が提供される。
本発明の第3の視点によれば、評価装置に搭載されたコンピュータに、ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成する処理と、少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する処理と、を実行させるプログラムが提供される。
本発明の各視点によれば、時間の経過と共に変化するソースコードのリスクを適切に評価することに寄与する、評価装置、評価方法及びプログラムが提供される。なお、本発明により、当該効果の代わりに、又は当該効果と共に、他の効果が奏されてもよい。
一実施形態の概要を説明するための図である。 第1の実施形態に係る評価装置を説明するための図である。 第1の実施形態に係る評価装置の処理構成の一例を示す図である。 第1の実施形態に係る評価装置が取得するソースコードの一例を示す図である。 ライブラリ構成情報の一例を示す図である。 リスク評価値生成部が生成する情報の一例を示す図である。 ライブラリ評価結果の一例を示す図である。 ライブラリ影響度算出部が算出するライブラリ影響度の一例を示す図である。 ライブラリ評価情報の一例を示す図である。 記憶部に格納されたリスク値の時系列データの一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置による表示の一例を示す図である。 第1の実施形態に係る評価装置の動作の一例を示すフローチャートである。 第2の実施形態に係る評価装置の処理構成の一例を示す図である。 第2の実施形態に係る評価装置による表示の一例を示す図である。 第2の実施形態に係る評価装置による表示の一例を示す図である。 第2の実施形態に係る評価装置による表示の一例を示す図である。 評価装置のハードウェア構成の一例を示す図である。 ライブラリ評価結果の一例を示す図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。なお、本明細書及び図面において、同様に説明されることが可能な要素については、同一の符号を付することにより重複説明が省略され得る。
一実施形態に係る評価装置100は、生成部101と、出力部102と、を備える(図1参照)。生成部101は、ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成する。出力部102は、少なくとも生成された評価値に基づき、第1のライブラリの危険度を算出し、算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、算出されたリスク値の時系列データを出力する。
評価装置100は、ソースコードに記載された各ライブラリ自身の評価を行い、ライブラリの持つリスクを危険度として数値化する。評価装置100は、ライブラリの観点からソースコードが有するリスクを可視化し、その時系列変化を表示する。当該表示に接したユーザは、時間の経過と共に変化するソースコードのリスクを適切に評価することができる。
以下に具体的な実施形態について、図面を参照してさらに詳しく説明する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、第1の実施形態に係る評価装置10を説明するための図である。評価装置10は、アプリケーションプログラム等のソースコードに内在するリスクを評価する装置である。評価装置10は、リスクの評価対象となるソースコードを取得する。
評価装置10は、当該ソースコードが有するリスクを数値化し、当該数値化したリスクをユーザ(アプリケーションプログラムの管理者等)に提示する。その際、評価装置10は、ソースコード(当該ソースコードから生成されたプロジェクト)のリスクに関する時系列変化をユーザに提示する。
例えば、評価装置10は、上記リスクの時系列データを液晶モニタ等に表示する。あるいは、評価装置10は、当該時系列データを所定のアドレス等に送信してもよいし、プリンター等を用いて印刷してもよい。
図3は、第1の実施形態に係る評価装置10の処理構成(処理モジュール)の一例を示す図である。図3を参照すると、評価装置10は、ソースコード取得部201と、ライブラリ情報生成部202と、リスク情報出力部203と、記憶部204と、を備える。
ソースコード取得部201は、リスク評価の対象となるソースコードを取得する手段である。例えば、ソースコード取得部201は、管理者等が評価対象となるソースコードを入力(指定)するためのGUI(Graphical User Interface)情報を生成し、当該GUIを用いてソースコードを取得してもよい。あるいは、ソースコード取得部201は、USB(Universal Serial Bus)メモリ等の外部記憶装置を介してソースコードを取得してもよいし、外部のデータベースサーバ等にアクセスしてソースコードを取得してもよい。
例えば、ソースコード取得部201は、図4に示すようなソースコードを取得する。図4Aは、メイン関数を含むソースコードの一例を示し、図4B及び図4Cは、ライブラリのソースコードの一例を示す。なお、ソースコード取得部201が取得するソースコードには、ソースコードに付随するREADMEファイルやソースコードのコンパイルにより生成されるファイル、ソースコードが格納されたディレクトリ等が含まれる。
ソースコード取得部201は、取得したソースコードとその識別情報(例えば、プロジェクト名)を対応付けて記憶部204に格納する。
ライブラリ情報生成部202は、上記取得したソースコードに記載されたライブラリを評価するための情報(以下、ライブラリ評価情報と表記する)を生成する手段である。
図3に示すように、ライブラリ情報生成部202は、ライブラリ抽出部211と、リスク評価値生成部212と、ライブラリ影響度算出部213と、を含む。
ライブラリ抽出部211は、取得したソースコードに記載されたライブラリを抽出する手段である。ライブラリ抽出部211は、ソースコードを走査し、当該ソースコードに記載されたライブラリを抽出する。具体的には、ライブラリ抽出部211は、使用ライブラリを宣言する領域(例えば、import宣言が記載されたファイルの先頭領域)を確認し、当該領域に記載されたライブラリを抽出する。
図4の例では、ライブラリ抽出部211は、図4Aの1行目、2行目に記載されたライブラリ「L123」、「L345」を抽出する。ライブラリ抽出部211は、図4Bの1行目、2行目に記載されたライブラリ「L911」、「L912」を抽出する。ライブラリ抽出部211は、図4Cの1行目に記載されたライブラリ「L811」を抽出する。
ソースコードに記載されたライブラリの抽出が終了すると、ライブラリ抽出部211は、当該抽出したライブラリ間の依存関係を検出する。具体的には、ライブラリ抽出部211は、各ライブラリが使用している(各ライブラリから呼び出している)子ライブラリ(従属ライブラリ)を検出し、ライブラリ間の依存関係(従属関係)を検出する。
ライブラリ抽出部211は、当該検出したライブラリ間の依存関係を「ライブラリ構成情報」としてまとめる。例えば、図4の例では、ライブラリ「L123」には、ライブラリ「L911」、「L912」が含まれる。従って、ライブラリ「L123」とライブラリ「L911」及び「L912」の間には依存関係が認められる。また、ライブラリ「L911」には、ライブラリ「L811」が含まれる。従って、これらのライブラリの間には依存関係が認められる。
ライブラリ抽出部211は、上記検出したライブラリ間の依存関係に基づき、図5に示すようなライブラリ構成情報を生成する。
図5を参照すると、ライブラリ「L123」を基準として、当該ライブラリには子ライブラリ「L911」、「L912」が含まれ、さらに、孫ライブラリ「L811」が含まれることが分かる。
なお、図5には、ライブラリの階層として3階層(親、子、孫)の場合が記載されているが、当該階層構造は例示であることは勿論である。評価対象のソースコードが3階層以上の構造を有していてもよいことは当然である。
リスク評価値生成部212は、ソースコードに記載されたライブラリのリスクに関する評価値を生成する手段である。リスク評価値生成部212は、抽出されたライブラリ自身のリスクを示す評価値を生成する。具体的には、リスク評価値生成部212は、ライブラリ単体でのリスクを評価値として数値化する。
なお、以降の説明において、リスク評価値生成部212が実施するライブラリ単体のリスク評価を「ライブラリ単体評価」と表記する。
リスク評価値生成部212は、様々な観点からライブラリ単体評価を実施する。具体的には、リスク評価値生成部212は、各ライブラリを互いに性質の異なる情報に基づき評価し、異なる情報ごとに評価値を生成する。
リスク評価値生成部212は、評価対象となるライブラリに関する時間的な変化が少ない安定した指標を用いてライブラリを評価する。例えば、リスク評価値生成部212は、評価対象ライブラリのディレクトリ構成、READMEファイルの有無、テストディレクトリの有無等、静的な情報に基づき評価値を算出する。
例えば、リスク評価値生成部212は、評価対象ライブラリのディレクトリ構成がシンプル(例えば、階層数が所定値よりも少ない等)であれば小さな評価値を与え、ディレクトリ構成が複雑であれば大きな評価値を与える。当該評価値の決定は、ディレクトリ構成が複雑であれば対応するライブラリのリスク(危険度)は相対的に高くなるという知見に基づく。
リスク評価値生成部212は、READMEファイルやテストディレクトリが存在すれば小さな評価値を与え、READMEファイルやテストディレクトリが非存在であれば大きな評価値を与えてもよい。当該評価値の決定は、READMEファイルやテストディレクトリが存在すれば、対応するライブラリの管理や評価(デバッグ)が十分である判断できるためである。
リスク評価値生成部212は、上記項目(例えば、ディレクトリ構成、READMEファイルの有無、テストディレクトリの有無)の全部又は一部を用いて評価値を算出する。
なお、以降の説明において、ディレクトリ構成等の静的な情報に基づき定められた評価値を「静的評価値」と表記する。
リスク評価値生成部212は、時間的に変化する情報(例えば、評価対象ライブラリに関するメタデータ)を用いてライブラリを評価してもよい。例えば、リスク評価値生成部212は、評価対象ライブラリに関する「問題解決率(Issue解決率)」、「コミット数」、「コード生成者(作者)」等のメタデータに基づき評価値を算出する。
例えば、リスク評価値生成部212は、Issue解決率やコミット数に対して、閾値処理を実行し、その結果に応じて評価値を算出してもよい。より具体的には、リスク評価値生成部212は、Issue解決率等が閾値以上であれば小さな評価値を与え、Issue解決率等が閾値よりも小さければ大きな評価値を与える。あるいは、リスク評価値生成部212は、Issue解決率等が属する数値範囲に応じて評価値を決定してもよい。上記評価値の決定は、Issue解決率やコミット数が所定の値よりも大きければ対応するライブラリの開発は継続されておりリスクを低く見積もることが妥当であるという知見に基づく。
リスク評価値生成部212は、コード生成者が予め定められた人物に該当するか否かに応じて評価値を決定してもよい。例えば、リスク評価値生成部212は、脆弱性の少ない安全なライブラリを多数生成した人物のリスト(予め用意されたホワイトリスト)を参照する。リスク評価値生成部212は、当該リストに評価対象ライブラリの生成者が含まれる場合には、対応するライブラリに小さい評価値を与える。
リスク評価値生成部212は、脆弱性が多数報告され、不完全なライブラリを多数生成した人物のリスト(予め用意されたブラックリスト)を参照してもよい。当該リストに評価対象ライブラリの生成者が含まれる場合、リスク評価値生成部212は対応するライブラリに大きな評価値を与えてもよい。
リスク評価値生成部212は、上記項目(例えば、Issue解決率、コミット数、コード作成者)の全部又は一部を用いて評価値を算出する。
なお、以降の説明において、Issue解決率等の動的な情報(メタデータ)に基づき定められた評価値を「動的評価値」と表記する。上記Issue解決率等はメタデータの一例であって、上記以外の情報、例えば、CVE(Common Vulnerabilities and Exposures)、コミットサイズ、更新頻度等を用いて動的評価値が算出されてもよい。あるいは、使用ライブラリのバージョンと最新バージョン(最新のコミット)の距離(乖離度)を用いて動的評価値が算出されてもよい。例えば、最新バージョンと使用ライブラリのバージョンの差分が計算され、当該差分が含まれる数値範囲に基づいて動的評価値が算出されてもよい。また、メジャーバージョンとマイナーバージョンで重みを変え、メジャーバージョンが大きく離れている場合に動的評価値が大きく算出(リスクが高く算出)されてもよい。
ここで、使用ライブラリがオープンソースソフトウェアとして公開されているライブラリであれば、上記動的評価値の算出する際の基礎となるメタデータはネットワーク上で公開されていることが多い。リスク評価値生成部212は、当該ネットワーク上で公開されているメタデータを取得し、上記動的評価値を算出すればよい。上記公開されているメタデータの一例として下記の参考情報1が例示される。
<参考情報1>
URL;https://developer.github.com/
リスク評価値生成部212は、評価対象ライブラリのソースコードを用いてライブラリを評価してもよい。例えば、リスク評価値生成部212は、評価対象ライブラリのソースコードに記載されたコメントの数、コードの複雑度、ソースコードに記載された関数の名称等に基づき評価値を算出する。
例えば、リスク評価値生成部212は、上記コメント数やコードの複雑度に対して、閾値処理を実行し、その結果に応じて評価値を決定してもよい。より具体的には、リスク評価値生成部212は、コメント数等が閾値以上であれば小さい評価値を与え、コメント数等が閾値よりも小さければ大きな評価値を与える。
リスク評価値生成部212は、評価対象ライブラリのソースコードに記載された関数の名称が所定の規則に合致しているか否か(あるいは、所定の規則からどの程度乖離しているか否か)に応じて評価値を決定してもよい。
リスク評価値生成部212は、上記項目(例えば、コメント数、コード複雑度、関数の名称)の全部又は一部を用いて評価値を算出する。
なお、以降の説明において、コード複雑度等の評価対象ライブラリのソースコードに記載された情報に基づき定められた評価値を「実体評価値」と表記する。
リスク評価値生成部212は、下記の参考情報2に記載された情報に基づき上記実体評価値を算出してもよい。参考情報2には、ソースコードのライン数、コードの循環的複雑度のメトリクスが記載されている。
<参考情報2>
URL;https://www.techmatrix.co.jp/product/understand/function/metrics.html
上記説明したように、リスク評価値生成部212は、種々の観点から評価対象ライブラリに関する単体評価を行う。即ち、リスク評価値生成部212は、評価対象ライブラリのディレクトリ構成等の静的情報、メタデータ等の動的情報、ソースコードによる実体情報等を用いた多種多様な観点からライブラリ単体評価を実行する。
上記3つの単体評価は例示であって、リスク評価値生成部212のライブラリ単体評価の実施内容を限定する趣旨でない。リスク評価値生成部212は、上記3つの単体評価のうち少なくとも1つ以上の評価を実施すればよく、上記3つの単体評価とは異なる評価をさらに実施してもよい。
リスク評価値生成部212は、上記説明したライブラリ単体評価を抽出されたライブラリについて実行する。例えば、リスク評価値生成部212は、図6に示すような情報を生成し、記憶部204に格納する。
ライブラリの中で他のライブラリが呼び出されている場合には、リスク評価値生成部212は、当該他のライブラリに関するライブラリ単体評価の結果を加味してライブラリを評価する。つまり、ライブラリに子ライブラリが含まれる場合には、リスク評価値生成部212は、子ライブラリに関する単体評価の結果を加味して親ライブラリを評価する(親ライブラリを評価するための情報を生成する)。
図5の例では、ライブラリ「L123」が親ライブラリ、「L911」、「L912」が子ライブラリの関係にあり、子ライブラリ「L911」、「L912」の単体評価の結果が親ライブラリ「L123」の評価に反映される。
リスク評価値生成部212は、評価対象ライブラリに子ライブラリが含まれる場合には、当該子ライブラリに関する単体評価の評価値のうち値が最も大きい(リスクが最も大きい)評価値を特定する。例えば、図5の例では、ライブラリ「L123」には2つの子ライブラリ「L911」と「L912」が含まれるので、これら2つの子ライブラリに関する単体評価による評価値のうち値が最も大きい評価値が特定される。
図6の例では、評価値A13、B13、C13、A14、B14、C14のうち評価値A13の値が最大であれば、当該評価値A13が特定される。リスク評価値生成部212は、当該特定された評価値に対応するライブラリ(子ライブラリ)を評価対象ライブラリ(親ライブラリ)のリスク要因として取り扱う。上記の例では、評価値A13に対応するライブラリ「L911」がリスク要因として扱われる。
このように、リスク評価値生成部212は、ライブラリ間に依存関係が認められれば、従属ライブラリを親ライブラリのリスク要因として抽出する。ライブラリ単体評価及び依存関係に基づくリスク要因の特定が終了すると、リスク評価値生成部212は、上記単体評価及びリスク要因をまとめ「ライブラリ評価結果」を生成する。例えば、リスク評価値生成部212は、図7に示すようなライブラリ評価結果を生成する。
図3に説明を戻す。ライブラリ影響度算出部213は、ソースコードに含まれる各ライブラリがソースコード全体(プロジェクト全体)に与える影響を示す影響度を算出する手段である。
例えば、ライブラリ影響度算出部213は、ソースコードに含まれるライブラリごとに、ライブラリを呼び出している関数の数を計数する。図4の例では、ライブラリ「L123」に関しては、FunctionAで2回(7、8行目)、FunctionBで1回(10行目)呼び出されているので、ライブラリ「L123」を呼び出す関数の数は「2」となる。ライブラリ「L345」に関しては、FunctionBで1回(11行目)呼び出されているので、ライブラリ「L123」を呼び出す関数の数は「1」となる。
ライブラリ影響度算出部213は、各ライブラリを呼び出している関数の数を「ライブラリ影響度」として算出する。
ライブラリ影響度算出部213は、ソースコードに含まれる関数の依存関係を考慮してライブラリ影響度を算出してもよい。例えば、ライブラリAを呼び出す関数Aが存在し、当該関数Aをさらに呼び出す関数B~Fがソースコードに記載されている場合を考える。この場合、ライブラリAを直接呼び出す関数の数は「1」であるが、5つの関数B~FもライブラリAを間接的に呼び出すので、ライブラリAの影響度が「6=(1+5)」と算出されてもよい。即ち、ライブラリ影響度算出部213は、ライブラリを直接呼び出している関数の数と当該ライブラリを間接的に呼び出している関数の数に基づきライブラリ影響度を算出してもよい。
なお、ソースコードによっては関数が再帰的に呼び出されることがある。このように再帰的に呼び出される関数で使用されるライブラリに関しては、ライブラリ影響度算出部213は、当該ライブラリの影響度に極めて大きな値を与えてもよい。
あるいは、ライブラリ影響度算出部213は、各ライブラリが呼び出されている数を「ライブラリ影響度」として算出してもよい。例えば、上記の例では、ライブラリ「L123」は全体として3回呼び出されているのでライブラリ影響度が「3」、ライブラリ「L345」は全体として1回呼び出されているのでライブラリ影響度が「1」となる。
ライブラリ影響度算出部213は、各ライブラリを呼び出す関数の数、及び、各ライブラリが呼び出されている数のいずれかを使用してライブラリ影響度を算出してもよいし、これらの情報を用いてライブラリ影響度を算出してもよい。例えば、ライブラリ影響度算出部213は、上記関数の数と呼び出し回数の平均(例えば、相加平均、相乗平均、加重平均)を計算し、当該計算された平均値をライブラリ影響度として算出してもよい。
ライブラリ影響度算出部213は、ソースコードに含まれる各ライブラリについてライブラリ影響度を算出する(図8参照)。
ライブラリ情報生成部202は、リスク評価値生成部212が生成したライブラリ評価結果とライブラリ影響度算出部213が算出したライブラリ影響度を結合し、「ライブラリ評価情報」を生成する(図9参照)。
リスク情報出力部203は、ライブラリの評価値に基づき、当該ライブラリの危険度を算出し、算出された危険度に基づきソースコードに内在するリスクを示すリスク値を算出する手段である。さらに、リスク情報出力部203は、当該算出されたリスク値の時系列データを出力する。即ち、リスク情報出力部203は、ライブラリ情報生成部202が生成したライブラリ評価情報に基づき、評価対象となるソースコードに関するリスク情報を生成し、出力する。
具体的には、リスク情報出力部203は、管理者等から指定された項目のリスク情報を生成する。リスク情報出力部203は、上記生成するリスク情報を入力するためのGUIを生成し、液晶モニタ等に表示する。
例えば、生成するリスク情報として、ソースコード全体(プロジェクト全体)のリスクが例示される。この場合、リスク情報出力部203は、評価対象ソースコードに含まれる各ライブラリについて危険度を算出し、当該算出された危険度の合計値をソースコード全体のリスク値とする。
例えば、リスク情報出力部203は、各ライブラリについての単体評価値(静的評価値、動的評価値、実体評価値)の合計を各ライブラリの危険度として算出する。図9の例では、ライブラリ「L123」について「A11+B11+C11」が当該ライブラリの危険度として算出される。同様に、ライブラリ「L345」について「A12+B12+C12」が当該ライブラリの危険度として算出される。このように、リスク情報出力部203は、異なる情報ごとに生成された評価値(静的評価値、動的評価値、実体評価値)の合計値を各ライブラリの危険度として算出する。
リスク情報出力部203は、各ライブラリの危険度を合算し、アプリケーションプログラム全体のリスク値として算出する。上記の例では、「A11+B11+C11+A12+B12+C12+A13・・・」がソースコード全体のリスク値として算出される。
リスク情報出力部203は、各ライブラリの危険度を算出する際、リスク要因やライブラリ影響度を反映してもよい。例えば、リスク要因を反映する場合には、リスク情報出力部203は、上記単体評価値の合計にリスク要因の評価値を加算する。上記の例では、ライブラリ「L123」について「A11+B11+C11+A13」が当該ライブラリの危険度として算出される。
ライブラリ影響度を反映する場合には、リスク情報出力部203は、上記単体評価値の合計値に対応するライブラリ影響度を乗算する。例えば、ライブラリ「L123」について「(A11+B11+C11)×E11」が当該ライブラリの危険度として算出される。あるいは、リスク要因も反映され、ライブラリ「L123」について「(A11+B11+C11+A13)×E11」が当該ライブラリの危険度として算出されてもよい。
リスク情報出力部203は、生成したリスク情報(リスク値)をその生成時刻と共に記憶部204に格納する。例えば、図10に示すようなリスク値の時系列データ(リスク値の履歴)が記憶部204に格納される。
リスク情報出力部203は、記憶部204に格納された最新のリスク値(現在のリスク値)を表示してもよい。あるいは、リスク情報出力部203は、記憶部204に格納された時系列データからリスク値の時間推移を示すグラフ(図10に示すようなグラフ)生成し、当該生成されたグラフを表示してもよい。
例えば、リスク情報出力部203は、図11に示すような表示を行う。図11では、ソースコード全体のリスク値に関する時系列データが表示されている。図11に示すように、リスク情報出力部203は、ソースコードに含まれるライブラリについて算出された危険度の合計値をソースコード全体のリスク値として算出し、当該算出されたソースコード全体のリスク値の時系列データを表示してもよい。
図11に示すようなリスク情報に接した管理者は、プロジェクトの運用開始時に比べ、現状のリスクが上昇していることを認識する。なお、図11では、リスク値が折れ線グラフの形式で表示されているが、棒グラフ等の他の形状によりリスク値が表示されてもよい。
リスク情報出力部203は、個別のライブラリに関するリスク情報を生成してもよい。例えば、管理者は、リスクを評価したいライブラリを、GUIを用いて指定する。リスク情報出力部203は、指定されたライブラリの単体評価値を合計し危険度を計算する。
リスク情報出力部203は、当該計算された危険度をリスク情報(リスク値)として表示する。例えば、リスク情報出力部203は、図12に示すような表示をしてもよい。図11及び図12に示すように、リスク情報出力部203は、リスク値の時系列データを表示する項目(プロジェクト全体、個別ライブラリ)を切り替えるGUIを生成してもよい。
リスク情報出力部203は、各ライブラリの単体評価に関する個別データ(静的評価値、動的評価値、実体評価値)を表示してもよい。例えば、リスク情報出力部203は、図13に示すような表示をしてもよい。
図13Aでは、ライブラリ「L123」の単体評価により得られる3つの評価値(各評価値の時系列データ)が同時に表示されている。図13Bでは、ライブラリ「L123」の単体評価を構成する3つの評価値のうち動的評価値に関する時系列データが表示されている。あるいは、単体評価により得られる3つの評価値のうち2つが選択され、表示されてもよい。
リスク情報出力部203は、各ライブラリのリスク値の一覧を表示してもよい。例えば、リスク情報出力部203は、図14Aに示すように、ライブラリと当該ライブラリのリスク値の一覧を表示してもよい。
リスク情報出力部203は、図14Bに示すように、リスク値に対して閾値処理を実行し、その結果の一覧を表示してもよい。
リスク情報出力部203は、リスク値の内訳を表示してもよいし、当該内訳を時系列データの付随情報として表示してもよい。例えば、リスク情報出力部203は、図15に示すように、指定された時刻における単体評価の内訳を表示してもよい。
リスク情報出力部203は、ライブラリ構成情報(図5参照)に基づき、ライブラリ間の依存関係(従属関係)を表示してもよい。例えば、リスク情報出力部203は、図16に示すような表示をしてもよい。
リスク情報出力部203は、単体評価の基礎となった情報(例えば、メタデータ)を表示してもよい。例えば、リスク情報出力部203は、図17に示すような情報を表示してもよい。
第1の実施形態に係る評価装置10の動作をまとめると図18に示すフローチャートのとおりとなる。
評価装置10は、評価対象となるソースコードを取得する(ステップS101)。
評価装置10は、ソースコードに記載されたライブラリを抽出する(ステップS102)。
評価装置10は、当該抽出されたライブラリの単体評価を実施する(ステップS103)。
評価装置10は、上記抽出されたライブラリに関する影響度(ライブラリ影響度)を算出する(ステップS104)。
評価装置10は、ライブラリ評価情報に基づきリスク情報を生成し、出力する(ステップS105)。
なお、評価装置10を用いたソースコードのリスク評価は、定期的又は所定のタイミングで実施され、その評価結果が履歴情報として記憶部204に格納される。例えば、あるプロジェクトのソースコードがリリースされるタイミング等に上記リスク評価が実行される。
以上のように、第1の実施形態に係る評価装置10は、ソースコードに記載された各ライブラリの単体評価を実施し、当該評価に基づきソースコードのリスク変化を管理者等に提示する。当該提示されたリスク変化に接した管理者は、プロジェクト(アプリケーション)のリスクが許容できるのか否か等を判断することができる。また、評価装置10は、ソースコードに記載された各ライブラリについてそのリスク変化を算出し、管理者等に提供できる。その結果、管理者等は、いずれのライブラリに関するリスクが大きく変化した等の情報を正確に得ることができる。
また、評価装置10は、ソースコードを取得するたびに、ライブラリの評価を行うので、ライブラリのバージョン違い等により生じる潜在的なリスクを明らかにすることができる。例えば、運用開始時に使用されているライブラリのバージョンが進んでいるにも関わらず、評価対象のソースコードに記載されたライブラリのバージョンが運用開始時と同じであると言った状況が起こりうる。この場合、評価装置10によるライブラリ単体評価のうち、動的評価(メタデータを用いた評価)の結果が悪化し、リスク値が上昇する。評価装置10は、このようなライブラリのバージョンアップが放置されたような状況を検出し、当該放置により生じるリスクを管理者等に通知する。
また、評価装置10は、ソースコードを取得するたびに、当該ソースコードを走査し、当該ソースコードに含まれるライブラリの影響度を算出するので、ライブラリを使用する側の変化により生じるリスクも明らかにすることができる。例えば、運用開始時にライブラリAが1つの関数により呼び出され、評価時には当該ライブラリAが3つの関数により呼び出されるような改訂が行われることがある。この場合、ライブラリA自身のリスク値は変化していなくとも、ライブラリAがソースコード(プロジェクト)全体に与える影響度は増加(上記の例では3倍)している。評価装置10は、ライブラリがソースコード全体に与える影響も考慮しつつ、リスク値を算出するので上記ライブラリを使用する側の変化により生じるリスク値を算出できる。
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
第1の実施形態では、評価装置10がリスク情報を管理者等に提供し、当該リスク情報に接した管理者が、ソースコード(ソースコード全体、各ライブラリ)のリスクを判断している。第2の実施形態では、評価装置10が、ソースコードのリスクを自動的に判断し、その判断結果を管理者等に提示する場合について説明する。
図19は、第2の実施形態に係る評価装置10の処理構成(処理モジュール)の一例を示す図である。図3及び図19を参照すると、第1の実施形態に係る評価装置10に対してリスク通知部205が追加されている。
以下、第1及び第2の実施形態の相違点を中心に説明する。
リスク通知部205は、算出されたリスク値が所定の条件を満たす場合に、ソースコードにリスクが含まれる旨を外部に通知する手段である。具体的には、リスク通知部205は、管理者に通知する必要のあるリスクがソースコードに認められればその旨を通知する。
例えば、リスク通知部205は、リスク情報出力部203が生成したリスク値(アプリケーションプログラムのリスク値、個別のライブラリに関するリスク値)に対して閾値処理を実行する。リスク通知部205は、リスク値が所定の閾値以上であれば、「ソースコードにリスクあり」を管理者等に通知する。具体的には、リスク通知部205は、図20に示すような表示を行う。
リスク通知部205は、特定のライブラリについてのリスク値が閾値よりも高い場合には、その旨を管理者等に通知してもよい。例えば、リスク通知部205は、図21に示すような表示を行う。
リスク通知部205は、運用開始時と現時点におけるリスク上昇率を計算し、当該計算されたリスク上昇率に応じた通知をしてもよい。当該リスク上昇率の計算は、アプリケーションプログラム全体に関してでもよいし、個別のライブラリに関してでもよい。
リスク通知部205は、ライブラリの単体評価を構成する評価値(静的評価値、動的評価値、実体評価値)それぞれについてリスク上昇率を計算してもよい。例えば、リスク通知部205は、特定のライブラリに関する動的評価値が運用開始時と比較して極端に上昇していればその旨を管理者等に通知する。この場合、リスク通知部205は、図22に示すような表示を行ってもよい。図22には、ライブラリ「L123」の動的評価値が上昇している旨と、運用開始時及び現在時刻を含む動的評価値の時系列データが表示されている。
以上のように、第2の実施形態に係る評価装置10は、ソースコードが持つリスクの変動を検出し、当該リスクの変動を管理者等に通知する必要がある場合には、その旨を管理者等に通知する。その結果、管理者等は、ソースコードに記載されたライブラリのリスク変化を網羅的に確認する必要がなく、重大なリスクを見落とすことが防止できる。
続いて、評価装置10のハードウェアについて説明する。図23は、評価装置10のハードウェア構成の一例を示す図である。
評価装置10は、情報処理装置(所謂、コンピュータ)により構成可能であり、図23に例示する構成を備える。例えば、評価装置10は、プロセッサ311、メモリ312、入出力インターフェイス313及び通信インターフェイス314等を備える。上記プロセッサ311等の構成要素は内部バス等により接続され、相互に通信可能に構成されている。
但し、図23に示す構成は、評価装置10のハードウェア構成を限定する趣旨ではない。評価装置10は、図示しないハードウェアを含んでもよいし、必要に応じて入出力インターフェイス313を備えていなくともよい。また、評価装置10に含まれるプロセッサ311等の数も図23の例示に限定する趣旨ではなく、例えば、複数のプロセッサ311が評価装置10に含まれていてもよい。
プロセッサ311は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)等のプログラマブルなデバイスである。あるいは、プロセッサ311は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等のデバイスであってもよい。プロセッサ311は、オペレーティングシステム(OS;Operating System)を含む各種プログラムを実行する。
メモリ312は、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)等である。メモリ312は、OSプログラム、アプリケーションプログラム、各種データを格納する。
入出力インターフェイス313は、図示しない表示装置や入力装置のインターフェイスである。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
通信インターフェイス314は、他の装置と通信を行う回路、モジュール等である。例えば、通信インターフェイス314は、NIC(Network Interface Card)等を備える。
評価装置10の機能は、各種処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ312に格納されたプログラムをプロセッサ311が実行することで実現される。また、当該プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transitory)なものとすることができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。また、上記プログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。
[変形例]
なお、上記実施形態にて説明した評価装置10の構成、動作等は例示であって、当該装置の構成等を限定する趣旨ではない。例えば、上記説明した評価装置10の機能が異なる装置により実現されてもよい。具体的には、ライブラリ情報生成部202とリスク情報出力部203の機能が異なる装置に実装されていてもよい。
上記実施形態では、リスク評価値生成部212がソースコードを走査し、その記載内容を解析する「静的コード解析」により単体評価を行うことを説明した。しかし、評価対象のソースコードから生成された実行ファイルを実行し、評価対象のソースコードを解析する「動的プログラム解析」が実行されてもよい。例えば、各ライブラリが呼び出されるごとにフラグを立てるようなテストプログラムを用意し、単位時間あたりに呼び出されるライブラリの回数を評価値としてもよい。
上記実施形態では、ソースコードに記載されたライブラリの観点(視点)から上記ソースコードのリスクを評価しているが、上記ソースコード自身の評価結果を加味して当該ソースコードのリスクを評価してもよい。例えば、ライブラリのコード解析(ライン数、複雑度等を用いた解析)と同様の解析をソースコードに対して実行し、その結果がソースコード全体のリスク値に反映されてもよい。
上記実施形態では、ライブラリの危険度を算出する際、ライブラリの単体評価(静的評価値、動的評価値、実体評価値)の加算を行うことを説明した。しかし、当該危険度を算出する際、各項目に予め与えられた重みを用いた加重平均により危険度が算出されてもよい。例えば、上記3つの評価値のうち、動的評価値を重要視するような重みを決定し、ライブラリの危険度が算出されてもよい。
上記3つの評価値(静的評価値、動的評価値、実体評価値)を算出する際、全部又は一部に関して機械学習の手法が適用されてもよい。例えば、ソースコードを用いた実体評価値の算出では、脆弱性が少ない優良なライブラリのソースコードを多数収集し、当該収集したソースコードに高い評価を与えるラベルを付して教師データとして用意する。当該教師データを用いて学習モデルが生成され、当該学習モデルに評価対象のライブラリのソースコードを入力することで、教師データとの差分がスコアとして出力される。当該学習モデルにより出力されたスコアが実体評価値として扱われてもよい。
上記実施形態では、親ライブラリの評価に子ライブラリの評価値をリスク要因として含ませる場合を説明した。親ライブラリの評価に子ライブラリ、孫ライブラリの評価値を含ませてもよい。この場合、リスク評価値生成部212は、図24に示すようなライブラリ評価結果を生成する。図24では、親ライブラリ「L123」の子ライブラリ「L911」が第1のリスク要因として抽出され、孫ライブラリ「L811」が第2のリスク要因として抽出されている。なお、当該リスク要因の抽出は上記説明した内容と同一とすることができるので説明を省略する。
上記説明した評価装置10は、複数のプロジェクトに関するソースコードを取り扱う。そのため、プロジェクトは異なるが使用されているライブラリは共通しているという状況が起こりうる。その場合、評価装置10は、既に単体評価が終了しているライブラリと同じライブラリが他のプロジェクト(ソースコード)で使用されている場合には、当該ライブラリの単体評価の結果を再利用してもよい。
コンピュータの記憶部に評価プログラムをインストールすることにより、コンピュータを評価装置として機能させることができる。また、評価プログラムをコンピュータに実行させることにより、コンピュータにより評価方法を実行することができる。
また、上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成する、生成部(101、212)と、
少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する、出力部(102、203)と、
を備える、評価装置(10、100)。
[付記2]
前記生成部(101、212)は、前記ソースコードに前記第1のライブラリから呼び出される第2のライブラリが含まれる場合には、前記第2のライブラリのリスクに関する評価値を生成し、
前記出力部(102、203)は、前記第1のライブラリの危険度に前記第2のライブラリの評価値を反映する、付記1に記載の評価装置(10、100)。
[付記3]
前記第1のライブラリが前記ソースコードの全体に与える影響を示す影響度を算出する、算出部(213)をさらに備え、
前記出力部(102、203)は、前記算出された影響度を前記第1のライブラリの危険度に反映する、付記2に記載の評価装置(10、100)。
[付記4]
前記生成部(101、212)は、前記第1のライブラリを互いに性質の異なる情報に基づき評価し、前記異なる情報ごとに評価値を生成する、付記3に記載の評価装置(10、100)。
[付記5]
前記出力部(102、203)は、前記異なる情報ごとに生成された評価値の合計値を前記第1のライブラリの危険度として算出する、付記4に記載の評価装置(10、100)。
[付記6]
前記出力部(102、203)は、前記第2のライブラリに関して生成された前記異なる情報ごとの評価値のうち値の最も大きい評価値を特定し、前記第1のライブラリに関して生成された評価値の合計値に前記特定された評価値を加算することで、前記第1のライブラリの危険度を算出する、付記5に記載の評価装置(10、100)。
[付記7]
前記出力部(102、203)は、前記評価値の合計値に前記影響度を乗算することで、前記第1のライブラリの危険度を算出する、付記5又は6に記載の評価装置(10、100)。
[付記8]
前記生成部(101、212)は、前記第1のライブラリに関する静的な情報に基づき静的評価値を生成し、前記第1のライブラリに関する動的な情報に基づき動的評価値を生成し、前記第1のライブラリのソースコードに基づき実体評価値を生成する、付記4乃至7のいずれか一つに記載の評価装置(10、100)。
[付記9]
前記出力部(102、203)は、前記ソースコードに含まれるライブラリについて算出された危険度の合計値を前記ソースコード全体のリスク値として算出し、前記算出されたソースコード全体のリスク値の時系列データを表示する、付記1乃至7のいずれか一つに記載の評価装置(10、100)。
[付記10]
前記出力部(102、203)は、前記第1のライブラリの危険度の時系列データを表示する、付記9に記載の評価装置(10、100)。
[付記11]
前記出力部(102、203)は、リスク値の時系列データを表示する項目を切り替えるためのGUI(Graphical User Interface)を生成する、付記10に記載の評価装置(10、100)。
[付記12]
前記算出されたリスク値が所定の条件を満たす場合に、前記ソースコードにリスクが含まれる旨を外部に通知する、通知部をさらに備える、付記1乃至11のいずれか一つに記載の評価装置(10、100)。
[付記13]
評価装置(10、100)において、
ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成するステップと、
少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力するステップと、
を含む評価方法。
[付記14]
評価装置(10、100)に搭載されたコンピュータ(311)に、
ソースコードに記載された、第1のライブラリのリスクに関する評価値を生成する処理と、
少なくとも前記生成された評価値に基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する処理と、
を実行させるプログラム。
なお、付記13の形態及び付記14の形態は、付記1の形態と同様に、付記2の形態~付記12の形態に展開することが可能である。
なお、引用した上記の先行技術文献の各開示は、本書に引用をもって繰り込むものとする。以上、本発明の実施形態を説明したが、本発明はこれらの実施形態に限定されるものではない。これらの実施形態は例示にすぎないということ、及び、本発明のスコープ及び精神から逸脱することなく様々な変形が可能であるということは、当業者に理解されるであろう。
10、100 評価装置
101 生成部
102 出力部
201 ソースコード取得部
202 ライブラリ情報生成部
203 リスク情報出力部
204 記憶部
205 リスク通知部
211 ライブラリ抽出部
212 リスク評価値生成部
213 ライブラリ影響度算出部
311 プロセッサ
312 メモリ
313 入出力インターフェイス
314 通信インターフェイス

Claims (9)

  1. ソースコードに記載された第1のライブラリについての互いに性質が異なる情報に基づいて、前記第1のライブラリのリスクに関する評価値を生成する、生成手段と、
    前記第1のライブラリが前記ソースコードの全体に与える影響を示す影響度を算出する、算出手段と、
    前記異なる情報ごとに生成された評価値の合計値と前記算出された影響度とに基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する、出力手段と、
    を備え
    前記生成手段は、前記ソースコードに前記第1のライブラリから呼び出される第2のライブラリが含まれる場合には、前記第2のライブラリについての互いに性質が異なる情報に基づいて、前記第2のライブラリのリスクに関する評価値を生成し、
    前記出力手段は、前記第2のライブラリに関して生成された前記異なる情報ごとの評価値のうち値の最も大きい評価値を特定し、前記第1のライブラリに関して生成された評価値の合計値に前記特定された評価値を加算することで、前記第1のライブラリの危険度を算出する、評価装置。
  2. 前記出力手段は、前記評価値の合計値に前記影響度を乗算することで、前記第1のライブラリの危険度を算出する、請求項に記載の評価装置。
  3. 前記生成手段は、前記第1のライブラリに関する静的な情報に基づき静的評価値を生成し、前記第1のライブラリに関する動的な情報に基づき動的評価値を生成し、前記第1のライブラリのソースコードに基づき実体評価値を生成する、請求項1または2に記載の評価装置。
  4. 前記出力手段は、前記ソースコードに含まれるライブラリについて算出された危険度の合計値を前記ソースコード全体のリスク値として算出し、前記算出されたソースコード全体のリスク値の時系列データを表示する、請求項1乃至3のいずれか一項に記載の評価装置。
  5. 前記出力手段は、前記第1のライブラリの危険度の時系列データを表示する、請求項に記載の評価装置。
  6. 前記出力手段は、リスク値の時系列データを表示する項目を切り替えるためのGUI(Graphical User Interface)を生成する、請求項に記載の評価装置。
  7. 前記算出されたリスク値が所定の条件を満たす場合に、前記ソースコードにリスクが含まれる旨を外部に通知する、通知手段をさらに備える、請求項1乃至6のいずれか一項に記載の評価装置。
  8. 評価装置において、
    ソースコードに記載された第1のライブラリについての互いに性質が異なる情報に基づいて、前記第1のライブラリのリスクに関する評価値を生成するステップと、
    前記第1のライブラリが前記ソースコードの全体に与える影響を示す影響度を算出するステップと、
    前記異なる情報ごとに生成された評価値の合計値と前記算出された影響度とに基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力するステップと、
    を含み、
    前記生成するステップでは、前記ソースコードに前記第1のライブラリから呼び出される第2のライブラリが含まれる場合には、前記第2のライブラリについての互いに性質が異なる情報に基づいて、前記第2のライブラリのリスクに関する評価値を生成し、
    前記出力するステップでは、前記第2のライブラリに関して生成された前記異なる情報ごとの評価値のうち値の最も大きい評価値を特定し、前記第1のライブラリに関して生成された評価値の合計値に前記特定された評価値を加算することで、前記第1のライブラリの危険度を算出する、評価方法。
  9. 評価装置に搭載されたコンピュータに、
    ソースコードに記載された第1のライブラリのリスクについての互いに性質が異なる情報に基づいて、前記第1のライブラリに関する評価値を生成する処理と、
    前記第1のライブラリが前記ソースコードの全体に与える影響を示す影響度を算出する処理と、
    前記異なる情報ごとに生成された評価値の合計値と前記算出された影響度とに基づき、前記第1のライブラリの危険度を算出し、前記算出された危険度に基づき前記ソースコードに内在するリスクを示すリスク値を算出すると共に、前記算出されたリスク値の時系列データを出力する処理と、
    を実行させ
    前記生成する処理では、前記ソースコードに前記第1のライブラリから呼び出される第2のライブラリが含まれる場合には、前記第2のライブラリについての互いに性質が異なる情報に基づいて、前記第2のライブラリのリスクに関する評価値を生成し、
    前記出力する処理では、前記第2のライブラリに関して生成された前記異なる情報ごとの評価値のうち値の最も大きい評価値を特定し、前記第1のライブラリに関して生成された評価値の合計値に前記特定された評価値を加算することで、前記第1のライブラリの危険度を算出する、プログラム。
JP2021553261A 2019-10-25 2019-10-25 評価装置、評価方法及びプログラム Active JP7322963B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2019/041929 WO2021079496A1 (ja) 2019-10-25 2019-10-25 評価装置、評価方法及びプログラム

Publications (3)

Publication Number Publication Date
JPWO2021079496A1 JPWO2021079496A1 (ja) 2021-04-29
JPWO2021079496A5 JPWO2021079496A5 (ja) 2022-06-24
JP7322963B2 true JP7322963B2 (ja) 2023-08-08

Family

ID=75619722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021553261A Active JP7322963B2 (ja) 2019-10-25 2019-10-25 評価装置、評価方法及びプログラム

Country Status (3)

Country Link
US (1) US20220391516A1 (ja)
JP (1) JP7322963B2 (ja)
WO (1) WO2021079496A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022269656A1 (ja) * 2021-06-21 2022-12-29 三菱電機株式会社 機械学習装置、深刻度予知装置、および機械学習方法
WO2023139822A1 (ja) * 2022-01-18 2023-07-27 三菱電機株式会社 アーキテクチャ寿命推定装置及びアーキテクチャ寿命推定方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001184441A (ja) 1999-12-27 2001-07-06 Nec Corp 診療録装置
JP2010191922A (ja) 2009-02-20 2010-09-02 Mitsubishi Electric Corp 履歴追跡結果出力装置及び履歴追跡結果出力プログラム及び記録媒体
US20150007330A1 (en) 2013-06-26 2015-01-01 Sap Ag Scoring security risks of web browser extensions
US20150268948A1 (en) 2014-03-18 2015-09-24 Henrik Plate Software dependency management through declarative constraints
US20180349614A1 (en) 2017-05-31 2018-12-06 ShiftLeft Inc System and method for application security profiling
US20190227902A1 (en) 2018-01-21 2019-07-25 Microsoft Technology Licensing, Llc. Time-weighted risky code prediction

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001184441A (ja) 1999-12-27 2001-07-06 Nec Corp 診療録装置
JP2010191922A (ja) 2009-02-20 2010-09-02 Mitsubishi Electric Corp 履歴追跡結果出力装置及び履歴追跡結果出力プログラム及び記録媒体
US20150007330A1 (en) 2013-06-26 2015-01-01 Sap Ag Scoring security risks of web browser extensions
US20150268948A1 (en) 2014-03-18 2015-09-24 Henrik Plate Software dependency management through declarative constraints
US20180349614A1 (en) 2017-05-31 2018-12-06 ShiftLeft Inc System and method for application security profiling
US20190227902A1 (en) 2018-01-21 2019-07-25 Microsoft Technology Licensing, Llc. Time-weighted risky code prediction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
OSSリスク管理ツール Checkmarx CxOSA,Prometech Simulation Conference 2018,2018年12月13日,pp.1-2

Also Published As

Publication number Publication date
JPWO2021079496A1 (ja) 2021-04-29
US20220391516A1 (en) 2022-12-08
WO2021079496A1 (ja) 2021-04-29

Similar Documents

Publication Publication Date Title
Yan et al. The current status of accessibility in mobile apps
Wong et al. A survey on software fault localization
Neuhaus et al. Predicting vulnerable software components
Nadi et al. Mining configuration constraints: Static analyses and empirical results
Ross et al. Epidemiology as a framework for large-scale mobile application accessibility assessment
Cohen et al. Constructing interaction test suites for highly-configurable systems in the presence of constraints: A greedy approach
Von Rhein et al. Presence-condition simplification in highly configurable systems
US9594665B2 (en) Regression evaluation using behavior models of software applications
Shang et al. Automated detection of performance regressions using regression models on clustered performance counters
US9329980B2 (en) Security alerting using n-gram analysis of program execution data
Rahman et al. Gang of eight: A defect taxonomy for infrastructure as code scripts
Bacchelli et al. Are popular classes more defect prone?
Smidts et al. Software testing with an operational profile: OP definition
CN111507086B (zh) 本地化应用程序中翻译文本位置的自动发现
Qin et al. Testmig: Migrating gui test cases from ios to android
Avgustinov et al. Tracking static analysis violations over time to capture developer characteristics
JP7322963B2 (ja) 評価装置、評価方法及びプログラム
Andrés et al. Formal passive testing of timed systems: Theory and tools
US11853746B2 (en) Source code merge conflict resolution
Aalst Big software on the run: in vivo software analytics based on process mining (keynote)
Syer et al. Replicating and re-evaluating the theory of relative defect-proneness
CN109344017A (zh) 一种基于机器学习预测内存故障的方法,设备及可读存储介质
Raja All complaints are not created equal: text analysis of open source software defect reports
Henderson et al. Sampling code clones from program dependence graphs with GRAPLE
Dou et al. Model-driven trace diagnostics for pattern-based temporal specifications

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220418

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230710

R151 Written notification of patent or utility model registration

Ref document number: 7322963

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151