JP5845888B2 - ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム - Google Patents

ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム Download PDF

Info

Publication number
JP5845888B2
JP5845888B2 JP2011283716A JP2011283716A JP5845888B2 JP 5845888 B2 JP5845888 B2 JP 5845888B2 JP 2011283716 A JP2011283716 A JP 2011283716A JP 2011283716 A JP2011283716 A JP 2011283716A JP 5845888 B2 JP5845888 B2 JP 5845888B2
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.)
Active
Application number
JP2011283716A
Other languages
English (en)
Other versions
JP2013134573A (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
Priority to JP2011283716A priority Critical patent/JP5845888B2/ja
Publication of JP2013134573A publication Critical patent/JP2013134573A/ja
Application granted granted Critical
Publication of JP5845888B2 publication Critical patent/JP5845888B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本願発明は、ソフトウェアのセキュリティ脆弱性を含む問題を解消するためのソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラムに関する。
IT環境が高度に発達した現代社会においては、システムの中で使用されているソフトウェアに存在する様々な問題を、迅速に解消することが必要不可欠になってきている。特に最近は、サイバー攻撃をはじめとするコンピュータ犯罪等による影響が深刻化しており、ソフトウェアのセキュリティ脆弱性を可能な限り小さくすることの重要性がますます高まってきている。
セキュリティ脆弱性の例としては、ソフトウェアが外部からの入力データを誤処理することで生じるバッファオーバーフローがある。また、入力データを誤処理、あるいは未処理のまま他のソフトウェアに出力することで生じるクロスサイトスクリプティングやSQLインジェクションなどもある。
このようなセキュリティ脆弱性を排除するための技術として、特許文献1には、ソフトウェアのソースコードのセキュリティ脆弱性検査において、構文解析の解析木を構築することで、脆弱性を有する部分を精度よく検出するための装置が公開されている。
また、特許文献2には、脆弱なライブラリを全て検出するのではなく、適切に用いられていない箇所のみを検出することで、脆弱性検出の制度を向上させるプログラムが公開されている。
特開2007−052625号公報 特開2011−150716号公報
前述の特許文献1や特許文献2に記載された技術では、セキュリティ脆弱性の検出結果に対して、ソフトウェアのソースコードをどのように修正したらよいかまでは提示されず、修正内容の検討はソフトウェア開発者に委ねられる。
したがって、特にセキュリティ領域に精通していないソフトウェア開発者がソースコードの修正を行う場合は、修正対応完了まで多くの時間を要するという問題がある。
本願発明の目的は、これらの問題点を解決したソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラムを提供することである。
本願発明の一実施形態のソフトウェア修正装置は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納手段と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、を備える。
本願発明の一実施形態のソフトウェア修正方法は、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納し、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納し、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する。
本願発明の一実施形態のソフトウェア修正プログラムは、ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納処理と、前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納処理と、前記問題情報レコードと前記問題種別が一致する、前記修正情報レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、をコンピュータに実行させる。
本願発明は、ソフトウェアのセキュリティ脆弱性等の問題を解消するソースファイル修正コードの候補を自動生成することを実現する。
本願発明の第1の実施形態の構成を示すブロック図である。 本願発明の第1の実施形態の動作を示すフローチャートである。 本願発明の第1の実施形態におけるオリジナルソースファイル11の例1である。 本願発明の第1の実施形態におけるオリジナルソースファイル11の例2である。 本願発明の第1の実施形態におけるセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021の詳細である。 本願発明の第1の実施形態におけるセキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011の詳細である。 本願発明の第1の実施形態におけるセキュリティ脆弱性修正内容反映部106の処理実行時のユーザコンソール15の画面(例1の場合)である。 本願発明の第1の実施形態における修正後ソースファイル14の例1である。 本願発明の第1の実施形態における修正後ソースファイル14の例2である。 本願発明の第2の実施形態の構成を示すブロック図である。 本願発明の第2の実施形態の動作を示すフローチャートである。
本願発明の第一の実施の形態について図面を参照して詳細に説明する。
図1はセキュリティ脆弱性修正装置10と、オリジナルソースファイル11と、セキュリティ脆弱性検証ツール12と、検証ツール検証結果13と、修正後ソースファイル14と、ユーザコンソール15とから構成されたセキュリティ脆弱性修正システムの構成を示す。
オリジナルソースファイル11は、セキュリティ脆弱性の検証、修正の対象であるソフトウェアのソースファイルであり、その2つの例を例1(SampleXSS.java)、例2(SQLInjection.java)としてそれぞれ図3、図4に示す。例1、例2は、プログラミング言語としてJAVA(登録商標)を使用しているが、C言語やhtmlなどのその他のプログラミング言語で書かれたソースファイルでもよい。
例1のソースファイルの場合、24行目のリクエストパラメータから取得したデータを、そのまま26行目のsendErrorメソッドで使用しているため、クロスサイトスクリプティングの脆弱性が存在する。
例2のソースファイルの場合、15行目のリクエストパラメータから取得したデータをそのまま22行目のprepareStatementメソッドで使用しているため、SQLインジェクションの脆弱性が存在する。
セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析するパッケージソフトウェアであり、いくつかのツールが知られている。セキュリティ脆弱性検証ツール12が出力する検証ツール検証結果13は、図5に記載のセキュリティ脆弱性種別情報1020、セキュリティ脆弱性詳細情報1021を必ず包含する。検証ツール検証結果13は、その他に、セキュリティ脆弱性カテゴリの重要度レベル、脆弱性カテゴリの解説と対応方法の概要説明、不正データの入力から出力にいたるまでのプログラムの流れなどの様々な解析情報を包含してもよい。
修正後ソースファイル14は、セキュリティ脆弱性修正装置10がオリジナルソースファイル11におけるセキュリティ脆弱性の存在する箇所のコードを修正して出力したファイルである。前記例1、例2のオリジナルソースファイル11が修正されて出力された修正後ソースファイル14を、それぞれ図8、図9に示す。
図8に示す通り、例1のソースファイルの場合、セキュリティ脆弱性修正装置10が26行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したクロスサイトスクリプティングの脆弱性を解消する。
図9に示す通り、例2のソースファイルの場合、セキュリティ脆弱性修正装置10が22行目のサニタイズ処理を追加することで、オリジナルソースファイル11に存在したSQLインジェクションの脆弱性を解消する。
ユーザコンソール15は、ソフトウェア開発者がセキュリティ脆弱性修正装置10を使用する時のユーザインターフェースとなる画面、キーボード、および、マウスである。
セキュリティ脆弱性修正装置10は、セキュリティ脆弱性検証結果情報取得部100と、セキュリティ脆弱性修正ルール格納部101と、セキュリティ脆弱性検証結果情報格納部102と、セキュリティ脆弱性修正候補提示部103と、セキュリティ脆弱性修正コード104と、セキュリティ脆弱性修正箇所105と、セキュリティ脆弱性修正内容反映部106とを備えている。
セキュリティ脆弱性検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を抜き出して、セキュリティ脆弱性検証結果情報格納部102に格納する。
セキュリティ脆弱性種別情報1020は、図5に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリに「Cross Site Scripting」、不正関数名に「sendError」を格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、カテゴリに「SQL Injection」、不正関数名に「prepareStatement」を格納する。
セキュリティ脆弱性詳細情報1021は、図5に記載の通り、セキュリティ脆弱性が存在するファイル名と、そのファイルにおけるセキュリティ脆弱性が存在する箇所の行番号と、不正関数引数情報とを包含している。オリジナルソースファイル11が前記例1の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名に「SampleXSS.java」、行番号に「26」、不正関数引数情報に図5に示す情報を格納する。オリジナルソースファイル11が前記例2の場合、セキュリティ脆弱性検証結果情報取得部100は、ファイル名に「SampleSQL.java」、行番号に「22」、不正関数引数情報に図5に示す情報を格納する。
セキュリティ脆弱性検証結果情報格納部102は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を、セキュリティ脆弱性修正候補提示部103に出力する。
セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011とを格納している。セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011は、ソフトウェア開発者がユーザコンソール15からセキュリティ脆弱性修正ルールとして登録したものである。セキュリティ脆弱性種別情報1010は、図6に記載の通り、セキュリティ脆弱性のカテゴリと不正関数名の情報とを包含している。セキュリティ脆弱性修正情報1011は、修正処理区分と修正汎用コードの情報とを包含している。修正汎用コードは、汎用的に表記された引数の記述を包含している。
ソフトウェア開発者は、図6に記載の通り、クロスサイトスクリプティングの脆弱性に対する脆弱性修正ルールとして、カテゴリに「Cross Site Scripting」、不正関数名に「sendError」、修正処理区分に「Insert」、修正汎用コードに図6に示すコード文を登録する。ソフトウェア開発者は、SQLインジェクションの脆弱性に対する脆弱性修正ルールとして、カテゴリに「SQL Injection」、不正関数名に「prepareStatement」、修正処理区分に「Insert」、修正汎用コードに図6に示すコード文を登録する。クロスサイトスクリプティングやSQLインジェクションのカテゴリのセキュリティ脆弱性の場合、不正関数名として登録するのは各カテゴリに1つであり、各々の不正関数に対する修正汎用コードも1つあればよい。
バッファオーバーフローの脆弱性に対する脆弱性修正ルールの場合は、図6に記載の通り、不正関数名として、「strcpy」と「gets」の2つが存在し、「strcpy」の場合は、さらに修正汎用コードとして2つのものを登録する必要がある。
セキュリティ脆弱性修正ルール格納部101は、セキュリティ脆弱性種別情報1010とセキュリティ脆弱性修正情報1011を、セキュリティ脆弱性修正候補提示部103に出力する。
セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010が一致するレコードをサーチする。サーチの結果一致するものがある場合、セキュリティ脆弱性修正候補提示部103は、一致したレコードについて、セキュリティ脆弱性詳細情報1011における修正汎用コードの中の引数の記述を、セキュリティ脆弱性詳細情報1021における不正関数引数情報の記述に置換して修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、対応するレコードのセキュリティ脆弱性修正情報1011における修正処理区分の情報も包含している。
セキュリティ脆弱性修正候補提示部103は、前記の一致したレコードについて、セキュリティ脆弱性詳細情報1021のファイル名と行番号の情報を、セキュリティ脆弱性修正箇所105として出力する。
セキュリティ脆弱性修正候補提示部103の前記動作をオリジナルソースファイル11が例1の場合で説明する。セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリが「Cross Site Scripting」、不正関数名が「sendError」のレコードで一致する。セキュリティ脆弱性修正候補提示部103は、このレコードの不正関数引数情報の「TaintArg=name」から、修正汎用コードにおける「%TaintArg%」の表記を「name」で置換して、「Sanitizer.sanitizeHTML(name);」の修正実コードを生成し、セキュリティ脆弱性修正コード104として出力する。セキュリティ脆弱性修正コード104は、このレコードの修正処理区分の「Insert」の情報も包含している。
セキュリティ脆弱性修正候補提示部103は、前記レコードのファイル名の「SampleXSS.java」と、行番号の「26」の情報を、セキュリティ脆弱性修正箇所105として出力する。
オリジナルソースファイル11が例2の場合のセキュリティ脆弱性修正候補提示部103の動作も、例1の場合と同様である。例2の場合、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010は、カテゴリが「SQL Injection」、不正関数名が「prepareStatement」のレコードで一致し、「Sanitizer.sanitizeSQL(str);」の修正実コードを生成し、修正処理区分の「Insert」の情報も包含させて、セキュリティ脆弱性修正コード104として出力する。あわせて、前記レコードのファイル名の「SampleSQL.java」と、行番号の「22」の情報を、セキュリティ脆弱性修正箇所105として出力する。
セキュリティ脆弱性修正内容反映部106は、オリジナルソースファイル11に対する修正内容の候補として、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105の情報をユーザコンソール15の画面に表示する。
図7は、オリジナルソースファイル11が例1の時のユーザコンソール15の画面である。セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105におけるファイル名の情報から、画面右上にオリジナルソースファイル11のファイル名を表示し、その下にオリジナルソースファイル11のソースコードを表示する。
セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正箇所105における行番号の情報から、セキュリティ脆弱性が存在する26行目を、その他の行とは別の文字色で表示させる。ソフトウェア開発者が、マウスカーソルを26行目の上に移動させると、セキュリティ脆弱性修正内容反映部106は、画面左側のModification欄に修正処理区分の「Insert」と、修正実コードの「Sanitizer.sanitizeHTML(name);」を表示させる。
ソフトウェア開発者は、表示された修正内容を確認し、マウスカーソルを修正実コードの表示部付近に移動させて、ダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ダブルクリックを受けて、修正内容をオリジナルソースファイル11に反映し、修正後ソースファイル14を生成する。
オリジナルソースファイル11が例1あるいは例2の場合は、図6に記載の通り修正内容の候補は1つとなるが、オリジナルソースファイル11のセキュリティ脆弱性カテゴリが「Buffer Overflow」で不正関数名が「strcpy」の場合は、修正候補は2つ存在する。この場合、セキュリティ脆弱性修正内容反映部106は、2つの修正候補を画面に表示し、ソフトウェア開発者がいずれかの修正候補を選択し、選択した方の修正実コードの表示部付近にマウスカーソルを移動させてダブルクリックする。セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した方の修正内容をオリジナルソースファイル11に反映させる。
次に図2のフローチャートを参照して、本実施形態の動作について詳細に説明する。
セキュリティ脆弱性検証ツール12は、オリジナルソースファイル11のセキュリティ脆弱性を解析し、検証ツール検証結果13を出力する(S101)。検証ツール検証結果13で、セキュリティ脆弱性が存在しない場合(S102でNo)、全体の処理は終了する。
検証ツール検証結果13で、セキュリティ脆弱性が存在する場合(S102でYes)、検証結果情報取得部100は、検証ツール検証結果13からセキュリティ脆弱性種別情報1020とセキュリティ脆弱性詳細情報1021を取り出し、セキュリティ脆弱性検証結果情報格納部102に格納する(S103)。
セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性種別情報1020とセキュリティ脆弱性種別情報1010のレコードで一致するものをサーチする(S104)。一致したレコードが存在しない場合(S105でNo)、セキュリティ脆弱性修正候補提示部103は、ユーザコンソール15の画面に「セキュリティ脆弱性修正情報が定義されていません」のメッセージを表示し(S107)、全体の処理は終了する。
サーチ結果で一致したレコードが存在する場合(S105でYes)、セキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性修正情報1011の修正汎用コードの引数名を、セキュリティ脆弱性詳細情報1021の不正関数引数情報に置換して修正実コードを生成し、セキュリティ脆弱性修正情報1011における修正処理区分を添付して、セキュリティ脆弱性修正コード104を生成する。同時にセキュリティ脆弱性修正候補提示部103は、セキュリティ脆弱性詳細情報1021のファイル名と行番号のデータから、セキュリティ脆弱性修正箇所105を生成する(S106)。
セキュリティ脆弱性修正内容反映部106は、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をユーザコンソール15の画面に出力し、ソフトウェア開発者が、最適な修正コードを画面上で選択する(S108)。
セキュリティ脆弱性修正内容反映部106は、ソフトウェア開発者が選択した修正コードをオリジナルソースファイル11に反映し、修正後ソースファイル14を出力する(S109)。
尚、セキュリティ脆弱性修正コード104が1つの場合は、S108の処理は必須ではなく、セキュリティ脆弱性修正内容反映部106が、ユーザコンソール15の画面に出力せずに、セキュリティ脆弱性修正コード104とセキュリティ脆弱性修正箇所105をオリジナルソースファイル11に反映させる方式でもよい。
本実施形態には、セキュリティ脆弱性が存在するソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、セキュリティ脆弱性修正候補提示部103が、セキュリティ脆弱性検証結果情報格納部102に格納されたセキュリティ脆弱性解析結果とセキュリティ脆弱性修正ルール格納部101に格納された修正ルールを基にして、ソフトウェアソースファイルに対する修正箇所と修正コードを生成して提示するからである。
修正コードの候補を自動生成することで、セキュリティ領域に精通していないソフトウェア開発者でも、セキュリティ脆弱性に関するソースコードの修正を短時間で行うことが可能となる。
<第二の実施形態>
次に、本願発明の第二の実施形態について図面を参照して詳細に説明する。
図10は本実施形態のソフトウェア修正装置20の構成を示すブロック図である。
修正情報格納部201は、1つ以上のレコードを包含する問題種別情報2010と、問題種別情報2010の各レコードに対応付けられた修正レコード2011を格納している。問題種別情報2010の各レコードは、不正関数の情報を包含している。修正レコード2011の各レコードは、引数名を含む修正汎用コードの情報を包含している。問題種別情報2010と修正レコード2011は、ソフトウェア開発者がソフトウェアの修正ルールとして入力したものである。
修正問題情報格納部202は、1つ以上のレコードを包含する問題種別情報2020と、問題種別情報2020の各レコードに対応づけられた問題情報レコード2021を格納している。問題種別情報2020の各レコードは不正関数の情報を包含している。問題情報レコード2021の各レコードは、不正関数引数の情報を包含している。本実施形態では、ソフトウェア開発者が修正箇所の検討を行うため、問題情報レコード2021は第一の実施形態で記載したファイル名と行番号の情報を包含しなくてもよい。問題種別情報2020と問題情報レコード2021は、ソフトウェア問題解析ツールの出力を編集したものでもよいし、ソフトウェア開発者のソフトウェア解析結果を入力したものでもよい。
修正候補生成部203は、問題種別情報2020と問題種別情報2010が一致するレコードをサーチする。一致するものがある場合、修正候補生成部203は、一致したレコードについて、修正レコード2011における汎用修正コードの引数名を、問題情報レコード2021における不正関数引数に置き換えて修正実コード204を生成する。修正実コード204は、ソフトウェア開発者がソースファイルへ適用する。
次に図11のフローチャートを参照して、本実施形態の動作について詳細に説明する。
修正候補生成部203は、問題種別情報2020と問題別情報2010が一致するレコードをサーチする(S201)。一致したレコードが存在しない場合(S202でNo)、全体の処理は終了する。一致したレコードが存在する場合(S202でYes)、修正候補生成部203は、修正レコード2011の修正汎用コードの引数名を、問題情報レコード2021の不正関数引数情報に置換して修正実コード204を生成する(S203)。
本実施形態には、第一の実施形態と同様に、ソフトウェアの問題を解消する修正コードの候補を自動生成するという効果がある。なぜなら、修正候補生成部203が、修正問題情報格納部202に格納された問題解析情報と修正情報格納部201に格納された修正ルールを基にして、ソフトウェアソースファイルにおける修正コードを生成して提示するからである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
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 修正実コード

Claims (9)

  1. ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを格納する問題情報格納手段と、
    前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を格納する修正情報格納手段と、
    前記問題情報レコードと前記問題種別が一致する、前記修正レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成手段と、
    を備えるソフトウェア修正装置。
  2. 前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、
    前記修正レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
    検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映手段を、
    さらに備える、請求項1のソフトウェア修正装置。
  3. 前記問題種別は、前記不正関数の名称に加えて、ソフトウェア問題カテゴリを包含する、
    請求項1乃至2の何れかのソフトウェア修正装置。
  4. 前記修正情報格納手段は、前記問題種別が同一であって、前記修正汎用コードが異なる複数の前記修正レコードを包含し、
    前記修正候補生成手段は、前記問題情報レコードと前記問題種別が一致する、前記複数の前記修正レコードを検索して、前記複数の前記修正実コードを生成して、表示装置に出力する、
    請求項1乃至3の何れかのソフトウェア修正装置。
  5. 請求項1から4に記載のソフトウェア修正装置と、ソフトウェア問題解析ツールとを包含するソフトウェア修正システム。
  6. ソフトウェア修正装置が、
    ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを記憶域に格納し、
    前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納し、
    前記問題情報レコードと前記問題種別が一致する、前記修正レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する、
    ソフトウェア修正方法。
  7. 前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、
    前記修正レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
    前記ソフトウェア修正装置は、検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する、
    請求項6のソフトウェア修正方法。
  8. ソフトウェアのソースコードに含まれる問題が存在する不正関数の名称を含む問題種別と、前記問題に関連する前記不正関数の引数名を含む問題情報レコードを記憶域に格納する問題情報格納処理と、
    前記問題種別と、前記問題を修正するための、引数名を含む修正汎用コードを対応付けた修正レコードと、を記憶域に格納する修正情報格納処理と、
    前記問題情報レコードと前記問題種別が一致する、前記修正レコードを検索して、検索された前記修正レコード内の前記修正汎用コード内の前記引数名を、検索された前記問題情報レコード内の前記引数名で置換して修正実コードを生成する修正候補生成処理と、
    をコンピュータに実行させるソフトウェア修正プログラム。
  9. 前記問題情報レコードは、さらに、前記不正関数の前記ソースコードにおける位置を示す不正関数位置情報を包含し、
    前記修正レコードは、さらに、置換または挿入の区別を示す修正処理情報を包含し、
    検索された前記問題情報レコード内の前記不正関数位置情報と、検索された前記修正レコードに包含される前記修正処理情報に基づいて、前記ソースコードの前記不正関数を前記修正実コードで置換、または前記ソースコードの前記不正関数の前に前記修正実コードを挿入する修正反映処理を、
    さらにコンピュータに実行させる、請求項8のソフトウェア修正プログラム。
JP2011283716A 2011-12-26 2011-12-26 ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム Active JP5845888B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011283716A JP5845888B2 (ja) 2011-12-26 2011-12-26 ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011283716A JP5845888B2 (ja) 2011-12-26 2011-12-26 ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム

Publications (2)

Publication Number Publication Date
JP2013134573A JP2013134573A (ja) 2013-07-08
JP5845888B2 true JP5845888B2 (ja) 2016-01-20

Family

ID=48911234

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011283716A Active JP5845888B2 (ja) 2011-12-26 2011-12-26 ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム

Country Status (1)

Country Link
JP (1) JP5845888B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7367338B2 (ja) 2019-05-17 2023-10-24 株式会社ジェイテクト 工作物把持装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019142267A1 (ja) * 2018-01-17 2019-07-25 三菱電機株式会社 セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム
DE102018213053A1 (de) * 2018-08-03 2020-02-06 Continental Teves Ag & Co. Ohg Verfahren zum Analysieren von Quelltexten
KR102195748B1 (ko) * 2019-05-21 2020-12-28 국방과학연구소 패치 생성 장치 및 방법
US11914721B2 (en) * 2019-06-12 2024-02-27 Nec Corporation Method and contract rewriting framework system for supporting smart contracts in a blockchain network
JP7456843B2 (ja) 2020-05-08 2024-03-27 株式会社日立製作所 プログラム修正装置、プログラム修正方法、および、プログラム修正プログラム
CN113672929A (zh) * 2020-05-14 2021-11-19 阿波罗智联(北京)科技有限公司 漏洞特征获取方法、装置及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266700B2 (en) * 2005-05-16 2012-09-11 Hewlett-Packard Development Company, L. P. Secure web application development environment
CN102141956B (zh) * 2010-01-29 2015-02-11 国际商业机器公司 用于开发中的安全漏洞响应管理的方法和系统
US8819637B2 (en) * 2010-06-03 2014-08-26 International Business Machines Corporation Fixing security vulnerability in a source code
JP5077455B2 (ja) * 2011-03-07 2012-11-21 富士通株式会社 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7367338B2 (ja) 2019-05-17 2023-10-24 株式会社ジェイテクト 工作物把持装置

Also Published As

Publication number Publication date
JP2013134573A (ja) 2013-07-08

Similar Documents

Publication Publication Date Title
JP5845888B2 (ja) ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム
JP5775829B2 (ja) ソフトウェアの構造可視化プログラムおよびシステム
US11775414B2 (en) Automated bug fixing using deep learning
Alameer et al. Detecting and localizing internationalization presentation failures in web applications
Nguyen et al. Cross-language program slicing for dynamic web applications
WO2007124177A2 (en) System for processing formatted data
JPWO2006087780A1 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
US10261884B2 (en) Method for correcting violation of source code and computer readable recording medium having program performing the same
JP2008191963A (ja) ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
CA2815527A1 (en) Bidirectional text checker
Dong et al. Orplocator: Identifying read points of configuration options via static analysis
JP5176478B2 (ja) データフロー解析装置、データフロー解析方法およびデータフロー解析プログラム
WO2007124176A2 (en) Machine declarative language for formatted data processing
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
WO2007124178A2 (en) Methods for processing formatted data
CN111919214A (zh) 针对安全性违反的补丁的自动生成
JP5868515B2 (ja) シグニチャ検証装置及びシグニチャ検証方法及びプログラム
JP5077455B2 (ja) 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
JP5369565B2 (ja) プログラムのエラー情報出力装置、エラー情報出力方法およびエラー情報出力プログラム
Chahar et al. Code analysis for software and system security using open source tools
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
CN110989991A (zh) 检测应用程序中源代码克隆开源软件的方法及系统
JP5758311B2 (ja) テストコード生成装置、テストコード生成方法、テストコード生成プログラム
JP2016057715A (ja) 図形式プログラム解析装置
CN105912893A (zh) 一种基于Android系统微指令即时编译的加固方法

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 Written amendment

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