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

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

Info

Publication number
JP7468641B2
JP7468641B2 JP2022530410A JP2022530410A JP7468641B2 JP 7468641 B2 JP7468641 B2 JP 7468641B2 JP 2022530410 A JP2022530410 A JP 2022530410A JP 2022530410 A JP2022530410 A JP 2022530410A JP 7468641 B2 JP7468641 B2 JP 7468641B2
Authority
JP
Japan
Prior art keywords
block
backdoor
software
code
identifying
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
JP2022530410A
Other languages
English (en)
Other versions
JPWO2021250792A5 (ja
JPWO2021250792A1 (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 JPWO2021250792A1 publication Critical patent/JPWO2021250792A1/ja
Publication of JPWO2021250792A5 publication Critical patent/JPWO2021250792A5/ja
Application granted granted Critical
Publication of JP7468641B2 publication Critical patent/JP7468641B2/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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

本開示は、ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体に関する。
特許文献1では、ソフトウェアにウィルスが存在することが疑われる場合、そのソフトウェアを管理システムから削除する技術が提案されている。
ところで、インフラや企業システムは、複雑化している。このため、インフラや企業システムは、単一の企業のデバイスだけで構成されるのではなく、様々な企業のデバイスを外部から調達しそれらを組み合わせて、構築されている。
そして、近年、これらのデバイスにおいてソフトウェア(ファームウェア)およびハードウェアの両面で、ユーザが認知していない隠された機能又はユーザが予期していない機能が発見される、インシデントが多数報告されている。すなわち、「バックドア」に関連する多数のインシデントが報告されている。「バックドア」とは、例えば、複数の機能を含むソフトウェアに対して該ソフトウェアの一部として組み込まれた、ユーザに知らされていない且つ望まれていない機能として定義できる。
特表2015-531508号公報
本発明者は、ソフトウェアにバックドアである可能性があるコードブロック(バックドアブロック)が発見されたときに、特許文献1の技術と同様にソフトウェア全体を削除すると、大部分のコードブロックがバックドアブロックではなく正常であるソフトウェアを利用できない課題を見出した。換言すれば、本発明者は、バックドアブロックを含むソフトウェアを有効利用したいニーズを見出した。
本開示の目的は、バックドアブロックを含むソフトウェアの利用を可能にする、ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体を提供することにある。
第1の態様にかかるソフトウェア修正装置は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
を具備する。
第2の態様にかかるソフトウェア修正方法は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
を含む。
第3の態様にかかる非一時的なコンピュータ可読媒体は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
を含む処理を、ソフトウェア修正装置に実行させるプログラムが格納している。
本開示により、バックドアブロックを含むソフトウェアの利用を可能にする、ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体を提供することができる。
第1実施形態におけるソフトウェア修正装置の一例を示すブロック図である。 第2実施形態におけるソフトウェア修正装置の一例を示すブロック図である。 コントロールフローグラフの説明に供する図である。 デッドコードの説明に供する図である。 第2実施形態におけるソフトウェア修正装置の処理動作の一例を示すフローチャートである。 ソフトウェア修正装置のハードウェア構成例を示す図である。
以下、図面を参照しつつ、実施形態について説明する。なお、実施形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。
<第1実施形態>
図1は、第1実施形態におけるソフトウェア修正装置の一例を示すブロック図である。図1においてソフトウェア修正装置10は、特定部11と、検査部12と、修正処理部13とを有している。
ソフトウェア修正装置10は、検査対象であるソフトウェア(以下では、単に「対象ソフトウェア」と呼ぶことがある)を受け取る。対象ソフトウェアは、コンパイル前のソースコードであってもよいし、コンパイル後のバイナリコードであってもよい。
特定部11は、対象ソフトウェアに含まれる複数の「コードブロック」を特定する。「コードブロック」は、例えば、対象ソフトウェアに含まれる機能に対応する機能ブロックであってもよいし、機能ブロックよりも小さい単位のベーシックブロックであってもよい。
検査部12は、特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックを「バックドアブロック(バックドアブロック候補)」として特定する。
修正処理部13は、対象ソフトウェアにおけるバックドアブロックに対して、「不実行化処理」又は「監視対象化処理」を実行する。「不実行化処理」は、バックドアブロックを実行されない状態にする処理である。「不実行化処理」は、バックドアブロックを対象ソフトウェアから削除する「削除処理」、又は、バックドアブロックを無効化する「無効化処理」を含んでいてもよい。また、「監視対象化処理」は、バックドアブロックが実行されるときに監視される対象にするための処理である。「監視対象化処理」は、バックドアブロックを監視するための「監視コード」を対象ソフトウェアに挿入する「挿入処理」を含んでいてもよい。
以上で説明したソフトウェア修正装置10の構成によれば、バックドアブロックを含む対象ソフトウェアの全体を無効化するのではなく、対象ソフトウェアにおけるバックドアブロックを実行されない状態にするか又は監視対象にすることができる。これにより、バックドアブロックを含むソフトウェアの利用を可能にすることができ、バックドアブロックを含むソフトウェアを有効利用することができる。
なお、ソフトウェア修正装置10は、次のソフトウェア修正方法を実行している。このソフトウェア修正方法は、検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、を含む。
<第2実施形態>
第2実施形態は、より具体的な実施形態に関する。
<ソフトウェア修正装置の構成例>
図2は、第2実施形態におけるソフトウェア修正装置の一例を示すブロック図である。図2においてソフトウェア修正装置20は、特定部21と、検査部22と、修正処理部23とを有している。
特定部21は、第1実施形態の特定部11と同様に、対象ソフトウェアに含まれる複数の「コードブロック」を特定する。例えば、特定部21は、図2に示すように、特定処理部21Aと、構造解析部21Bとを含む。
特定処理部21Aは、対象ソフトウェアの形態、つまり、対象ソフトウェアがソースコードであるかバイナリコードであるかを特定する。以下では、対象ソフトウェアの形態に関する情報を、「形態情報」と呼ぶことがある。
また、特定処理部21Aは、対象ソフトウェアにおいて、「予め定められた所定機能」に対応する「所定コードブロック」を特定する。「予め定められた所定機能」は、例えば、「インタフェース機能」、「認証機能(認証ルーチン)」、及び「コマンドパーサ機能(パーサルーチン)」等である。すなわち、「予め定められた所定機能」は、それの後に種々の機能が続く機能である。つまり、「予め定められた所定機能」は、対象ソフトウェアについてのコントロールフローグラフにおいて起点となるコードブロックに対応する。
特定処理部21Aは、例えば、複数の所定機能と各所定機能に対応する所定コードブロックの特徴とを対応付けた「特定ルールテーブル(「第1特定テーブル」)」を用いて、所定コードブロックを特定してもよい。この場合、特定処理部21Aは、特定ルールテーブルに保持されている各所定コードブロックの特徴にマッチする、対象ソフトウェアの部分を、所定コードブロックとして特定する。また、特定処理部21Aは、テーブルの代わりに、所定機能を特定するための1つもしくは複数のアルゴリズムやモジュールを実行し、所定コードブロックを特定してもよい。
構造解析部21Bは、特定処理部21Aにて特定された所定コードブロックを起点としてコントロールフローを辿ることによって、対象ソフトウェアの構造を解析すると共に、所定機能以外の機能に対応するコードブロックを特定する。例えば、構造解析部21Bは、特定処理部21Aによって特定された認証機能のコードブロックを起点としてコントロールフローを辿ることによって、図3に示すようなコントロールフローグラフを作成する。そして、構造解析部21Bは、「特定ルールテーブル(「第2特定テーブル」)」を用いて、所定機能以外の機能に対応するコードブロックを特定する。「第2特定テーブル」は、起点となるコードブロックの種別と、該種別に応じて特定すべき特定対象コードブロックの特徴とを対応付けている。例えば、「第2特定テーブル」において、起点となるコードブロックである「認証機能のコードブロック」に対しては、「特定対象コードブロックの特徴」として、「コントロールフローグラフにおいて認証ルーチンを通った後に存在するコードブロック」が対応付けられている。また、例えば、「第2特定テーブル」において、起点となるコードブロックである「コマンドパーサ機能のコードブロック」に対しては、「特定対象コードブロックの特徴」として、「パーサによって入力をパースした後にディスパッチされるコマンド又は関数を含む機能ブロック」が対応付けられている。なお、図3に示すコントロールフローグラフにおいて、「認証機能のコードブロック」及び「(図3にて丸で示されている)特定対象コードブロック」は、それぞれ「ノード」と呼ぶこともできる。また、図3に示すコントロールフローグラフにおいて、矢印は、コントロールフローに対応する。
検査部22は、第1実施形態の検査部12と同様に、バックドアブロックを特定する。
第1の例として、検査部22は、特定部21によって特定された複数のコードブロックのうちから、「仕様書に記載がない固定値との比較を操作するコードブロック」を特定し、この特定されたコードブロックを「バックドアブロック」として特定する。
第2の例として、検査部22は、特定部21によって特定された複数のコードブロックのうちから、コントロールフローグラフにおいて、認証コードブロックを通らずに、認証が必要な実行部分に対応するコードブロックに至るパスが存在するときに、そのパスに対応するコードブロックを「バックドアブロック」として特定する。
第3の例として、検査部22は、特定部21によって特定された複数のコードブロックのうちから、仕様書に記載が無いコマンド(又は関数)を含むコードブロックを「バックドアブロック」として特定する。
第4の例として、検査部22は、特定部21によって特定された複数のコードブロックのうちから、特定部21にて作成されたコントロールフローグラフから辿ることができないコードブロック(つまり、死んでいるコード(デッドコード))を「バックドアブロック」として特定する。図4は、デッドコードの説明に供する図である。
第5の例として、検査部22は、特定部21によって特定された複数のコードブロックのうちから、仕様書に記載されていない挙動を示す可能性のあるコードブロックを「バックドアブロック」として特定する。
そして、検査部22は、特定した各バックドアブロックに対して、「バックドアスコア」を付与する。例えば、検査部22は、特定した各バックドアブロックに対して、バックドアブロックのタイプに応じた「バックドアスコア」を付与する。「バックドアスコア」は、スコア値が高いほどバックドアである可能性が高いことを示している。検査部22は、バックドアブロックの複数のタイプと各タイプに応じたバックドアスコアとを対応づけた「スコアテーブル」を用いて、特定した各バックドアブロックに対して、タイプに応じたバックドアスコアを付与してもよい。
例えば、「スコアテーブル」において、上記の第1の例から第4の例のそれぞれに対応するバックドアタイプには、後述する「判定閾値」よりも大きいバックドアスコア値が対応づけられ、上記の第5の例に対応するバックドアタイプには、その「判定閾値」以下のバックドアスコア値が対応づけられている。
修正処理部23は、第1実施形態の修正処理部13と同様に、対象ソフトウェアにおけるバックドアブロックに対して、「不実行化処理」又は「監視対象化処理」を実行する。
例えば、修正処理部23は、特定部21にて特定された「形態情報」に基づいて、「削除処理」、「無効化処理」、及び「挿入処理」のうちから、バックドアブロックに対して実行する「実行処理」を決定する。例えば、修正処理部23は、特定部21から受け取る「形態情報」がソースコードを示す場合、「削除処理」を「実行処理」として決定する。なお、「削除処理」が行われる場合には、バックドアブロックが削除された対象ソフトウェアを実際に実行して問題がないか否かについて確認されてもよい。
一方、修正処理部23は、「形態情報」がバイナリコードを示す場合、「無効化処理」又は「挿入処理」を「実行処理」として決定する。例えば、修正処理部23は、処理対象のバックドアブロックに対応する形態情報がバイナリコードを示し且つ処理対象のバックドアブロックに対応するバックドアスコア値が「判定閾値」よりも大きい場合、「無効化処理」を「実行処理」として決定する。また、修正処理部23は、処理対象のバックドアブロックに対応する形態情報がバイナリコードを示し且つ処理対象のバックドアブロックに対応するバックドアスコア値が「判定閾値」以下である場合、「挿入処理」を「実行処理」として決定する。
例えば、修正処理部23は、「無効化処理」において、バックドアブロックを「無効な命令」に書き換える。「無効な命令」は、例えば、NOP(No OPeration)命令や例外処理を行う命令である。また、バイナリコードは、メモリ管理において、複数のページに渡って管理されることがある。このため、修正処理部23は、ソフトウェアにてバックドアブロックによって占有されているページが存在する場合、「無効化処理」において、そのページを無効に設定してもよい。
また、例えば、修正処理部23は、「挿入処理」において、バイナリ計装(Binary instrumentation)によって監視コードを対象ソフトウェアに挿入してもよい。監視コードは、例えば、バックドアブロックが実行されたときに、ログを収集するコードであってもよいし、アラートを出力するコードであってもよい。
ここで、バイナリコードの中に新しいコードを追加すること、及び、バイナリコードの中に存在するコードを削除することは、技術的に難しい。そのため、バイナリコードに修正を加える際には、バイナリコードの中にあるコード(命令)を書き換えるか、バイナリ計装によってコードを挿入している。一方で、ソースコードに修正を加える際には、ソースコードからバックドアコードを削除する。そして、バックドコードを削除した後のソースコードをコンパイルしてバイナリコードを作成すればよい。
<ソフトウェア修正装置の動作例>
以上の構成を有するソフトウェア修正装置20の処理動作の一例について説明する。図5は、第2実施形態におけるソフトウェア修正装置の処理動作の一例を示すフローチャートである。
特定部21は、対象ソフトウェアを受け取り、この対象ソフトウェアの形態を特定する(ステップS101)。
特定部21は、対象ソフトウェアに含まれる複数のコードブロックを特定する(ステップS102)。
検査部22は、バックドアブロックを特定し、特定したバックドアブロックに対してタイプに応じたバックドアスコアを付与する(ステップS103)。
修正処理部23は、対象ソフトウェアがソースコードであるか否かを判定する(ステップS104)。
対象ソフトウェアがソースコードである場合(ステップS104YES)、修正処理部23は、対象ソフトウェアからバックドアブロックを削除する(ステップS105)。なお、ステップS103で複数のバックドアブロックが特定された場合、すべてのバックドアブロックを対象ソフトウェアから削除する。
対象ソフトウェアがソースコードでない場合、つまり、対象ソフトウェアがバイナリコードである場合(ステップS104NO)、修正処理部23は、ステップS103で特定されたバックドアブロックに付与されたバックドアスコアが判定閾値より大きいか否かを判定する(ステップS106)。
バックドアスコアが判定閾値より大きい場合(ステップS106YES)、修正処理部23は、バックドアブロックに対して「無効化処理」を実行する(ステップS107)。また、バックドアスコアが判定閾値以下である場合(ステップS106NO)、修正処理部23は、対象ソフトウェアにおいてバックドアブロックの前に監視コードを挿入する挿入処理を実行する(ステップS108)。
なお、ステップS103で複数のバックドアブロックが特定された場合、修正処理部23は、複数のバックドアブロックに対してステップS106,S107,S108の処理ステップを繰り返すことになる。
以上で説明したように第2実施形態によれば、ソフトウェア修正装置20にて修正処理部23は、対象ソフトウェアがソースコードであるか又はバイナリコードであるかを示す「形態情報」に基づいて、「削除処理」、「無効化処理」、及び「挿入処理」のうちから、バックドアブロックに対して実行する「実行処理」を決定する。
このソフトウェア修正装置20の構成により、対象ソフトウェアの形態にマッチした、バックドアブロックに対する対処が可能となる。
また、ソフトウェア修正装置20にて修正処理部23は、形態情報に加えてバックドアスコアに基づいて、削除処理、無効化処理、及び挿入処理のうちから、バックドアブロックに対して実行する実行処理を決定する。バックドアスコアは、バックドアブロックがバックドアである可能性を示すスコアである。
このソフトウェア修正装置20の構成により、バックドアである可能性に応じた、バックドアブロックに対する対処が可能となる。
<他の実施形態>
図6は、ソフトウェア修正装置のハードウェア構成例を示す図である。図6においてソフトウェア修正装置は、プロセッサ101と、メモリ102とを有している。プロセッサ101は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であってもよい。プロセッサ101は、複数のプロセッサを含んでもよい。メモリ102は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ102は、プロセッサ101から離れて配置されたストレージを含んでもよい。この場合、プロセッサ101は、図示されていないI/Oインタフェースを介してメモリ102にアクセスしてもよい。
第1実施形態及び第2実施形態のソフトウェア修正装置10,20は、それぞれ、図6に示したハードウェア構成を有することができる。第1実施形態及び第2実施形態のソフトウェア修正装置10,20の特定部11,21と、検査部12,22と、修正処理部13,23とは、プロセッサ101がメモリ102に記憶されたプログラムを読み込んで実行することにより実現されてもよい。プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、ソフトウェア修正装置10,20に供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、非一時的なコンピュータ可読媒体の例は、CD-ROM(Read Only Memory)、CD-R、CD-R/Wを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってソフトウェア修正装置10,20に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをソフトウェア修正装置10,20に供給できる。
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
を具備するソフトウェア修正装置。
(付記2)
前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含む、
付記1記載のソフトウェア修正装置。
(付記3)
前記特定手段は、
前記ソフトウェアにおいて、予め定められた所定機能に対応する所定コードブロックを特定する特定処理手段と、
前記特定された所定コードブロックを起点としてコントロールフローを辿ることによって、前記ソフトウェアの構造を解析すると共に、前記所定機能以外の機能に対応するコードブロックを特定する構造解析手段と、
を具備する、
付記2記載のソフトウェア修正装置。
(付記4)
前記修正処理手段は、前記ソフトウェアがソースコードであるか又はバイナリコードであるかを示す形態情報に基づいて、前記削除処理、前記無効化処理、及び前記挿入処理のうちから、前記バックドアブロックに対して実行する実行処理を決定する、
付記2又は3に記載のソフトウェア修正装置。
(付記5)
前記検査手段は、前記バックドアブロックがバックドアである可能性を示すスコアを決定し、
前記修正処理手段は、前記形態情報及び前記スコアに基づいて、前記削除処理、前記無効化処理、及び前記挿入処理のうちから、前記バックドアブロックに対して実行する実行処理を決定する、
付記4記載のソフトウェア修正装置。
(付記6)
前記修正処理手段は、前記ソフトウェアがソースコードである場合、前記削除処理を前記実行処理として決定する、
付記5記載のソフトウェア修正装置。
(付記7)
前記修正処理手段は、前記ソフトウェアがバイナリコードであり且つ前記スコアが閾値より大きい場合、前記無効化処理を前記実行処理として決定し、前記ソフトウェアがバイナリコードであり且つ前記スコアが前記閾値以下である場合、前記挿入処理を前記実行処理として決定する、
付記5又は6に記載のソフトウェア修正装置。
(付記8)
前記修正処理手段は、前記無効化処理において、前記バックドアブロックを無効な命令に書き換える、
付記2記載のソフトウェア修正装置。
(付記9)
前記修正処理手段は、前記ソフトウェアに含まれるページであり且つ前記バックドアブロックによって占有されているページが存在する場合、前記無効化処理において、前記ページを無効に設定する、
付記2記載のソフトウェア修正装置。
(付記10)
検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
を含むソフトウェア修正方法。
(付記11)
検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
を含む処理を、ソフトウェア修正装置に実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
10 ソフトウェア修正装置
11 特定部
12 検査部
13 修正処理部
20 ソフトウェア修正装置
21 特定部
21A 特定処理部
21B 構造解析部
22 検査部
23 修正処理部

Claims (10)

  1. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
    を具備し、
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記特定手段は、
    前記ソフトウェアにおいて、予め定められた所定機能に対応する所定コードブロックを特定する特定処理手段と、
    前記特定された所定コードブロックを起点としてコントロールフローを辿ることによって、前記ソフトウェアの構造を解析すると共に、前記所定機能以外の機能に対応するコードブロックを特定する構造解析手段と、
    を具備する、
    フトウェア修正装置。
  2. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
    を具備し、
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記修正処理手段は、前記ソフトウェアがソースコードであるか又はバイナリコードであるかを示す形態情報に基づいて、前記削除処理、前記無効化処理、及び前記挿入処理のうちから、前記バックドアブロックに対して実行する実行処理を決定する、
    フトウェア修正装置。
  3. 前記検査手段は、前記バックドアブロックがバックドアである可能性を示すスコアを決定し、
    前記修正処理手段は、前記形態情報及び前記スコアに基づいて、前記削除処理、前記無効化処理、及び前記挿入処理のうちから、前記バックドアブロックに対して実行する実行処理を決定する、
    請求項記載のソフトウェア修正装置。
  4. 前記修正処理手段は、前記ソフトウェアがソースコードである場合、前記削除処理を前記実行処理として決定する、
    請求項記載のソフトウェア修正装置。
  5. 前記修正処理手段は、前記ソフトウェアがバイナリコードであり且つ前記スコアが閾値より大きい場合、前記無効化処理を前記実行処理として決定し、前記ソフトウェアがバイナリコードであり且つ前記スコアが前記閾値以下である場合、前記挿入処理を前記実行処理として決定する、
    請求項又はに記載のソフトウェア修正装置。
  6. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
    を具備し、
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記修正処理手段は、前記無効化処理において、前記バックドアブロックを無効な命令に書き換える、
    フトウェア修正装置。
  7. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
    を具備し、
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記修正処理手段は、前記ソフトウェアに含まれるページであり且つ前記バックドアブロックによって占有されているページが存在する場合、前記無効化処理において、前記ページを無効に設定する、
    フトウェア修正装置。
  8. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定する特定手段と、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する検査手段と、
    前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行する修正処理手段と、
    を具備するソフトウェア修正装置。
  9. コンピュータが実行するソフトウェア修正方法であって、
    検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
    を含み、
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記複数のコードブロックを特定することは、
    前記ソフトウェアにおいて、予め定められた所定機能に対応する所定コードブロックを特定することと、
    前記特定された所定コードブロックを起点としてコントロールフローを辿ることによって、前記ソフトウェアの構造を解析すると共に、前記所定機能以外の機能に対応するコードブロックを特定することと、
    を含む、
    ソフトウェア修正方法。
  10. 検査対象であるソフトウェアに含まれる複数のコードブロックを特定すること、
    特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定すること、及び、
    前記特定されたバックドアブロックを実行されない状態にする不実行化処理、又は、前記特定されたバックドアブロックが実行されるときに監視される対象にするための監視対象化処理を、前記ソフトウェアにおける前記バックドアブロックに対して実行すること、
    を含む処理を、ソフトウェア修正装置に実行させ
    前記不実行化処理は、前記バックドアブロックを前記ソフトウェアから削除する削除処理、又は、前記バックドアブロックを無効化する無効化処理を含み、
    前記監視対象化処理は、前記バックドアブロックを監視するための監視コードを前記ソフトウェアに挿入する挿入処理を含み、
    前記複数のコードブロックを特定することは、
    前記ソフトウェアにおいて、予め定められた所定機能に対応する所定コードブロックを特定することと、
    前記特定された所定コードブロックを起点としてコントロールフローを辿ることによって、前記ソフトウェアの構造を解析すると共に、前記所定機能以外の機能に対応するコードブロックを特定することと、
    を含む、
    プログラム。
JP2022530410A 2020-06-09 2020-06-09 ソフトウェア修正装置、ソフトウェア修正方法、及びプログラム Active JP7468641B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/022747 WO2021250792A1 (ja) 2020-06-09 2020-06-09 ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体

Publications (3)

Publication Number Publication Date
JPWO2021250792A1 JPWO2021250792A1 (ja) 2021-12-16
JPWO2021250792A5 JPWO2021250792A5 (ja) 2023-02-15
JP7468641B2 true JP7468641B2 (ja) 2024-04-16

Family

ID=78845512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022530410A Active JP7468641B2 (ja) 2020-06-09 2020-06-09 ソフトウェア修正装置、ソフトウェア修正方法、及びプログラム

Country Status (3)

Country Link
US (1) US20230252150A1 (ja)
JP (1) JP7468641B2 (ja)
WO (1) WO2021250792A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3201354A1 (en) * 2020-12-16 2022-06-23 Satya V. Gupta Software build system protection engine

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018529156A (ja) 2015-08-13 2018-10-04 グラスウォール・(アイピー)・リミテッド リスクを管理するための、ポリシ管理の複数段階の使用

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262296B1 (en) * 2014-01-31 2016-02-16 Cylance Inc. Static feature extraction from structured files

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018529156A (ja) 2015-08-13 2018-10-04 グラスウォール・(アイピー)・リミテッド リスクを管理するための、ポリシ管理の複数段階の使用

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SCHUSTER,Felix et al.,Towards Reducing the Attack Surface of Software Backdoors,CCS'13:2013 ACM SIGSAC Conference on Computer and Communication Security,ドイツ,Association for Computing Machinery,2013年,pp.851-862,ISBN:978-1-4503-2477-9
嶋田 有佑 ほか,バックドア検知技術の調査と今後の展望,コンピュータセキュリティシンポジウム2019論文集,日本,情報処理学会,2019年,pp.1440-1447,ISSN:1882-0840
株式会社シャニム,添付のWordファイルに仕込まれたマルウェア巧妙な攻撃メール、マクロ機能の実行で感染,2020年03月10日,[検索日 2020.09.04]インターネット:<URL http://shanimu.com/2020/03/10/post-12834/>

Also Published As

Publication number Publication date
WO2021250792A1 (ja) 2021-12-16
JPWO2021250792A1 (ja) 2021-12-16
US20230252150A1 (en) 2023-08-10

Similar Documents

Publication Publication Date Title
US9230106B2 (en) System and method for detecting malicious software using malware trigger scenarios in a modified computer environment
US8370931B1 (en) Multi-behavior policy matching for malware detection
US8978142B2 (en) System and method for detection of malware using behavior model scripts of security rating rules
WO2019148816A1 (en) Method and apparatus for data compilation, electronic device and computer readable storage medium
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
JP7468641B2 (ja) ソフトウェア修正装置、ソフトウェア修正方法、及びプログラム
CN111914250A (zh) 一种Linux系统脚本程序运行时验证与管控方法
US20220277079A1 (en) Backdoor inspection device, method, and non-transitory computer-readable medium
US20240143786A1 (en) Source code clustering for automatically identifying false positives generated through static application security testing
JP7235126B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
EP3692456B1 (en) Binary image stack cookie protection
US11941115B2 (en) Automatic vulnerability detection based on clustering of applications with similar structures and data flows
KR20210110074A (ko) 악성코드의 기능을 분석하는 방법 및 장치
CN110244954B (zh) 一种应用程序的编译方法及设备
CN113392016A (zh) 对程序异常情况处理的规约生成方法、装置、设备及介质
JP7052870B2 (ja) 仮説推論装置、仮説推論方法、及びプログラム
JP7302223B2 (ja) スクリプト検出装置、方法及びプログラム
JP2021096685A (ja) テスト実行プログラム、テスト実行方法、およびテスト実行装置
JP7448005B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
JP7276465B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
WO2022201323A1 (ja) シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体
JPWO2020065778A1 (ja) 情報処理装置、制御方法、及びプログラム
WO2023152880A1 (ja) 脆弱性解析装置及び脆弱性解析方法
JP7287478B2 (ja) 学習装置、判別システム、学習方法及び学習プログラム
WO2022201324A1 (ja) プログラム解析装置、プログラム解析方法、及び、プログラムが格納された非一時的なコンピュータ可読媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240221

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: 20240305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240318