WO2021250792A1 - ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体 - Google Patents

ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体 Download PDF

Info

Publication number
WO2021250792A1
WO2021250792A1 PCT/JP2020/022747 JP2020022747W WO2021250792A1 WO 2021250792 A1 WO2021250792 A1 WO 2021250792A1 JP 2020022747 W JP2020022747 W JP 2020022747W WO 2021250792 A1 WO2021250792 A1 WO 2021250792A1
Authority
WO
WIPO (PCT)
Prior art keywords
backdoor
block
software
code
specified
Prior art date
Application number
PCT/JP2020/022747
Other languages
English (en)
French (fr)
Inventor
有佑 嶋田
貴之 佐々木
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US18/008,770 priority Critical patent/US20230252150A1/en
Priority to PCT/JP2020/022747 priority patent/WO2021250792A1/ja
Priority to JP2022530410A priority patent/JP7468641B2/ja
Publication of WO2021250792A1 publication Critical patent/WO2021250792A1/ja

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/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/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/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

Definitions

  • This disclosure relates to a software modification device, a software modification method, and a non-temporary computer-readable medium.
  • Patent Document 1 proposes a technique for deleting the software from the management system when it is suspected that the software contains a virus.
  • infrastructure and corporate systems are becoming more complicated. For this reason, infrastructure and corporate systems are not only composed of devices from a single company, but are built by procuring devices from various companies from the outside and combining them.
  • the "backdoor” can be defined, for example, as a function that is not known to and is not desired by the user, which is incorporated into the software including a plurality of functions as a part of the software.
  • An object of the present disclosure is to provide a software modification device, a software modification method, and a non-temporary computer-readable medium that enable the use of software including a backdoor block.
  • the software modification device includes a specific means for identifying a plurality of code blocks included in the software to be inspected, and a specific means. For each identified code block, it is determined whether or not it is a code block that may be a backdoor, and the code block that is determined to be a backdoor is specified as a backdoor block. Inspection means and The software performs a non-execution process for making the specified backdoor block unexecutable, or a monitoring target process for making the specified backdoor block a target to be monitored when it is executed. The correction processing means executed for the backdoor block and Equipped with.
  • the software modification method is to identify a plurality of code blocks contained in the software to be inspected. For each identified code block, it is determined whether or not it is a code block that may be a backdoor, and the code block that is determined to be a backdoor is specified as a backdoor block. What to do and The software performs a non-execution process for making the specified backdoor block unexecutable, or a monitoring target process for making the specified backdoor block a target to be monitored when it is executed. What to do with the backdoor block, including.
  • the non-transitory computer-readable medium identifies a plurality of code blocks contained in the software to be inspected. For each identified code block, it is determined whether or not it is a code block that may be a backdoor, and the code block that is determined to be a backdoor is specified as a backdoor block. What to do and The software performs a non-execution process for making the specified backdoor block unexecutable, or a monitoring target process for making the specified backdoor block a target to be monitored when it is executed. What to do with the backdoor block, The program that causes the software correction device to execute the process including the above is stored.
  • This disclosure makes it possible to provide a software modification device, a software modification method, and a non-temporary computer-readable medium that enable the use of software including a backdoor block.
  • FIG. 1 is a block diagram showing an example of a software modification device according to the first embodiment.
  • the software correction device 10 has a specific unit 11, an inspection unit 12, and a correction processing unit 13.
  • the software modification device 10 receives the software to be inspected (hereinafter, may be simply referred to as "target software").
  • the target software may be source code before compilation or binary code after compilation.
  • the identification unit 11 identifies a plurality of "code blocks" included in the target software.
  • the "code block” may be, for example, a functional block corresponding to a function included in the target software, or may be a basic block having a unit smaller than the functional block.
  • the inspection unit 12 determines whether or not each of the identified code blocks is a code block that may be a backdoor, and determines whether or not the code block is a backdoor. Specify as a "backdoor block (candidate backdoor block)".
  • the correction processing unit 13 executes "non-execution processing” or "monitoring target processing” for the backdoor block in the target software.
  • the “non-execution process” is a process for making the backdoor block unexecutable.
  • the “non-execution process” may include a “deletion process” for deleting the backdoor block from the target software, or a “deactivation process” for invalidating the backdoor block.
  • the “monitoring target processing” is a processing for targeting to be monitored when the backdoor block is executed.
  • the “monitoring target processing” may include an "insertion processing” for inserting a "monitoring code” for monitoring the backdoor block into the target software.
  • the backdoor block in the target software is not executed or is monitored, instead of invalidating the entire target software including the backdoor block. Can be done.
  • the software including the backdoor block can be used, and the software including the backdoor block can be effectively used.
  • the software correction device 10 is executing the following software correction method.
  • This software modification method identifies multiple code blocks contained in the software to be inspected, and determines whether or not each identified code block is a code block that may be a backdoor. Then, the code block determined to be a backdoor is specified as the backdoor block, and the non-execution process for making the specified backdoor block unexecutable, or the specification. Includes performing a monitoring targeting process on the backdoor block in the software to make it a target to be monitored when the backdoor block is executed.
  • the second embodiment relates to a more specific embodiment.
  • FIG. 2 is a block diagram showing an example of the software modification device according to the second embodiment.
  • the software correction device 20 has a specific unit 21, an inspection unit 22, and a correction processing unit 23.
  • the specific unit 21 identifies a plurality of "code blocks" included in the target software, as in the specific unit 11 of the first embodiment.
  • the specific unit 21 includes a specific processing unit 21A and a structural analysis unit 21B.
  • the specific processing unit 21A specifies the form of the target software, that is, whether the target software is a source code or a binary code.
  • form information information regarding the form of the target software may be referred to as "form information”.
  • the specific processing unit 21A specifies a "predetermined code block” corresponding to the "predetermined predetermined function” in the target software.
  • the "predetermined predetermined function” is, for example, an “interface function", an "authentication function (authentication routine)", a “command parser function (parser routine)", or the like. That is, the "predetermined predetermined function” is a function in which various functions follow. That is, the "predetermined predetermined function” corresponds to the code block that is the starting point in the control flow graph for the target software.
  • the specific processing unit 21A uses, for example, a "specific rule table ("first specific table ”)" in which a plurality of predetermined functions and features of the predetermined code blocks corresponding to each predetermined function are associated with each other to generate a predetermined code block. It may be specified. In this case, the specific processing unit 21A specifies a portion of the target software that matches the characteristics of each predetermined code block held in the specific rule table as the predetermined code block. Further, the specifying processing unit 21A may execute one or a plurality of algorithms or modules for specifying a predetermined function instead of the table to specify a predetermined code block.
  • the structural analysis unit 21B analyzes the structure of the target software by tracing the control flow starting from the predetermined code block specified by the specific processing unit 21A, and identifies the code block corresponding to the function other than the predetermined function. ..
  • the structural analysis unit 21B creates a control flow graph as shown in FIG. 3 by tracing the control flow starting from the code block of the authentication function specified by the specific processing unit 21A.
  • the structural analysis unit 21B uses the "specific rule table (" second specific table ")" to specify the code block corresponding to the function other than the predetermined function.
  • the "second specific table” associates the type of the code block that is the starting point with the characteristics of the specific target code block that should be specified according to the type.
  • the "characteristic of the specific target code block” is "after passing through the authentication routine in the control flow graph”. "Existing code block” is associated.
  • the "code block of the command parser function” which is the starting code block as the "characteristic of the specific target code block", "after parsing the input by the parser”.
  • a functional block containing a command or function to be dispatched is associated with it.
  • the "authentication function code block” and the “specific target code block (indicated by circles in FIG. 3)" can also be referred to as “nodes", respectively.
  • the arrows correspond to the control flow.
  • the inspection unit 22 identifies the backdoor block as in the inspection unit 12 of the first embodiment.
  • the inspection unit 22 identifies "a code block that operates a comparison with a fixed value not described in the specification" from a plurality of code blocks specified by the specific unit 21, and this identification is performed.
  • the code block is specified as a "backdoor block”.
  • the inspection unit 22 does not pass through the authentication code block in the control flow graph from among the plurality of code blocks specified by the specific unit 21, and the inspection unit 22 corresponds to the execution part that requires authentication.
  • the code block corresponding to that path is specified as a "backdoor block”.
  • the inspection unit 22 specifies a code block including a command (or function) not described in the specification as a "backdoor block" from a plurality of code blocks specified by the specific unit 21. ..
  • the inspection unit 22 is a code block (that is, dead) that cannot be traced from the control flow graph created by the specific unit 21 from among the plurality of code blocks specified by the specific unit 21.
  • Code (dead code)) is specified as a "backdoor block”.
  • FIG. 4 is a diagram for explaining the dead code.
  • the inspection unit 22 identifies a code block that may exhibit behavior not described in the specification as a "backdoor block" from among a plurality of code blocks specified by the specific unit 21. do.
  • the inspection unit 22 assigns a "backdoor score” to each identified backdoor block. For example, the inspection unit 22 assigns a "backdoor score” according to the type of the backdoor block to each of the specified backdoor blocks. The "backdoor score” indicates that the higher the score value, the higher the possibility of a backdoor.
  • the inspection unit 22 uses a "score table" in which a plurality of types of backdoor blocks are associated with backdoor scores corresponding to each type, and for each identified backdoor block, a backdoor corresponding to the type is used. A score may be given.
  • the backdoor type corresponding to each of the first to fourth examples is associated with a backdoor score value larger than the "judgment threshold” described later, and is described above.
  • a backdoor score value equal to or lower than the "determination threshold” is associated with the backdoor type corresponding to the fifth example.
  • the correction processing unit 23 executes "non-execution processing” or “monitoring target processing” for the backdoor block in the target software, similarly to the correction processing unit 13 of the first embodiment.
  • the correction processing unit 23 may perform a backdoor block from among the “deletion processing”, the “invalidation processing”, and the “insertion processing” based on the “morphological information” specified by the specific unit 21. Determine the “execution process” to be executed. For example, when the "form information" received from the specific unit 21 indicates the source code, the correction processing unit 23 determines the "deletion processing" as the "execution processing". When the "deletion process" is performed, it may be confirmed whether or not there is a problem by actually executing the target software in which the backdoor block is deleted.
  • the correction processing unit 23 determines "invalidation processing” or "insertion processing” as “execution processing”. For example, the correction processing unit 23 is “invalid” when the form information corresponding to the backdoor block to be processed indicates a binary code and the backdoor score value corresponding to the backdoor block to be processed is larger than the "determination threshold value”. "Chemical processing” is determined as “execution processing”. Further, when the form information corresponding to the backdoor block to be processed indicates a binary code and the backdoor score value corresponding to the backdoor block to be processed is equal to or less than the "determination threshold value", the correction processing unit 23 "inserts". "Process" is determined as "execution process”.
  • the correction processing unit 23 rewrites the backdoor block to an "invalid instruction" in the "invalidation processing".
  • the "invalid instruction” is, for example, a NOP (No OPeration) instruction or an instruction for performing exception handling.
  • the binary code may be managed over a plurality of pages in memory management. Therefore, if there is a page occupied by the backdoor block in the software, the correction processing unit 23 may set the page to be invalid in the "invalidation processing".
  • the correction processing unit 23 may insert the monitoring code into the target software by binary instrumentation in the “insertion processing”.
  • the monitoring code may be, for example, a code that collects logs when a backdoor block is executed, or a code that outputs an alert.
  • FIG. 5 is a flowchart showing an example of the processing operation of the software modification device according to the second embodiment.
  • the specifying unit 21 receives the target software and specifies the form of the target software (step S101).
  • the specifying unit 21 identifies a plurality of code blocks included in the target software (step S102).
  • the inspection unit 22 identifies the backdoor block and assigns a backdoor score according to the type to the identified backdoor block (step S103).
  • the correction processing unit 23 determines whether or not the target software is source code (step S104).
  • step S104YES When the target software is source code (step S104YES), the correction processing unit 23 deletes the backdoor block from the target software (step S105). If a plurality of backdoor blocks are specified in step S103, all the backdoor blocks are deleted from the target software.
  • step S104NO When the target software is not source code, that is, when the target software is binary code (step S104NO), the correction processing unit 23 has a backdoor score given to the backdoor block specified in step S103 larger than the determination threshold value. Whether or not it is determined (step S106).
  • step S106YES When the backdoor score is larger than the determination threshold value (step S106YES), the correction processing unit 23 executes "invalidation processing" for the backdoor block (step S107). When the backdoor score is equal to or less than the determination threshold value (step S106NO), the correction processing unit 23 executes an insertion process of inserting the monitoring code in front of the backdoor block in the target software (step S108).
  • step S103 the correction processing unit 23 repeats the processing steps of steps S106, S107, and S108 for the plurality of backdoor blocks.
  • the correction processing unit 23 in the software correction device 20 is based on "form information" indicating whether the target software is a source code or a binary code. From the “deletion process”, “invalidation process”, and “insertion process”, the “execution process” to be executed for the backdoor block is determined.
  • this software modification device 20 With the configuration of this software modification device 20, it is possible to deal with a backdoor block that matches the form of the target software.
  • the correction processing unit 23 executes an execution process for the backdoor block from the deletion process, the invalidation process, and the insertion process based on the backdoor score in addition to the form information.
  • the backdoor score is a score indicating that the backdoor block may be a backdoor.
  • this software modification device 20 With the configuration of this software modification device 20, it is possible to deal with a backdoor block according to the possibility of a backdoor.
  • FIG. 6 is a diagram showing a hardware configuration example of the software modification device.
  • the software modification device has a processor 101 and a memory 102.
  • the processor 101 may be, for example, a microprocessor, an MPU (Micro Processing Unit), or a CPU (Central Processing Unit).
  • the processor 101 may include a plurality of processors.
  • the memory 102 is composed of a combination of a volatile memory and a non-volatile memory.
  • the memory 102 may include storage located away from the processor 101. In this case, the processor 101 may access the memory 102 via an I / O interface (not shown).
  • the software modification devices 10 and 20 of the first embodiment and the second embodiment can each have the hardware configuration shown in FIG.
  • the specific units 11 and 21, the inspection units 12 and 22, and the correction processing units 13 and 23 of the software modification devices 10 and 20 of the first embodiment and the second embodiment are programs in which the processor 101 is stored in the memory 102. It may be realized by reading and executing.
  • the program is stored using various types of non-transitory computer readable medium and can be supplied to the software modification devices 10 and 20. Examples of non-temporary computer-readable media include magnetic recording media (eg, flexible disks, magnetic tapes, hard disk drives), magneto-optical recording media (eg, magneto-optical disks).
  • non-temporary computer-readable media examples include CD-ROM (Read Only Memory), CD-R, and CD-R / W.
  • non-transient computer-readable media include semiconductor memory.
  • the semiconductor memory includes, for example, a mask ROM, a PROM (Programmable ROM), an EPROM (Erasable PROM), a flash ROM, and a RAM (Random Access Memory).
  • the program may also be supplied to the software modifiers 10 and 20 by various types of temporary computer readable medium. Examples of temporary computer-readable media include electrical, optical, and electromagnetic waves.
  • the temporary computer-readable medium can supply the program to the software modification devices 10 and 20 via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.
  • Appendix 1 Specific means to identify multiple code blocks contained in the software to be inspected, and For each identified code block, it is determined whether or not it is a code block that may be a backdoor, and the code block that is determined to be a backdoor is specified as a backdoor block. Inspection means and The software performs a non-execution process for making the specified backdoor block unexecutable, or a monitoring target process for making the specified backdoor block a target to be monitored when it is executed. The correction processing means executed for the backdoor block and A software modification device equipped with.
  • the non-execution process includes a deletion process for deleting the backdoor block from the software, or an invalidation process for invalidating the backdoor block.
  • the monitoring targeting process includes an insertion process of inserting a monitoring code for monitoring the backdoor block into the software.
  • the specific means is In the software, a specific processing means for specifying a predetermined code block corresponding to a predetermined predetermined function, and A structural analysis means for analyzing the structure of the software by following the control flow starting from the specified predetermined code block and specifying a code block corresponding to a function other than the predetermined function. Equipped with The software correction device described in Appendix 2.
  • the correction processing means sets the backdoor block from the deletion processing, the invalidation processing, and the insertion processing based on the form information indicating whether the software is source code or binary code. Determines the execution process to be executed The software modification device according to Appendix 2 or 3.
  • the inspection means determines a score indicating that the backdoor block is likely to be a backdoor.
  • the correction processing means determines an execution process to be executed for the backdoor block from the deletion process, the invalidation process, and the insertion process based on the form information and the score.
  • the software correction device according to Appendix 4.
  • the correction processing means determines the deletion processing as the execution processing.
  • the software correction device according to Appendix 5.
  • the correction processing means rewrites the backdoor block with an invalid instruction in the invalidation process.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

ソフトウェア修正装置(10)にて特定部(11)は、対象ソフトウェアに含まれる複数のコードブロックを特定する。検査部(12)は、特定された各コードブロックに対して、バックドアである可能性があるコードブロックであるか否かを判定して、バックドアである可能性があると判定されたコードブロックをバックドアブロックとして特定する。修正処理部(13)は、対象ソフトウェアにおけるバックドアブロックに対して、不実行化処理又は監視対象化処理を実行する。不実行化処理は、バックドアブロックを実行されない状態にする処理である。監視対象化処理は、バックドアブロックが実行されるときに監視される対象にするための処理である。

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 (11)

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/008,770 US20230252150A1 (en) 2020-06-09 2020-06-09 Software correcting apparatus, software correcting method, and non-transitory computer readable medium
PCT/JP2020/022747 WO2021250792A1 (ja) 2020-06-09 2020-06-09 ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体
JP2022530410A JP7468641B2 (ja) 2020-06-09 2020-06-09 ソフトウェア修正装置、ソフトウェア修正方法、及びプログラム

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
WO2021250792A1 true WO2021250792A1 (ja) 2021-12-16

Family

ID=78845512

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/022747 WO2021250792A1 (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
US20220188408A1 (en) * 2020-12-16 2022-06-16 Virsec Systems, Inc. Software Build System Protection Engine

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017509962A (ja) * 2014-01-31 2017-04-06 サイランス・インコーポレイテッドCylance Inc. 構造化ファイルからの静的特徴抽出
JP2018529156A (ja) * 2015-08-13 2018-10-04 グラスウォール・(アイピー)・リミテッド リスクを管理するための、ポリシ管理の複数段階の使用

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017509962A (ja) * 2014-01-31 2017-04-06 サイランス・インコーポレイテッドCylance Inc. 構造化ファイルからの静的特徴抽出
JP2018529156A (ja) * 2015-08-13 2018-10-04 グラスウォール・(アイピー)・リミテッド リスクを管理するための、ポリシ管理の複数段階の使用

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FELIX SCHUSTER ; THORSTEN HOLZ: "Towards reducing the attack surface of software backdoors", COMPUTER & COMMUNICATIONS SECURITY, ACM, 2 PENN PLAZA, SUITE 701 NEW YORK NY 10121-0701 USA, 4 November 2013 (2013-11-04) - 8 November 2013 (2013-11-08), 2 Penn Plaza, Suite 701 New York NY 10121-0701 USA , pages 851 - 862, XP058034092, ISBN: 978-1-4503-2477-9, DOI: 10.1145/2508859.2516716 *
SHANIMU: "Malware Embedded in Word File Attachments; Ingenious Attack E-mails, Detection by Running Macro Functions", SHARP INCREASE OF ATTACKS IN JAPAN FROM THE END OF 2019!, 10 March 2020 (2020-03-10), Retrieved from the Internet <URL:http://shanimu.com/2020/03/10/post-12834/>> [retrieved on 20200904] *
vol. 2019, 2019, pages 1440 - 1447, ISSN: 1882-0840 *

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3939977B2 (ja) アクセス権矛盾検出装置および解析ルール作成装置
US20080289042A1 (en) Method for Identifying Unknown Virus and Deleting It
US8453237B2 (en) Verification of a segmented program on a parallel processing computing system
US20140075560A1 (en) Automatic classification of security vulnerabilities in computer software applications
CN107678748A (zh) 一种源代码文件编译方法及装置
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
WO2021250792A1 (ja) ソフトウェア修正装置、ソフトウェア修正方法、及び非一時的なコンピュータ可読媒体
JP7314243B2 (ja) マルウェアの悪意ある行為フィーチャー情報を生成する方法
JPWO2018021163A1 (ja) シグネチャ作成装置、シグネチャ作成方法、シグネチャ作成プログラムが記録された記録媒体、及び、ソフトウェア判定システム
JP2009169864A (ja) コンパイル方法およびコンパイルプログラム
JP5766650B2 (ja) 情報処理装置、監視方法および監視プログラム
CN114840418A (zh) 模糊测试方法及装置
KR102344496B1 (ko) 악성코드의 기능을 분석하는 방법 및 장치
JP7052870B2 (ja) 仮説推論装置、仮説推論方法、及びプログラム
JP7448005B2 (ja) バックドア検査装置、バックドア検査方法、及びプログラム
US11222113B1 (en) Automatically generating malware definitions using word-level analysis
CN113392016A (zh) 对程序异常情况处理的规约生成方法、装置、设备及介质
US9088604B1 (en) Systems and methods for treating locally created files as trustworthy
JP7302223B2 (ja) スクリプト検出装置、方法及びプログラム
CN112784290A (zh) 数据导出工具安全性分析方法及系统及数据导出方法
WO2022201323A1 (ja) シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、非一時的なコンピュータ可読媒体
JP2006106939A (ja) 侵入検知方法及び侵入検知装置並びにプログラム
US7305660B2 (en) Method to generate a formatted trace for an embedded device
JP7494917B2 (ja) プログラム解析装置、プログラム解析方法、及びプログラム
JPWO2020065778A1 (ja) 情報処理装置、制御方法、及びプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20940140

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022530410

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20940140

Country of ref document: EP

Kind code of ref document: A1