JP2013134573A - Software correction device, software correction system, software correction method and software correction program - Google Patents
Software correction device, software correction system, software correction method and software correction program Download PDFInfo
- Publication number
- JP2013134573A JP2013134573A JP2011283716A JP2011283716A JP2013134573A JP 2013134573 A JP2013134573 A JP 2013134573A JP 2011283716 A JP2011283716 A JP 2011283716A JP 2011283716 A JP2011283716 A JP 2011283716A JP 2013134573 A JP2013134573 A JP 2013134573A
- Authority
- JP
- Japan
- Prior art keywords
- correction
- information
- record
- software
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 25
- 238000012937 correction Methods 0.000 claims abstract description 201
- 238000012545 processing Methods 0.000 claims description 16
- 230000004048 modification Effects 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 5
- 238000003780 insertion Methods 0.000 claims 3
- 230000037431 insertion Effects 0.000 claims 3
- 238000012795 verification Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 29
- 238000002347 injection Methods 0.000 description 8
- 239000007924 injection Substances 0.000 description 8
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000011012 sanitization Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 1
- 238000012038 vulnerability analysis Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
本願発明は、ソフトウェアのセキュリティ脆弱性を含む問題を解消するためのソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラムに関する。 The present invention relates to a software correction apparatus, a software correction system, a software correction method, and a software correction program for solving problems including software security vulnerabilities.
IT環境が高度に発達した現代社会においては、システムの中で使用されているソフトウェアに存在する様々な問題を、迅速に解消することが必要不可欠になってきている。特に最近は、サイバー攻撃をはじめとするコンピュータ犯罪等による影響が深刻化しており、ソフトウェアのセキュリティ脆弱性を可能な限り小さくすることの重要性がますます高まってきている。 In the modern society where the IT environment is highly developed, it is indispensable to quickly solve various problems existing in the software used in the system. Particularly recently, the effects of cyber attacks and other computer crimes have become more serious, and it is becoming increasingly important to make software security vulnerabilities as small as possible.
セキュリティ脆弱性の例としては、ソフトウェアが外部からの入力データを誤処理することで生じるバッファオーバーフローがある。また、入力データを誤処理、あるいは未処理のまま他のソフトウェアに出力することで生じるクロスサイトスクリプティングやSQLインジェクションなどもある。 An example of a security vulnerability is a buffer overflow that occurs when software misprocesses input data from the outside. There are also cross-site scripting and SQL injection that occur when input data is erroneously processed or output to other software without processing.
このようなセキュリティ脆弱性を排除するための技術として、特許文献1には、ソフトウェアのソースコードのセキュリティ脆弱性検査において、構文解析の解析木を構築することで、脆弱性を有する部分を精度よく検出するための装置が公開されている。
As a technique for eliminating such security vulnerabilities,
また、特許文献2には、脆弱なライブラリを全て検出するのではなく、適切に用いられていない箇所のみを検出することで、脆弱性検出の制度を向上させるプログラムが公開されている。
Further,
前述の特許文献1や特許文献2に記載された技術では、セキュリティ脆弱性の検出結果に対して、ソフトウェアのソースコードをどのように修正したらよいかまでは提示されず、修正内容の検討はソフトウェア開発者に委ねられる。
In the techniques described in
したがって、特にセキュリティ領域に精通していないソフトウェア開発者がソースコードの修正を行う場合は、修正対応完了まで多くの時間を要するという問題がある。 Therefore, when a software developer who is not familiar with the security area makes corrections to the source code, there is a problem that it takes a long time to complete the correction.
本願発明の目的は、これらの問題点を解決したソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラムを提供することである。 An object of the present invention is to provide a software correction apparatus, a software correction system, a software correction method, and a software correction program that solve these problems.
本願発明の一実施形態のソフトウェア修正装置は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納手段と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、を備える。 A software correction apparatus according to an embodiment of the present invention includes a problem type including a problem type including a name of an illegal function having a problem included in a software source code and an argument name of the incorrect function related to the problem. A problem information storage means for storing; a problem record; a correction record in which a correction general-purpose code including an argument name for correcting the problem is associated; a correction information storage means for storing; a problem information record; Search for the correction information record that matches the problem type, and replace the argument name in the correction general-purpose code in the searched correction record with the argument name in the searched problem information record. Correction candidate generation means for generating a correction actual code.
本願発明の一実施形態のソフトウェア修正方法は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納し、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納し、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する。 A software correction method according to an embodiment of the present invention includes: a problem type including a name of an illegal function in which a problem included in a software source code exists; and a problem information record including an argument name of the illegal function related to the problem. Storing and storing the problem type and a correction record in which a correction general-purpose code including an argument name is associated to correct the problem, and the problem information record and the problem type match. A record is searched, and the argument name in the correction general-purpose code in the searched correction record is replaced with the argument name in the searched problem information record to generate a correction actual code.
本願発明の一実施形態のソフトウェア修正プログラムは、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納処理と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納処理と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、をコンピュータに実行させる。 A software correction program according to an embodiment of the present invention includes a problem type including a problem type including a name of an illegal function having a problem included in a software source code and an argument name of the incorrect function related to the problem. A problem information storage process for storing; a problem record; a modification record in which a modification general-purpose code including an argument name for correcting the problem is associated; a modification information storage process for storing; a problem information record; Search for the correction information record that matches the problem type, and replace the argument name in the correction general-purpose code in the searched correction record with the argument name in the searched problem information record. Then, a correction candidate generation process for generating a correction actual code is executed by the computer.
本願発明は、ソフトウェアのセキュリティ脆弱性等の問題を解消するソースファイル修正コードの候補を自動生成することを実現する。 The present invention realizes automatic generation of source file correction code candidates that solve problems such as software security vulnerabilities.
本願発明の第一の実施の形態について図面を参照して詳細に説明する。 A first embodiment of the present invention will be described in detail with reference to the drawings.
図1はセキュリティ脆弱性修正装置10と、オリジナルソースファイル11と、セキュリティ脆弱性検証ツール12と、検証ツール検証結果13と、修正後ソースファイル14と、ユーザコンソール15とから構成されたセキュリティ脆弱性修正システムの構成を示す。
FIG. 1 shows a security vulnerability composed of a security
オリジナルソースファイル11は、セキュリティ脆弱性の検証、修正の対象であるソフトウェアのソースファイルであり、その2つの例を例1(SampleXSS.java)、例2(SQLInjection.java)としてそれぞれ図3、図4に示す。例1、例2は、プログラミング言語としてJAVA(登録商標)を使用しているが、C言語やhtmlなどのその他のプログラミング言語で書かれたソースファイルでもよい。
The
例1のソースファイルの場合、24行目のリクエストパラメータから取得したデータを、そのまま26行目のsendErrorメソッドで使用しているため、クロスサイトスクリプティングの脆弱性が存在する。 In the case of the source file of Example 1, since the data acquired from the request parameter on the 24th line is used as it is in the sendError method on the 26th line, there is a cross-site scripting vulnerability.
例2のソースファイルの場合、15行目のリクエストパラメータから取得したデータをそのまま22行目のprepareStatementメソッドで使用しているため、SQLインジェクションの脆弱性が存在する。 In the case of the source file of Example 2, since the data acquired from the request parameter on the 15th line is used as it is in the prepareStatement method on the 22nd line, there is an SQL injection vulnerability.
セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析するパッケージソフトウェアであり、いくつかのツールが知られている。セキュリティ脆弱性検証ツール12が出力する検証ツール検証結果13は、図5に記載のセキュリティ脆弱性種別情報1020、セキュリティ脆弱性詳細情報1021を必ず包含する。検証ツール検証結果13は、その他に、セキュリティ脆弱性カテゴリの重要度レベル、脆弱性カテゴリの解説と対応方法の概要説明、不正データの入力から出力にいたるまでのプログラムの流れなどの様々な解析情報を包含してもよい。
The security
修正後ソースファイル14は、セキュリティ脆弱性修正装置10がオリジナルソースファイル11におけるセキュリティ脆弱性の存在する箇所のコードを修正して出力したファイルである。前記例1、例2のオリジナルソースファイル11が修正されて出力された修正後ソースファイル14を、それぞれ図8、図9に示す。
The corrected
図8に示す通り、例1のソースファイルの場合、セキュリティ脆弱性修正装置10が26行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したクロスサイトスクリプティングの脆弱性を解消する。
As shown in FIG. 8, in the case of the source file of Example 1, the security
図9に示す通り、例2のソースファイルの場合、セキュリティ脆弱性修正装置10が22行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したSQLインジェクションの脆弱性を解消する。
As shown in FIG. 9, in the case of the source file of Example 2, the security
ユーザコンソール15は、ソフトウェア開発者がセキュリティ脆弱性修正装置10を使用する時のユーザインターフェースとなる画面、キーボード、および、マウスである。
The
セキュリティ脆弱性修正装置10は、セキュリティ脆弱性検証結果情報取得部100と、セキュリティ脆弱性修正ルール格納部101と、セキュリティ脆弱性検証結果情報格納部102と、セキュリティ脆弱性修正候補提示部103と、セキュリティ脆弱性修正コード104と、セキュリティ脆弱性修正箇所105と、セキュリティ脆弱性修正内容反映部106とを備えている。
The security
セキュリティ脆弱性検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を抜き出して、セキュリティ脆弱性検証結果情報格納部102に格納する。
The security vulnerability verification result
セキュリティ脆弱性種別情報1020は、図5に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリに「Cross Site Scripting」、不正関数名に「sendError」を格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリに「SQL Injection」、不正関数名に「prepareStatement」を格納する。
As shown in FIG. 5, the security
セキュリティ脆弱性詳細情報1021は、図5に記載の通り、セキュリティ脆弱性が存在するファイル名と、そのファイルにおけるセキュリティ脆弱性が存在する箇所の行番号と、不正関数引数情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名に「SampleXSS.java」、行番号に「26」、不正関数引数情報に図5に示す情報を格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名に「SampleSQL.java」、行番号に「22」、不正関数引数情報に図5に示す情報を格納する。
As shown in FIG. 5, the security vulnerability
セキュリティ脆弱性検証結果情報格納部102は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を、セキュリティ脆弱性修正候補提示部103に出力する。
The security vulnerability verification result
セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011とを格納している。セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011は、ソフトウェア開発者がユーザコンソール15からセキュリティ脆弱性修正ルールとして登録したものである。セキュリティ脆弱性種別情報1010は、図6に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。セキュリティ脆弱性修正情報1011は、修正処理区分と修正汎用コードの情報とを包含している。修正汎用コードは、汎用的に表記された引数の記述を包含している。
The security vulnerability correction
ソフトウェア開発者は、図6に記載の通り、クロスサイトスクリプティングの脆弱性に対する脆弱性修正ルールとして、カテゴリに「Cross Site Scripting」、不正関数名に「sendError」、修正処理区分に「Insert」、修正汎用コードに図6に示すコード文を登録する。ソフトウェア開発者は、SQLインジェクションの脆弱性に対する脆弱性修正ルールとして、カテゴリに「SQL Injection」、不正関数名に「prepareStatement」、修正処理区分に「Insert」、修正汎用コードに図6に示すコード文を登録する。クロスサイトスクリプティングやSQLインジェクションのカテゴリのセキュリティ脆弱性の場合、不正関数名として登録するのは各カテゴリに1つであり、各々の不正関数に対する修正汎用コードも1つあればよい。 As shown in FIG. 6, the software developer, as described in FIG. 6, as a vulnerability correction rule for the cross-site scripting vulnerability, the category is “Cross Site Scripting”, the illegal function name is “sendError”, and the correction processing category is “Insert”, correction The code sentence shown in FIG. 6 is registered in the general-purpose code. As a vulnerability correction rule for the SQL injection vulnerability, the software developer sets the category “SQL Injection”, the illegal function name “prepareStatement”, the correction processing classification “Insert”, and the correction general-purpose code shown in FIG. Register. In the case of security vulnerabilities in the categories of cross-site scripting and SQL injection, one is registered as an invalid function name for each category, and only one modified general-purpose code for each illegal function is required.
バッファオーバーフローの脆弱性に対する脆弱性修正ルールの場合は、図6に記載の通り、不正関数名として、「strcpy」と「gets」の2つが存在し、「strcpy」の場合は、さらに修正汎用コードとして2つのものを登録する必要がある。 In the case of the vulnerability correction rule for the buffer overflow vulnerability, as shown in FIG. 6, there are two illegal function names “strcpy” and “gets”. It is necessary to register two things as
セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011を、セキュリティ脆弱性修正候補提示部103に出力する。
The security vulnerability correction
セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010が一致するレコードをサーチする。サーチの結果一致するものがある場合、セキュリティ脆弱性修正候補提示部103は、一致したレコードについて、セキュリティ脆弱性詳細情報1011における修正汎用コードの中の引数の記述を、セキュリティ脆弱性詳細情報1021における不正関数引数情報の記述に置換して修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、対応するレコードのセキュリティ脆弱性修正情報1011における修正処理区分の情報も包含している。
The security vulnerability correction
セキュリティ脆弱性修正候補提示部103は、前記の一致したレコードについて、セキュリティ脆弱性詳細情報1021のファイル名と行番号の情報を、セキュリティ脆弱性修正箇所105として出力する。
The security vulnerability correction
セキュリティ脆弱性修正候補提示部103の前記動作をオリジナルソースファイル11が例1の場合で説明する。セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリが「Cross Site Scripting」、不正関数名が「sendError」のレコードで一致する。セキュリティ脆弱性修正候補提示部103は、このレコードの不正関数引数情報の「TaintArg=name」から、修正汎用コードにおける「%TaintArg%」の表記を「name」で置換して、「Sanitizer.sanitizeHTML(name);」の修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、このレコードの修正処理区分の「Insert」の情報も包含している。
The operation of the security vulnerability correction
セキュリティ脆弱性修正候補提示部103は、前記レコードのファイル名の「SampleXSS.java」と、行番号の「26」の情報を、セキュリティ脆弱性修正箇所105として出力する。
The security vulnerability correction
オリジナルソースファイル11が例2の場合のセキュリティ脆弱性修正候補提示部103の動作も、例1の場合と同様である。例2の場合、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリが「SQL Injection」、不正関数名が「prepareStatement」のレコードで一致し、「Sanitizer.sanitizeSQL(str);」の修正実コードを生成し、修正処理区分の「Insert」の情報も包含させて、セキュリティ脆弱性修正コード104として出力する。あわせて、前記レコードのファイル名の「SampleSQL.java」と、行番号の「22」の情報を、セキュリティ脆弱性修正箇所105として出力する。
The operation of the security vulnerability correction
セキュリティ脆弱性修正内容反映部106は、オリジナルソースファイル11に対する修正内容の候補として、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105の情報をユーザコンソール15の画面に表示する。
The security vulnerability correction
図7は、オリジナルソースファイル11が例1の時のユーザコンソール15の画面である。セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105におけるファイル名の情報から、画面右上にオリジナルソースファイル11のファイル名を表示し、その下にオリジナルソースファイル11のソースコードを表示する。
FIG. 7 is a screen of the
セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105における行番号の情報から、セキュリティ脆弱性が存在する26行目を、その他の行とは別の文字色で表示させる。ソフトウェア開発者が、マウスカーソルを26行目の上に移動させると、セキュリティ脆弱性修正内容反映部106は、画面左側のModification欄に修正処理区分の「Insert」と、修正実コードの「Sanitizer.sanitizeHTML(name);」を表示させる。
The security vulnerability correction
ソフトウェア開発者は、表示された修正内容を確認し、マウスカーソルを修正実コードの表示部付近に移動させて、ダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ダブルクリックを受けて、修正内容をオリジナルソースファイル11に反映し、修正後ソースファイル14を生成する。
The software developer checks the displayed correction contents, moves the mouse cursor to the vicinity of the display section of the corrected actual code, and double-clicks. Upon receiving a double click, the security vulnerability correction
オリジナルソースファイル11が例1あるいは例2の場合は、図6に記載の通り修正内容の候補は1つとなるが、オリジナルソースファイル11のセキュリティ脆弱性カテゴリが「Buffer Overflow」で不正関数名が「strcpy」の場合は、修正候補は2つ存在する。この場合、セキュリティ脆弱性修正内容反映部106は、2つの修正候補を画面に表示し、ソフトウェア開発者がいずれかの修正候補を選択し、選択した方の修正実コードの表示部付近にマウスカーソルを移動させてダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した方の修正内容をオリジナルソースファイル11に反映させる。
When the
次に図2のフローチャートを参照して、本実施形態の動作について詳細に説明する。 Next, the operation of this embodiment will be described in detail with reference to the flowchart of FIG.
セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析し、検証ツール検証結果13を出力する(S101)。検証ツール検証結果13で、セキュリティ脆弱性が存在しない場合(S102でNo)、全体の処理は終了する。
The security
検証ツール検証結果13で、セキュリティ脆弱性が存在する場合(S102でYes)、検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を取り出し、セキュリティ脆弱性検証結果情報格納部102に格納する(S103)。
If the security vulnerability exists in the verification tool verification result 13 (Yes in S102), the verification result
セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010のレコードで一致するものをサーチする(S104)。一致したレコードが存在しない場合(S105でNo)、セキュリティ脆弱性修正候補提示部103は、ユーザコンソール15の画面に「セキュリティ脆弱性修正情報が定義されていません」のメッセージを表示し(S107)、全体の処理は終了する。
The security vulnerability correction
サーチ結果で一致したレコードが存在する場合(S105でYes)、セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性修正情報1011の修正汎用コードの引数名を、セキュリティ脆弱性詳細情報1021の不正関数引数情報に置換して修正実コードを生成し、セキュリティ脆弱性修正情報1011における修正処理区分を添付して、セキュリティ脆弱性修正コード104を生成する。同時にセキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性詳細情報1021のファイル名と行番号のデータから、セキュリティ脆弱性修正箇所105を生成する(S106)。
If there is a matched record in the search result (Yes in S105), the security vulnerability correction
セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をユーザコンソール15の画面に出力し、ソフトウェア開発者が、最適な修正コードを画面上で選択する(S108)。
The security vulnerability correction
セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した修正コードをオリジナルソースファイル11に反映し、修正後ソースファイル14を出力する(S109)。
The security vulnerability correction
尚、セキュリティ脆弱性修正コード104が1つの場合は、S108の処理は必須ではなく、セキュリティ脆弱性修正内容反映部106が、ユーザコンソール15の画面に出力せずに、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をオリジナルソースファイル11に反映させる方式でもよい。
If there is only one security
本実施形態には、セキュリティ脆弱性が存在するソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、セキュリティ脆弱性修正候補提示部103が、セキュリティ脆弱性検証結果情報格納部102に格納されたセキュリティ脆弱性解析結果とセキュリティ脆弱性修正ルール格納部101に格納された修正ルールを基にして、ソフトウェアソースファイルに対する修正箇所と修正コードを生成して提示するからである。
This embodiment has an effect of automatically generating correction code candidates that solve a software problem in which a security vulnerability exists. This is because the security vulnerability correction
修正コードの候補を自動生成することで、セキュリティ領域に精通していないソフトウェア開発者でも、セキュリティ脆弱性に関するソースコードの修正を短時間で行うことが可能となる。
<第二の実施形態>
次に、本願発明の第二の実施形態について図面を参照して詳細に説明する。
By automatically generating correction code candidates, even software developers who are not familiar with the security domain can quickly correct source codes related to security vulnerabilities.
<Second Embodiment>
Next, a second embodiment of the present invention will be described in detail with reference to the drawings.
図10は本実施形態のソフトウェア修正装置20の構成を示すブロック図である。
FIG. 10 is a block diagram showing the configuration of the
修正情報格納部201は、1つ以上のレコードを包含する問題種別情報2010と、問題種別情報2010の各レコードに対応付けられた修正レコード2011を格納している。問題種別情報2010の各レコードは、不正関数の情報を包含している。修正レコード2011の各レコードは、引数名を含む修正汎用コードの情報を包含している。問題種別情報2010と修正レコード2011は、ソフトウェア開発者がソフトウェアの修正ルールとして入力したものである。
The correction
修正問題情報格納部202は、1つ以上のレコードを包含する問題種別情報2020と、問題種別情報2020の各レコードに対応づけられた問題情報レコード2021を格納している。問題種別情報2020の各レコードは不正関数の情報を包含している。問題情報レコード2021の各レコードは、不正関数引数の情報を包含している。本実施形態では、ソフトウェア開発者が修正箇所の検討を行うため、問題情報レコード2021は第一の実施形態で記載したファイル名と行番号の情報を包含しなくてもよい。問題種別情報2020と問題情報レコード2021は、ソフトウェア問題解析ツールの出力を編集したものでもよいし、ソフトウェア開発者のソフトウェア解析結果を入力したものでもよい。
The corrected problem
修正候補生成部203は、問題種別情報2020と問題種別情報2010が一致するレコードをサーチする。一致するものがある場合、修正候補生成部203は、一致したレコードについて、修正レコード2011における汎用修正コードの引数名を、問題情報レコード2021における不正関数引数に置き換えて修正実コード204を生成する。修正実コード204は、ソフトウェア開発者がソースファイルへ適用する。
The correction
次に図11のフローチャートを参照して、本実施形態の動作について詳細に説明する。 Next, the operation of this embodiment will be described in detail with reference to the flowchart of FIG.
修正候補生成部203は、問題種別情報2020と問題別情報2010が一致するレコードをサーチする(S201)。一致したレコードが存在しない場合(S202でNo)、全体の処理は終了する。一致したレコードが存在する場合(S202でYes)、修正候補生成部203は、修正レコード2011の修正汎用コードの引数名を、問題情報レコード2021の不正関数引数情報に置換して修正実コード204を生成する(S203)。
The correction
本実施形態には、第一の実施形態と同様に、ソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、修正候補生成部203が、修正問題情報格納部202に格納された問題解析情報と修正情報格納部201に格納された修正ルールを基にして、ソフトウェアソースファイルにおける修正コードを生成して提示するからである。
As in the first embodiment, this embodiment has an effect of automatically generating correction code candidates that solve a software problem. This is because the correction
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 While the present invention has been described with reference to the embodiments, the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
10 セキュリティ脆弱性修正装置
100 セキュリティ脆弱性検証結果情報取得部
101 セキュリティ脆弱性修正ルール格納部
1010 セキュリティ脆弱性種別情報
1011 セキュリティ脆弱性修正情報
102 セキュリティ脆弱性検証結果情報格納部
1020 セキュリティ脆弱性種別情報
1021 セキュリティ脆弱性詳細情報
103 セキュリティ脆弱性修正候補提示部
104 セキュリティ脆弱性修正コード
105 セキュリティ脆弱性修正箇所
106 セキュリティ脆弱性修正内容反映部
11 オリジナルソースファイル
12 セキュリティ脆弱性検証ツール
13 検証ツール検証結果
14 修正後ソースファイル
15 ユーザコンソール
20 ソフトウェア修正装置
201 修正情報格納部
2010 問題種別情報
2011 修正レコード
202 問題情報格納部
2020 問題種別情報
2021 問題情報レコード
203 修正候補生成部
204 修正実コード
DESCRIPTION OF
Claims (9)
前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、
前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、
を備えるソフトウェア修正装置。 Problem information storage means for storing a problem type including a name of an illegal function having a problem included in a software source code, and a problem information record including an argument name of the incorrect function related to the problem;
Correction information storage means for storing the problem type and a correction record that correlates a correction general-purpose code including an argument name for correcting the problem;
The problem information record and the problem type match are searched for the correction information record, and the argument name in the correction general-purpose code in the searched correction record is changed to the argument name in the searched problem information record. Correction candidate generation means for generating a correction actual code by replacing with an argument name;
A software correction device comprising:
前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映手段を、
さらに備える、請求項1のソフトウェア修正装置。 The problem information record further includes illegal function position information indicating the position of the illegal function in the source code,
The correction information record further includes correction processing information indicating the distinction of replacement or insertion,
Based on the incorrect function position information in the searched problem information record and the correction processing information included in the searched correction information record, the incorrect function of the source code is replaced with the corrected actual code, Or a correction reflecting means for inserting the corrected actual code before the illegal function of the source code,
The software correction device according to claim 1, further comprising:
請求項1乃至2の何れかのソフトウェア修正装置。 The problem type includes a software problem category in addition to the name of the unauthorized function.
The software correction apparatus according to claim 1.
前記修正候補生成手段は、前記問題情報レコードと前記問題種別が一致する、前記複数の前記修正情報レコードを検索して、前記複数の前記修正実コードを生成して、表示装置に出力する、
請求項1乃至3の何れかのソフトウェア修正装置。 The correction information storage means includes a plurality of the correction information records having the same problem type and different correction general codes,
The correction candidate generation means searches the plurality of correction information records in which the problem type matches the problem type, generates the plurality of correction actual codes, and outputs them to a display device.
The software correction apparatus according to claim 1.
前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納し、
前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する、
ソフトウェア修正方法。 A problem type record including the name of an illegal function in which the problem included in the software source code exists, and a problem information record including an argument name of the incorrect function related to the problem are stored in a storage area;
Storing the problem type and a correction record in which a correction general-purpose code including an argument name for correcting the problem is associated;
The problem information record and the problem type match are searched for the correction information record, and the argument name in the correction general-purpose code in the searched correction record is changed to the argument name in the searched problem information record. Replace with argument name to generate modified actual code,
Software correction method.
前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する、
請求項6のソフトウェア修正方法。 The problem information record further includes illegal function position information indicating the position of the illegal function in the source code,
The correction information record further includes correction processing information indicating the distinction of replacement or insertion,
Based on the incorrect function position information in the searched problem information record and the correction processing information included in the searched correction information record, the incorrect function of the source code is replaced with the corrected actual code, Or the modified actual code is inserted before the illegal function in the source code,
The software correction method according to claim 6.
前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納する修正情報格納処理と、
前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、
をコンピュータに実行させるソフトウェア修正プログラム。 A problem type including a name of an illegal function in which a problem included in a software source code exists, and a problem information storage process for storing a problem information record including an argument name of the incorrect function related to the problem in a storage area;
Correction information storage processing for storing the problem type and a correction record in which a correction general-purpose code including an argument name for correcting the problem is associated in a storage area;
The problem information record and the problem type match are searched for the correction information record, and the argument name in the correction general-purpose code in the searched correction record is changed to the argument name in the searched problem information record. Correction candidate generation processing for generating a correction actual code by replacing with an argument name,
Software modification program that causes a computer to execute.
前記修正情報レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正情報レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映処理を、
さらにコンピュータに実行させる、請求項8のソフトウェア修正プログラム。 The problem information record further includes illegal function position information indicating the position of the illegal function in the source code,
The correction information record further includes correction processing information indicating the distinction of replacement or insertion,
Based on the incorrect function position information in the searched problem information record and the correction processing information included in the searched correction information record, the incorrect function of the source code is replaced with the corrected actual code, Alternatively, a modification reflection process for inserting the modified actual code before the illegal function of the source code,
The software correction program according to claim 8, further executed by a computer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011283716A JP5845888B2 (en) | 2011-12-26 | 2011-12-26 | Software correction apparatus, software correction system, software correction method, and software correction program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011283716A JP5845888B2 (en) | 2011-12-26 | 2011-12-26 | Software correction apparatus, software correction system, software correction method, and software correction program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013134573A true JP2013134573A (en) | 2013-07-08 |
JP5845888B2 JP5845888B2 (en) | 2016-01-20 |
Family
ID=48911234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011283716A Expired - Fee Related JP5845888B2 (en) | 2011-12-26 | 2011-12-26 | Software correction apparatus, software correction system, software correction method, and software correction program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5845888B2 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019142469A1 (en) * | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | Security design apparatus, security design method, and security design program |
KR20200134084A (en) * | 2019-05-21 | 2020-12-01 | 국방과학연구소 | Apparatus and method for generating patch |
JP2021108189A (en) * | 2020-05-14 | 2021-07-29 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッドBeijing Baidu Netcom Science Technology Co., Ltd. | Method for acquiring vulnerability feature, device, and electronic apparatus |
JP2021533476A (en) * | 2018-08-03 | 2021-12-02 | コンティネンタル・テーベス・アクチエンゲゼルシヤフト・ウント・コンパニー・オッフェネ・ハンデルスゲゼルシヤフト | How to parse source text |
JP2022535785A (en) * | 2019-06-12 | 2022-08-10 | エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー | Methods and Contract Rewriting Framework Systems for Supporting Smart Contracts in Blockchain Networks |
JP7456843B2 (en) | 2020-05-08 | 2024-03-27 | 株式会社日立製作所 | Program modification device, program modification method, and program modification program |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7367338B2 (en) | 2019-05-17 | 2023-10-24 | 株式会社ジェイテクト | Workpiece gripping device |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259973A1 (en) * | 2005-05-16 | 2006-11-16 | S.P.I. Dynamics Incorporated | Secure web application development environment |
JP2011150716A (en) * | 2011-03-07 | 2011-08-04 | Fujitsu Ltd | Program, apparatus and method for auditing vulnerability |
US20110191855A1 (en) * | 2010-01-29 | 2011-08-04 | International Business Machines Corporation | In-development vulnerability response management |
US20110302566A1 (en) * | 2010-06-03 | 2011-12-08 | International Business Machines Corporation | Fixing security vulnerability in a source code |
-
2011
- 2011-12-26 JP JP2011283716A patent/JP5845888B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259973A1 (en) * | 2005-05-16 | 2006-11-16 | S.P.I. Dynamics Incorporated | Secure web application development environment |
US20110191855A1 (en) * | 2010-01-29 | 2011-08-04 | International Business Machines Corporation | In-development vulnerability response management |
US20110302566A1 (en) * | 2010-06-03 | 2011-12-08 | International Business Machines Corporation | Fixing security vulnerability in a source code |
JP2011150716A (en) * | 2011-03-07 | 2011-08-04 | Fujitsu Ltd | Program, apparatus and method for auditing vulnerability |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019142469A1 (en) * | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | Security design apparatus, security design method, and security design program |
WO2019142267A1 (en) * | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | Security design apparatus, security design method, and security design program |
JP2021533476A (en) * | 2018-08-03 | 2021-12-02 | コンティネンタル・テーベス・アクチエンゲゼルシヤフト・ウント・コンパニー・オッフェネ・ハンデルスゲゼルシヤフト | How to parse source text |
KR20200134084A (en) * | 2019-05-21 | 2020-12-01 | 국방과학연구소 | Apparatus and method for generating patch |
KR102195748B1 (en) * | 2019-05-21 | 2020-12-28 | 국방과학연구소 | Apparatus and method for generating patch |
JP2022535785A (en) * | 2019-06-12 | 2022-08-10 | エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー | Methods and Contract Rewriting Framework Systems for Supporting Smart Contracts in Blockchain Networks |
JP7250178B2 (en) | 2019-06-12 | 2023-03-31 | エヌイーシー ラボラトリーズ ヨーロッパ ゲーエムベーハー | Methods and Contract Rewriting Framework Systems for Supporting Smart Contracts in Blockchain Networks |
JP7456843B2 (en) | 2020-05-08 | 2024-03-27 | 株式会社日立製作所 | Program modification device, program modification method, and program modification program |
JP2021108189A (en) * | 2020-05-14 | 2021-07-29 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッドBeijing Baidu Netcom Science Technology Co., Ltd. | Method for acquiring vulnerability feature, device, and electronic apparatus |
JP7231664B2 (en) | 2020-05-14 | 2023-03-01 | 阿波▲羅▼智▲聯▼(北京)科技有限公司 | Vulnerability feature acquisition method, device and electronic device |
Also Published As
Publication number | Publication date |
---|---|
JP5845888B2 (en) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5845888B2 (en) | Software correction apparatus, software correction system, software correction method, and software correction program | |
US11775414B2 (en) | Automated bug fixing using deep learning | |
JP4976991B2 (en) | Information processing apparatus, program verification method, and program | |
Alameer et al. | Detecting and localizing internationalization presentation failures in web applications | |
EP1627303A2 (en) | Method ans system for detecting vulnerabilities in source code | |
CN104679495B (en) | software identification method and device | |
US10261884B2 (en) | Method for correcting violation of source code and computer readable recording medium having program performing the same | |
JP2008191963A (en) | Source code verification system, source code verification method and source code verification program | |
JPWO2006087780A1 (en) | Vulnerability audit program, vulnerability audit device, vulnerability audit method | |
CA2815527A1 (en) | Bidirectional text checker | |
US9557965B2 (en) | Method for programming language dependent merging of program codes | |
Dong et al. | Orplocator: Identifying read points of configuration options via static analysis | |
JP5176478B2 (en) | Data flow analysis device, data flow analysis method, and data flow analysis program | |
WO2007124178A2 (en) | Methods for processing formatted data | |
CN110989991A (en) | Method and system for detecting source code clone open source software in application program | |
JP2008299723A (en) | Program verification method and device | |
JP5868515B2 (en) | Signature verification apparatus, signature verification method and program | |
Chahar et al. | Code analysis for software and system security using open source tools | |
US20170329697A1 (en) | Detecting mistyped identifiers and suggesting corrections using other program identifiers | |
JP5077455B2 (en) | Vulnerability audit program, vulnerability audit device, vulnerability audit method | |
JP5369565B2 (en) | Program error information output device, error information output method, and error information output program | |
JP6451417B2 (en) | Debug support device, debug support system, debug support method, and debug support program | |
JP5758311B2 (en) | Test code generation device, test code generation method, test code generation program | |
JP2016057715A (en) | Graphic type program analyzer | |
CN105912893A (en) | Strengthening method based on Android system microinstruction just-in-time compilation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20141117 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150804 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151001 |
|
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: 20151027 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151109 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5845888 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |