WO2023152880A1 - 脆弱性解析装置及び脆弱性解析方法 - Google Patents

脆弱性解析装置及び脆弱性解析方法 Download PDF

Info

Publication number
WO2023152880A1
WO2023152880A1 PCT/JP2022/005391 JP2022005391W WO2023152880A1 WO 2023152880 A1 WO2023152880 A1 WO 2023152880A1 JP 2022005391 W JP2022005391 W JP 2022005391W WO 2023152880 A1 WO2023152880 A1 WO 2023152880A1
Authority
WO
WIPO (PCT)
Prior art keywords
source code
vulnerable
vulnerability
product
software
Prior art date
Application number
PCT/JP2022/005391
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 PCT/JP2022/005391 priority Critical patent/WO2023152880A1/ja
Publication of WO2023152880A1 publication Critical patent/WO2023152880A1/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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Definitions

  • This disclosure relates to a vulnerability analysis device and a vulnerability analysis method.
  • Patent Document 1 searches for routes that allow direct access from an external network to a computer loaded with software affected by the vulnerability. Then, it is determined whether or not the software affected by the vulnerability is protected by a firewall or IPS (Intrusion Prevention System) on a route that can directly reach the computer. Then, based on the determination result, it is determined whether or not the software affected by the vulnerability can be directly attacked from an external network.
  • IPS Intrusion Prevention System
  • the present disclosure has been made in view of the above problems, and aims to provide a technology that can efficiently analyze vulnerabilities.
  • a vulnerability analysis device includes a first determination unit that determines whether a product uses one or more vulnerable software, and the vulnerable software that is determined to be used by the product. a identifying unit that identifies source code used by the product among the source codes as the used source code; and a matching unit that matches the used source code and the vulnerable source code, The vulnerability of the product caused by the use of the vulnerable software is determined based on the matching result with the vulnerable source code.
  • the vulnerability of a product caused by the use of vulnerable software is determined based on the results of matching the source code used by the product, among the source codes included in the vulnerable software, with the vulnerable source code. do. According to such a configuration, vulnerability analysis can be performed efficiently.
  • FIG. 1 is a block diagram showing the configuration of a vulnerability analysis device according to Embodiment 1;
  • FIG. 4 is a flowchart showing processing of the vulnerability analysis device according to Embodiment 1;
  • 4 is a diagram showing an example of software vulnerability information according to Embodiment 1;
  • FIG. 4 is a diagram schematically showing processing of the vulnerability analysis device according to Embodiment 1;
  • FIG. 9 is a block diagram showing the configuration of a vulnerability analysis device according to Embodiment 2; 9 is a flow chart showing processing of the vulnerability analysis device according to the second embodiment;
  • FIG. 10 is a diagram schematically showing processing of the vulnerability analysis device according to the second embodiment;
  • FIG. 10 is a diagram showing an example in which a function of vulnerable source code has a function call relationship from an external IF function;
  • FIG. 11 is a block diagram showing the configuration of a vulnerability analysis device according to Embodiment 3;
  • 10 is a flowchart showing processing of a vulnerability analysis device according to Embodiment 3; It is a block diagram which shows the hardware constitutions of the vulnerability-analysis apparatus based on another modification. It is a block diagram which shows the hardware constitutions of the vulnerability-analysis apparatus based on another modification.
  • FIG. 1 is a block diagram showing the configuration of the vulnerability analysis device according to the first embodiment.
  • the vulnerability analysis device in FIG. 1 is communicably connected to the product information storage device and the public information storage device.
  • the product information storage device has a usage software list 3 , product source code 6 and usage source code 7 .
  • the public information storage device has public software vulnerability information 2 , public software source code information 5 , and public countermeasure patch information 9 . Note that in the example of FIG. 1, the product information storage device is not provided in the vulnerability analysis device, but may be provided in the vulnerability analysis device.
  • the vulnerability analysis device in FIG. 1 includes a vulnerable software usage determination unit 1 as a first determination unit, a used source code identification unit 4 as an identification unit, and a source code matching unit 8 as a matching unit.
  • the vulnerable software usage determination unit 1 determines whether or not the product uses one or more vulnerable software.
  • Vulnerable software is software that can contribute to product vulnerabilities.
  • vulnerable software is open source software whose vulnerability has been disclosed, but it is not limited to this, and may be, for example, undisclosed software whose vulnerability is known to users. .
  • the vulnerable software usage determination unit 1 acquires the name and version of vulnerable software from the open software vulnerability information 2, and acquires the name and version of software used by the product from the used software list 3. . Based on the name and version of the vulnerable software and the name and version of the software used by the product, the vulnerable software usage determining unit 1 determines whether or not the product uses vulnerable software.
  • the used source code identification unit 4 identifies, as used source code, the source code used by the product among the source codes included in the vulnerable software determined to be used by the product.
  • the used source code identification unit 4 compares the vulnerable software source code acquired from the public software source code information 5 with the product source code acquired from the product source code 6, Identify the source code used.
  • the used source code As a result of the above, at least part of the source code included in the vulnerable software is identified as the used source code. At this stage, it is not determined whether there is vulnerability in the used source code or whether there is vulnerability in the vulnerable software other than the used source code.
  • the used source code specified by the used source code specifying unit 4 is stored as the used source code 7 in the product information storage device.
  • the source code matching unit 8 matches the used source code with the vulnerable source code, which is the source code that may cause the vulnerability of the product, and determines whether or not the used source code includes the vulnerable source code. , the determination result is generated as the matching result.
  • the source code collating unit 8 collates the used source code 7 in the product information storage device and the vulnerable source code on a file-by-file basis.
  • the published countermeasure patch included in the published countermeasure patch information 9 includes the source code partially corrected from the source code of the vulnerable software as the source code for eliminating the vulnerability of the vulnerable software.
  • the countermeasure patch has a corresponding relationship with the vulnerable source code. Therefore, in the first embodiment, the source code matching unit 8 uses the countermeasure patch included in the public countermeasure patch information 9 for the vulnerable source code.
  • the source code matching unit 8 determines product vulnerabilities caused by the use of vulnerable software based on the results of matching the used source code and the vulnerable source code. For example, if the matching result indicates that the used source code contains a vulnerable source code file, the source code matching unit 8 determines that the product is affected by the vulnerability of the vulnerable software, or determines that the product is vulnerable. determine that gender exists. On the other hand, if the collation result that the used source code does not contain vulnerable source code files is not obtained, the source code collating unit 8 determines that the product is not affected by the vulnerability of the vulnerable software, or determine that there are no vulnerabilities. In the following, this determination will be described as being performed by the source code matching unit 8, but it is not limited to this. can be done in departments.
  • FIG. 2 is a flowchart showing processing of the vulnerability analysis device according to the first embodiment. The process of FIG. 2 is performed when the process of the vulnerability analysis device starts.
  • step S1 the vulnerable software usage determination unit 1 acquires the name and version of vulnerable software whose vulnerability has been disclosed from the software vulnerability information stored in the public software vulnerability information 2.
  • FIG. 3 is a diagram showing an example of software vulnerability information stored in the public software vulnerability information 2.
  • the software vulnerability information includes, for example, an ID, a title indicating details of the vulnerability, an update date, the name of the software containing the vulnerability, its version, and a severity evaluation value.
  • the vulnerable software usage determination unit 1 periodically checks the information stored in the public software vulnerability information 2. Then, the vulnerable software usage determination unit 1 determines, from the information stored in the public software vulnerability information 2, for vulnerable software whose update date (that is, publication date) is after the last confirmed date, the name and vulnerability are included. Get version and .
  • step S2 the vulnerable software usage determination unit 1 determines from the product information stored in the usage software list 3 the software (hereinafter also referred to as usage software) used by the product to be analyzed by the vulnerability analysis device. existing), get the name and version information.
  • usage software hereinafter also referred to as usage software
  • the vulnerable software usage determination unit 1 determines whether the name of the used software matches the name of the vulnerable software and whether the version of the used software is included in the version of the vulnerable software. If the name of the used software matches the name of the vulnerable software and the version of the used software is included in the version of the vulnerable software, it is determined that the vulnerable software is used in the product to be analyzed, The process proceeds to step S4. Otherwise, it is determined that vulnerable software is not used in the analysis target product, and the process proceeds to step S9.
  • step S4 the used source code identification unit 4 acquires the source code of the vulnerable software determined to be used in the product from the public software source code information 5, and extracts the source code of the product to be analyzed from the product source code. Obtained from 6. Then, the used source code identification unit 4 compares the source code of the vulnerable software with the source code of the product to be analyzed to find out which source code included in the vulnerable software is used by the product to be analyzed. Identify source code as used source code. Then, the used source code specifying unit 4 stores the specified used source code as the used source code 7 in the product information storage device.
  • the source code collating unit 8 acquires the patch for the vulnerable software from the public patch information 9.
  • the source code matching unit 8 acquires the usage source code of the product to be analyzed from the usage source code 7 of the product information storage device.
  • step S7 the source code collating unit 8 uses the countermeasure patch acquired in step S5 as the vulnerable source code, and collates the vulnerable source code with the used source code acquired in step S6 on a file-by-file basis. Then, the source code matching unit 8 determines whether or not the used source code includes a vulnerable source code file. If it is determined that the used source code includes a file of vulnerable source code, it is determined that the product to be analyzed uses vulnerable source code, and the process proceeds to step S8. If it is determined that the used source code does not include the file of the vulnerable source code, it is determined that the product to be analyzed does not use the vulnerable source code, and the process proceeds to step S9.
  • step S8 the source code matching unit 8 determines that the product is affected by the vulnerability of the vulnerable software, or determines that the product has a vulnerability. After that, the process of FIG. 2 ends.
  • step S9 the source code matching unit 8 determines that the product is not affected by the vulnerability of the vulnerable software, or determines that the product is not vulnerable. After that, the process of FIG. 2 ends.
  • FIG. 4 is a diagram schematically showing the processing of the vulnerability analysis device.
  • the vulnerable software usage determining unit 1 determines that the product 21 uses vulnerable software 22 .
  • the used source code identification unit 4 also identifies a part of the source code included in the vulnerable software 22 as the used source code 23 .
  • the vulnerable software A which is the countermeasure patch 24
  • corrected files 24a and 24b called "Hoge1.c” and "Hoge2.c” are made public.
  • the used source code 23 of the product 21 includes at least one of the same files 23a and 23b of "Hoge1.c” and "Hoge2.c” as the vulnerable software A.
  • the source code matching unit 8 determines that the source code 23 used for the product 21 includes vulnerable source code, and determines that the product 21 is affected by the vulnerability of the vulnerable software 22 .
  • ⁇ Summary of Embodiment 1> According to the vulnerability analysis device according to the first embodiment as described above, based on the matching result between the source code used by the product among the source codes included in the vulnerable software and the vulnerable source code, Determine product vulnerabilities resulting from the use of vulnerable software. According to such a configuration, even if a product uses vulnerable software, if the used source code does not contain the vulnerable source code, it is not determined that the product is affected by the vulnerability of the vulnerable software. It is possible to efficiently analyze the sex.
  • the product uses vulnerable software based on the name and version of the vulnerable software and the name and version of the software used by the product.
  • the used source code and the vulnerable source code are compared on a file-by-file basis, it is possible to improve the accuracy of determining product vulnerability caused by the use of vulnerable software.
  • the countermeasure patch is used for the vulnerable source code, it is possible to efficiently analyze the vulnerability.
  • FIG. 5 is a block diagram showing the configuration of the vulnerability analysis device according to the second embodiment.
  • constituent elements that are the same as or similar to the above-described constituent elements are denoted by the same or similar reference numerals, and different constituent elements will be mainly described.
  • FIG. 5 The configuration of FIG. 5 is the same as the configuration of FIG. 1 with the addition of a structural analysis unit 10 as an analysis unit and a priority determination unit 11 as a second determination unit.
  • the source code collating unit 8 collates the usage source code 7 of the product information storage device and the vulnerable source code in units of functions, not in units of files.
  • the structure analysis unit 10 analyzes the static function call structure from the external interface (external IF).
  • the source code matching unit 8 determines the vulnerability of the product caused by the use of vulnerable software based on the result of matching the used source code and the vulnerable source code and the analysis result of the function call structure. In the following, this determination will be described as being performed by the source code matching unit 8, but it is not limited to this. can be done in departments.
  • the source code matching unit 8 determines product vulnerabilities caused by the use of one or more vulnerable software.
  • the priority determining unit 11 determines the order of priority for implementing countermeasures against the vulnerabilities of the multiple vulnerable software in the product when it is determined that the vulnerability of the product due to the use of multiple vulnerable software exists.
  • the priority determination unit 11 among the software vulnerability information stored in the public software vulnerability information 2, based on the severity evaluation value of the disclosed vulnerable software (see FIG. 3) Determine priority.
  • FIG. 6 is a flowchart showing processing of the vulnerability analysis device according to the second embodiment. The process of FIG. 6 is performed when the process of the vulnerability analysis device starts.
  • steps S1 to S7 in FIG. 6 the same processing as in steps S1 to S7 in FIG. 2 is performed, except that the source code collating unit 8 collates in units of functions instead of units of files in step S7.
  • FIG. 7 is a diagram schematically showing the processing of steps S1 to S7 of the vulnerability analysis device.
  • the vulnerable software usage determining unit 1 determines that the product 21 uses the vulnerable software 22 .
  • the used source code identification unit 4 also identifies a part of the source code included in the vulnerable software 22 as the used source code 23 .
  • FIG. 7 modified functions Foo1() and Foo2() of "Hoge3.c" of vulnerable software B, which is countermeasure patch 24, are disclosed. Note that the notation of the return values of these functions is omitted.
  • the usage source code 23 of the product 21 includes at least one of the same functions Foo1( ) and Foo2( ) as the vulnerable software B does. Therefore, the source code matching unit 8 determines that the used source code 23 of the product 21 contains vulnerable source code.
  • step S7 of FIG. 6 If it is determined in step S7 of FIG. 6 that the source code to be used includes a vulnerable source code file, the process proceeds to step S11. If it is determined that the used source code does not include the vulnerable source code file, the process proceeds to step S9.
  • the structure analysis unit 10 acquires the source code of the product to be analyzed from the product source code 6, and analyzes the function call structure from the external IF. Then, the structure analysis unit 10 determines whether or not the function of the vulnerable source code has a function calling relationship from an external IF function that is open to the public, and generates the determination result as an analysis result.
  • FIG. 8 is a diagram showing an example in which a function of vulnerable source code has a function call relationship from an external IF function.
  • step S8 If it is determined that the function of the vulnerable source code has a function calling relationship from the external IF function, the process proceeds to step S8, and it is determined that the function of the vulnerable source code has a function calling relationship from the external IF function. If not, the process proceeds to step S9.
  • steps S8 and S9 of FIG. 6 the same processes as steps S8 and S9 of FIG. 2 are performed. After step S8, the process proceeds to step S16, and after step S9, the process of FIG. 6 ends.
  • step S16 when it is determined that there is a product vulnerability caused by the use of a plurality of vulnerable software, the priority determination unit 11 selects from the software vulnerability information stored in the public software vulnerability information 2 , to get the severity rating of vulnerable software.
  • step S17 the priority determination unit 11 determines the priority of implementation of countermeasures against vulnerabilities of multiple vulnerable software in products based on the severity evaluation values. For example, the priority determination unit 11 determines the priority so that the higher the severity evaluation value of vulnerable software, the more preferentially implementation of countermeasures against the vulnerable software. After that, the processing of FIG. 6 ends.
  • the vulnerability of a product is determined based on the result of matching the used source code and the vulnerable source code, and the analysis result of the function call structure. Therefore, the vulnerability can be analyzed efficiently. can go to
  • multiple vulnerable software in the product is determined based on the severity evaluation value of the vulnerable software. determine the order of priority for implementation of countermeasures against the vulnerabilities of According to such a configuration, it is possible to efficiently implement countermeasures against vulnerabilities of a plurality of vulnerable software in a product.
  • FIG. 9 is a block diagram showing the configuration of a vulnerability analysis device according to the third embodiment.
  • constituent elements that are the same as or similar to the above-described constituent elements are denoted by the same or similar reference numerals, and different constituent elements will be mainly described.
  • FIG. 9 appropriately omits the illustration of the components described in the first and second embodiments.
  • the vulnerability analysis device in FIG. 9 further includes a countermeasure impact confirmation unit 12, which is a confirmation unit. After it is determined that a product has a vulnerability caused by the use of vulnerable software, and after the countermeasure against the vulnerability of the vulnerable software is implemented in the product, the countermeasure impact checking unit 12 determines whether the function predetermined in the product is impaired. Check that it is not Predetermined functions are, for example, product functions that existed before countermeasures against vulnerabilities of vulnerable software were implemented.
  • the countermeasure impact confirmation unit 12 acquires a countermeasure patch for the vulnerability of the vulnerable software, automatically apply countermeasure patches to vulnerable software and execute regression tests of products to which countermeasure patches are applied.
  • a regression test is a test for confirming whether or not the software after change has the same functions as the software before the change by executing a functional test and a non-functional test.
  • FIG. 10 is a flow chart showing processing of the countermeasure effect confirmation unit 12 according to the third embodiment. Note that the process of FIG. 10 is performed when the process of the vulnerability analysis device starts.
  • step S21 the countermeasure impact confirmation unit 12 confirms whether or not the source code checking unit 8 has determined that there is a product vulnerability caused by the use of vulnerable software. If it is confirmed that there is a vulnerability in the product due to the use of vulnerable software, the processes of steps S22 to S24 are automatically performed. If it is not confirmed that there is a vulnerability in the product due to the use of vulnerable software, the process of FIG. 10 ends.
  • step S22 the countermeasure impact confirmation unit 12 acquires the countermeasure patch against the vulnerability of the vulnerable software included in the public countermeasure patch information 9.
  • step S23 the countermeasure impact confirmation unit 12 adds the countermeasure patch acquired from the public countermeasure patch information 9 to the vulnerable source code of the source code of the product that is stored in the product source code 6 and determined to have a vulnerability. apply.
  • step S24 the countermeasure impact confirmation unit 12 uses the application of the countermeasure patch as a trigger to execute the regression test of the product determined to have the vulnerability, and the Confirm that no degradation has occurred. After that, the processing of FIG. 10 ends.
  • ⁇ Summary of Embodiment 3> According to the vulnerability analysis apparatus according to the third embodiment as described above, after it is determined that there is a vulnerability in a product caused by the use of vulnerable software, countermeasures against the vulnerability of the vulnerable software in the product After the implementation, confirm whether the predetermined functions of the product are not impaired. For example, when it is determined that a product has a vulnerability caused by the use of vulnerable software, obtaining a patch for the vulnerability of the vulnerable software, applying the patch to the vulnerable software in the product, and To automatically execute a regression test of a product to which a countermeasure patch is applied. According to such a configuration, it is possible to efficiently implement countermeasures against vulnerabilities of vulnerable software in products.
  • the vulnerable software use determining unit 1 and the like are realized by the processing circuit 81 shown in FIG. That is, the processing circuit 81 includes a vulnerable software usage determination unit 1 that determines whether or not the product uses one or more vulnerable software, and a source code included in the vulnerable software determined to be used by the product.
  • a used source code identification unit 4 that identifies the source code used by the product as the used source code, matches the used source code and the vulnerable source code, and based on the matching result of the used source code and the vulnerable source code and a source code matching unit 8 that determines the vulnerability of the product due to the use of vulnerable software.
  • Dedicated hardware may be applied to the processing circuit 81, or a processor that executes a program stored in a memory may be applied.
  • Processors include, for example, central processing units, processing units, arithmetic units, microprocessors, microcomputers, and DSPs (Digital Signal Processors).
  • the processing circuit 81 may be, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, an ASIC (Application Specific Integrated Circuit), an FPGA (Field Programmable Gate Array), or a combination of these.
  • Each function of each unit such as the vulnerable software usage determination unit 1 may be realized by a circuit in which processing circuits are distributed, or the functions of each unit may be collectively realized by one processing circuit.
  • the processing circuit 81 When the processing circuit 81 is a processor, the functions of the vulnerable software usage determination unit 1 and the like are realized by combining with software and the like.
  • Software and the like correspond to, for example, software, firmware, or software and firmware.
  • Software or the like is written as a program and stored in memory. As shown in FIG. 12, a processor 82 applied to a processing circuit 81 reads out and executes a program stored in a memory 83 to realize the function of each section.
  • the vulnerability analysis device when executed by the processing circuit 81, it determines whether or not the product uses one or more vulnerable software; Among the source codes included in the , the step of identifying the source code used by the product as the used source code, matching the used source code and the vulnerable source code, and determining the vulnerability of the product due to the use of vulnerable software based on the memory 83 for storing the program that will result in execution. In other words, it can be said that this program causes a computer to execute the procedures and methods of the vulnerable software usage determination unit 1 and the like.
  • the memory 83 is, for example, a non-volatile or Volatile semiconductor memory, HDD (Hard Disk Drive), magnetic disk, flexible disk, optical disk, compact disk, mini disk, DVD (Digital Versatile Disc), their drive devices, or any storage media that will be used in the future.
  • HDD Hard Disk Drive
  • magnetic disk flexible disk
  • optical disk compact disk
  • mini disk mini disk
  • DVD Digital Versatile Disc
  • their drive devices or any storage media that will be used in the future.
  • each function of the vulnerable software usage determination unit 1, etc. is realized by either hardware or software.
  • the configuration is not limited to this, and a configuration in which a part of the vulnerable software use determination unit 1 and the like is realized by dedicated hardware and another part is realized by software or the like may be used.
  • the function of the vulnerable software usage judgment unit 1 is realized by a processing circuit 81 as dedicated hardware, an acquisition circuit such as an interface (acquisition circuitry), etc., and the processing circuit 81 as a processor 82 is used for other functions.
  • the function can be realized by reading out and executing the program stored in the memory 83 .
  • the processing circuit 81 can implement each of the functions described above by means of hardware, software, etc., or a combination thereof.
  • the vulnerability analysis device described above includes a personal computer, a communication terminal including a mobile terminal such as a mobile phone, a smart phone and a tablet, an application function installed in at least one of the personal computer and the communication terminal, It can also be applied to a vulnerability analysis system constructed as a system by appropriately combining with a server.
  • each function or each component of the vulnerability analysis device described above may be distributed in each device that constructs the system, or may be centrally arranged in one of the devices. good.
  • Vulnerable software usage judgment part 4. Usage source code identification part, 8. Source code comparison part, 10. Structural analysis part, 11. Priority order judgment part, 12. Countermeasure impact confirmation part.

Landscapes

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

Abstract

脆弱性の解析を効率的に行うことが可能な技術を提供することを目的とする。脆弱性解析装置は、製品が1以上の脆弱ソフトウェアを利用しているか否かを判定する第1判定部と、脆弱ソフトウェアに含まれるソースコードのうち、製品が利用しているソースコードを、利用ソースコードとして特定する特定部と、利用ソースコードと脆弱ソースコードとを突合する突合部とを備え、利用ソースコードと脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。

Description

脆弱性解析装置及び脆弱性解析方法
 本開示は、脆弱性解析装置及び脆弱性解析方法に関する。
 近年のIoT(Internet of Things)化の進展に伴い、様々な製品がインターネットなどのネットワークに接続されてきており、その結果として、サイバー攻撃を受けるリスクが増大してきている。そのような攻撃から製品の安全性を確保するためには、当該製品で利用されているOSS(Open Source Software)などのソフトウェアに脆弱性が発見された場合に、当該脆弱性が製品に影響するかについて解析が必要となる。この解析はできる限り効率良く行われることが望ましく、かつ、製品において脆弱性への対策が必要か否かについての判断はできる限り迅速に行われることが望ましい。
 そのような背景から、例えば特許文献1に記載された技術が提案されている。この技術では、外部ネットワークから、脆弱性の影響を受けるソフトウェアを搭載した計算機に直接的に到達可能な経路が探索される。それから、当該計算機に直接的に到達可能な経路において、脆弱性の影響を受けるソフトウェアがファイアウォールまたはIPS(Intrusion Prevention System)で防御されているか否かを判定される。そして、その判定結果に基づいて、脆弱性の影響を受けるソフトウェアが、外部ネットワークから直接的に攻撃可能か否かが判定される。
特開2012-208863号公報
 脆弱性が公開されたソフトウェアであっても、その脆弱性は、当該ソフトウェアのうちの一部のソースコードに存在することが多い。それにもかかわらず、従来技術では、脆弱性を有するソフトウェアの脆弱性が存在するソースコードを製品が利用しているか否かに関わらず、当該ソフトウェアを製品が利用している場合には、製品に脆弱性があると判定する。このため、脆弱性の解析を効率的に行うことができず、不要な対策検討及び手戻りなどが生じるという問題があった。
 そこで、本開示は、上記のような問題点に鑑みてなされたものであり、脆弱性の解析を効率的に行うことが可能な技術を提供することを目的とする。
 本開示に係る脆弱性解析装置は、製品が1以上の脆弱ソフトウェアを利用しているか否かを判定する第1判定部と、前記製品が利用していると判定された前記脆弱ソフトウェアに含まれるソースコードのうち、前記製品が利用しているソースコードを、利用ソースコードとして特定する特定部と、前記利用ソースコードと脆弱ソースコードとを突合する突合部とを備え、前記利用ソースコードと前記脆弱ソースコードとの突合結果に基づいて、前記脆弱ソフトウェアの利用に起因する前記製品の脆弱性を判定する。
 本開示によれば、脆弱ソフトウェアに含まれるソースコードのうち製品が利用している利用ソースコードと、脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。このような構成によれば、脆弱性の解析を効率的に行うことができる。
 本開示の目的、特徴、局面及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
実施の形態1に係る脆弱性解析装置の構成を示すブロック図である。 実施の形態1に係る脆弱性解析装置の処理を示すフローチャートである。 実施の形態1に係るソフトウェア脆弱性情報の一例を示す図である。 実施の形態1に係る脆弱性解析装置の処理を模式的に示す図である。 実施の形態2に係る脆弱性解析装置の構成を示すブロック図である。 実施の形態2に係る脆弱性解析装置の処理を示すフローチャートである。 実施の形態2に係る脆弱性解析装置の処理を模式的に示す図である。 脆弱ソースコードの関数が、外部IF関数からの関数呼び出し関係を有する一例を示す図である。 実施の形態3に係る脆弱性解析装置の構成を示すブロック図である。 実施の形態3に係る脆弱性解析装置の処理を示すフローチャートである。 その他の変形例に係る脆弱性解析装置のハードウェア構成を示すブロック図である。 その他の変形例に係る脆弱性解析装置のハードウェア構成を示すブロック図である。
 <実施の形態1>
 図1は、本実施の形態1に係る脆弱性解析装置の構成を示すブロック図である。
 図1の脆弱性解析装置は、製品情報記憶装置及び公開情報記憶装置と通信可能に接続されている。製品情報記憶装置は、利用ソフトウェアリスト3と、製品ソースコード6と、利用ソースコード7とを有する。公開情報記憶装置は、公開ソフトウェア脆弱性情報2と、公開ソフトウェアソースコード情報5と、公開対策パッチ情報9とを有する。なお図1の例では、製品情報記憶装置は、脆弱性解析装置に備えられていないが、脆弱性解析装置に備えられてもよい。
 図1の脆弱性解析装置は、第1判定部である脆弱ソフトウェア利用判定部1と、特定部である利用ソースコード特定部4と、突合部であるソースコード突合部8とを備える。
 脆弱ソフトウェア利用判定部1は、製品が1以上の脆弱ソフトウェアを利用しているか否かを判定する。脆弱ソフトウェアは、製品の脆弱性の要因となる可能性があるソフトウェアである。以下、脆弱ソフトウェアは、脆弱性が公開されたオープンソースソフトウェアであるものとして説明するが、これに限ったものではなく、例えば脆弱性がユーザに認識された非公開のソフトウェアなどであってもよい。
 本実施の形態1では脆弱ソフトウェア利用判定部1は、公開ソフトウェア脆弱性情報2から、脆弱ソフトウェアの名称及びバージョンを取得し、利用ソフトウェアリスト3から、製品が利用するソフトウェアの名称及びバージョンを取得する。そして、脆弱ソフトウェア利用判定部1は、脆弱ソフトウェアの名称及びバージョンと、製品が利用するソフトウェアの名称及びバージョンとに基づいて、製品が脆弱ソフトウェアを利用しているか否かを判定する。
 利用ソースコード特定部4は、製品が利用していると判定された脆弱ソフトウェアに含まれるソースコードのうち、製品が利用しているソースコードを、利用ソースコードとして特定する。本実施の形態1では利用ソースコード特定部4は、公開ソフトウェアソースコード情報5から取得された脆弱ソフトウェアのソースコードと、製品ソースコード6から取得された製品のソースコードとを突合することにより、利用ソースコードを特定する。
 以上の結果、脆弱ソフトウェアに含まれるソースコードの少なくとも一部が利用ソースコードとして特定される。この段階では、利用ソースコードに脆弱性があるのか、脆弱ソフトウェアのうち利用ソースコード以外の部分に脆弱性があるのかが判定されておらず、その判定はソースコード突合部8以降で行われる。利用ソースコード特定部4で特定された利用ソースコードは、製品情報記憶装置の利用ソースコード7として格納される。
 ソースコード突合部8は、利用ソースコードと、製品の脆弱性の要因となる可能性があるソースコードである脆弱ソースコードとを突合し、利用ソースコードが脆弱ソースコードを含むか否かを判定し、その判定結果を突合結果として生成する。なお本実施の形態1では、ソースコード突合部8は、製品情報記憶装置の利用ソースコード7と脆弱ソースコードとをファイル単位で突合する。
 ここで、公開対策パッチ情報9に含まれる公開された対策パッチは、脆弱ソフトウェアの脆弱性をなくすためのソースコードとして、脆弱ソフトウェアのソースコードが部分的に修正されたソースコードを含む。つまり、対策パッチは脆弱ソースコードと対応関係にある。そこで本実施の形態1では、ソースコード突合部8は、公開対策パッチ情報9に含まれる対策パッチを、脆弱ソースコードに用いる。
 ソースコード突合部8は、利用ソースコードと脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。例えば、利用ソースコードが脆弱ソースコードのファイルを含むという突合結果が得られた場合には、ソースコード突合部8は、脆弱ソフトウェアの脆弱性の影響が製品にあると判定したり、製品の脆弱性が存在すると判定したりする。一方、利用ソースコードが脆弱ソースコードのファイルを含むという突合結果が得られなかった場合には、ソースコード突合部8は、脆弱ソフトウェアの脆弱性の影響が製品にないと判定したり、製品の脆弱性が存在しないと判定したりする。以下では、この判定は、ソースコード突合部8で行われるものとして説明するが、これに限ったものではなく、例えば、脆弱性解析装置に設けられた、ソースコード突合部8以外の図示しない判定部で行われてもよい。
 <動作>
 図2は、本実施の形態1に係る脆弱性解析装置の処理を示すフローチャートである。図2の処理は、脆弱性解析装置の処理が開始すると行われる。
 ステップS1にて、脆弱ソフトウェア利用判定部1は、公開ソフトウェア脆弱性情報2に格納されているソフトウェア脆弱性情報から、脆弱性が公開された脆弱ソフトウェアの名称及びバージョンを取得する。図3は、公開ソフトウェア脆弱性情報2に格納されているソフトウェア脆弱性情報の一例を示す図である。ソフトウェア脆弱性情報は、例えばID、脆弱性の内容を示すタイトル、更新日、脆弱性が含まれるソフトウェアの名称、そのバージョン、及び、深刻度評価値などを含む。
 例えば、脆弱ソフトウェア利用判定部1は、公開ソフトウェア脆弱性情報2に格納されている情報を定期的に確認する。そして、脆弱ソフトウェア利用判定部1は、公開ソフトウェア脆弱性情報2に格納されている情報から、更新日(つまり公開日)が最後の確認日以降である脆弱ソフトウェアについて、名称と脆弱性が含まれるバージョンとを取得する。
 ステップS2にて、脆弱ソフトウェア利用判定部1は、利用ソフトウェアリスト3に格納されている製品情報から、脆弱性解析装置で解析対象の製品が利用しているソフトウェア(以下、利用ソフトウェアと記すこともある)について、名称とバージョン情報とを取得する。
 ステップS3にて、脆弱ソフトウェア利用判定部1は、利用ソフトウェアの名称が脆弱ソフトウェアの名称と一致し、かつ、利用ソフトウェアのバージョンが脆弱ソフトウェアのバージョンに含まれているか否かを判定する。利用ソフトウェアの名称が脆弱ソフトウェアの名称と一致し、かつ、利用ソフトウェアのバージョンが脆弱ソフトウェアのバージョンに含まれている場合には、脆弱ソフトウェアが解析対象の製品で利用されていると判定されて、処理がステップS4に進む。そうでない場合には、脆弱ソフトウェアが解析対象の製品で利用されていないと判定されて、処理がステップS9に進む。
 ステップS4にて、利用ソースコード特定部4は、製品で利用されていると判定された脆弱ソフトウェアのソースコードを公開ソフトウェアソースコード情報5から取得し、解析対象の製品のソースコードを製品ソースコード6から取得する。そして、利用ソースコード特定部4は、脆弱ソフトウェアのソースコードと、解析対象の製品のソースコードとを突合することで、脆弱ソフトウェアに含まれるソースコードのうち、解析対象の製品が利用しているソースコードを利用ソースコードとして特定する。それから、利用ソースコード特定部4は、特定した利用ソースコードを、製品情報記憶装置の利用ソースコード7として格納する。
 ステップS5にて、ソースコード突合部8は、公開対策パッチ情報9から脆弱ソフトウェアの対策パッチを取得する。
 ステップS6にて、ソースコード突合部8は、解析対象の製品の利用ソースコードを、製品情報記憶装置の利用ソースコード7から取得する。
 ステップS7にて、ソースコード突合部8は、ステップS5で取得された対策パッチを脆弱ソースコードとして用い、当該脆弱ソースコードとステップS6で取得された利用ソースコードとを、ファイル単位で突合する。そして、ソースコード突合部8は、利用ソースコードが脆弱ソースコードのファイルを含むか否かを判定する。利用ソースコードが脆弱ソースコードのファイルを含むと判定された場合には、解析対象の製品は脆弱ソースコードを利用していると判定されて、処理がステップS8に進む。利用ソースコードが脆弱ソースコードのファイルを含むと判定されなかった場合には、解析対象の製品は脆弱ソースコードを利用していないと判定されて、処理がステップS9に進む。
 ステップS8にて、ソースコード突合部8は、脆弱ソフトウェアの脆弱性の影響が製品にあると判定したり、製品の脆弱性が存在すると判定したりする。その後、図2の処理が終了する。
 ステップS9にて、ソースコード突合部8は、脆弱ソフトウェアの脆弱性の影響が製品にないと判定したり、製品の脆弱性が存在しないと判定したりする。その後、図2の処理が終了する。
 図4は、脆弱性解析装置の処理を模式的に示す図である。図4の場合、脆弱ソフトウェア利用判定部1は、製品21が脆弱ソフトウェア22を利用していると判定する。また、利用ソースコード特定部4は、脆弱ソフトウェア22に含まれる一部のソースコードを、利用ソースコード23として特定する。
 ここで図4では、対策パッチ24である脆弱ソフトウェアAのうち、「Hoge1.c」及び「Hoge2.c」という修正されたファイル24a,24bが公開されている。図4の場合、製品21の利用ソースコード23は、脆弱ソフトウェアAと同じ「Hoge1.c」及び「Hoge2.c」というファイル23a,23bの少なくともいずれかを含む。このため、ソースコード突合部8は、製品21の利用ソースコード23は脆弱ソースコードを含むと判定し、脆弱ソフトウェア22の脆弱性の影響が製品21にあると判定する。
 <実施の形態1のまとめ>
 以上のような本実施の形態1に係る脆弱性解析装置によれば、脆弱ソフトウェアに含まれるソースコードのうち製品が利用している利用ソースコードと、脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。このような構成によれば、製品が脆弱ソフトウェアを利用していても、利用ソースコードが脆弱ソースコードを含まない場合には、脆弱ソフトウェアの脆弱性の影響が製品にあると判定されないので、脆弱性の解析を効率的に行うことできる。
 また本実施の形態1によれば、脆弱ソフトウェアの名称及びバージョンと、製品が利用するソフトウェアの名称及びバージョンとに基づいて、製品が脆弱ソフトウェアを利用しているか否かを判定する。このような構成によれば、製品が脆弱ソフトウェアを利用しているか否かを効率よく判定することができる。なお、この判定は、効率よく行う必要がないのであれば、これに限ったものではない。例えば、脆弱ソフトウェアのソースコードと、解析対象の製品のソースコードとを突合することで、製品が脆弱ソフトウェアを利用しているか否かが判定されてもよい。
 また本実施の形態1によれば、利用ソースコードと脆弱ソースコードとをファイル単位で突合するので、脆弱ソフトウェアの利用に起因する製品の脆弱性の判定精度を高めることができる。
 また本実施の形態1によれば、対策パッチを脆弱ソースコードに用いるので、脆弱性の解析を効率的に行うことできる。
 <実施の形態2>
 図5は、本実施の形態2に係る脆弱性解析装置の構成を示すブロック図である。以下、本実施の形態2に係る構成要素のうち、上述の構成要素と同じまたは類似する構成要素については同じまたは類似する参照符号を付し、異なる構成要素について主に説明する。
 図5の構成は、図1の構成に、解析部である構造解析部10と、第2判定部である優先順位判定部11とが追加された構成と同様である。
 本実施の形態2では、ソースコード突合部8は、製品情報記憶装置の利用ソースコード7と脆弱ソースコードとを、ファイル単位ではなく関数単位で突合する。
 構造解析部10は、外部インターフェース(外部IF)からの静的な関数呼び出し構造を解析する。ソースコード突合部8は、利用ソースコードと脆弱ソースコードとの突合結果と、関数呼び出し構造の解析結果とに基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。以下では、この判定は、ソースコード突合部8で行われるものとして説明するが、これに限ったものではなく、例えば、脆弱性解析装置に設けられた、ソースコード突合部8以外の図示しない判定部で行われてもよい。
 ソースコード突合部8は、1以上の脆弱ソフトウェアの利用に起因する製品の脆弱性を判定する。優先順位判定部11は、複数の脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された場合に、製品での複数の脆弱ソフトウェアの脆弱性に対する対策実施の優先順位を判定する。本実施の形態2では、優先順位判定部11は、公開ソフトウェア脆弱性情報2に格納されているソフトウェア脆弱性情報のうち、公開された脆弱ソフトウェアの深刻度評価値(図3参照)に基づいて優先順位を判定する。
 <動作>
 図6は、本実施の形態2に係る脆弱性解析装置の処理を示すフローチャートである。図6の処理は、脆弱性解析装置の処理が開始すると行われる。
 図6のステップS1~S7では、ステップS7でソースコード突合部8がファイル単位ではなく関数単位で突合することを除けば、図2のステップS1~S7と同様の処理が行われる。
 図7は、脆弱性解析装置のステップS1~S7の処理を模式的に示す図である。図7の場合、脆弱ソフトウェア利用判定部1は、製品21が脆弱ソフトウェア22を利用していると判定する。また、利用ソースコード特定部4は、脆弱ソフトウェア22に含まれる一部のソースコードを、利用ソースコード23として特定する。
 ここで図7では、対策パッチ24である脆弱ソフトウェアBの「Hoge3.c」のFoo1()及びFoo2()という修正された関数が公開されている。なお、これら関数の戻り値の表記は省略されている。図7の場合、製品21の利用ソースコード23は、脆弱ソフトウェアBと同じFoo1()及びFoo2()という関数の少なくともいずれか1つを含む。このため、ソースコード突合部8は、製品21の利用ソースコード23は脆弱ソースコードを含むと判定する。
 図6のステップS7にて、利用ソースコードが脆弱ソースコードのファイルを含むと判定された場合には、処理がステップS11に進む。利用ソースコードが脆弱ソースコードのファイルを含むと判定されなかった場合には、処理がステップS9に進む。
 ステップS11にて、構造解析部10は、解析対象の製品のソースコードを製品ソースコード6から取得し、外部IFからの関数呼び出し構造を解析する。そして、構造解析部10は、脆弱ソースコードの関数が、外部に公開されている外部IF関数からの関数呼び出し関係を有するか否かを判定し、その判定結果を解析結果として生成する。図8は、脆弱ソースコードの関数が、外部IF関数からの関数呼び出し関係を有する一例を示す図である。
 脆弱ソースコードの関数が外部IF関数からの関数呼び出し関係を有すると判定された場合には、処理がステップS8に進み、脆弱ソースコードの関数が外部IF関数からの関数呼び出し関係を有すると判定されなかった場合には、処理がステップS9に進む。図6のステップS8,S9では、図2のステップS8,S9と同様の処理が行われる。ステップS8の後には、処理がステップS16に進み、ステップS9の後には、図6の処理が終了する。
 ステップS16にて、優先順位判定部11は、複数の脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された場合に、公開ソフトウェア脆弱性情報2に格納されているソフトウェア脆弱性情報から、脆弱ソフトウェアの深刻度評価値を取得する。
 ステップS17にて、優先順位判定部11は、深刻度評価値に基づいて、製品での複数の脆弱ソフトウェアの脆弱性に対する対策実施の優先順位を判定する。例えば、優先順位判定部11は、脆弱ソフトウェアの深刻度評価値が大きいほど、当該脆弱ソフトウェアの対策実施が優先的に行われるように優先順位を判定する。その後、図6の処理が終了する。
 <実施の形態2のまとめ>
 以上のような本実施の形態2に係る脆弱性解析装置によれば、利用ソースコードと脆弱ソースコードとを関数単位で突合するので、脆弱ソフトウェアの利用に起因する製品の脆弱性の判定精度を高めることができる。
 また本実施の形態2によれば、利用ソースコードと脆弱ソースコードとの突合結果と、関数呼び出し構造の解析結果とに基づいて、製品の脆弱性を判定するので、脆弱性の解析を効率的に行うことできる。
 また本実施の形態2によれば、複数の脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された場合に、脆弱ソフトウェアの深刻度評価値に基づいて、製品での複数の脆弱ソフトウェアの脆弱性に対する対策実施の優先順位を判定する。このような構成によれば、製品での複数の脆弱ソフトウェアの脆弱性に対する対策実施を効率よく行うことができる。
 <実施の形態3>
 図9は、本実施の形態3に係る脆弱性解析装置の構成を示すブロック図である。以下、本実施の形態3に係る構成要素のうち、上述の構成要素と同じまたは類似する構成要素については同じまたは類似する参照符号を付し、異なる構成要素について主に説明する。なお、図9では図の複雑化を避けるために、実施の形態1,2で説明された構成要素の図示が適宜省略されている。
 図9の脆弱性解析装置は、確認部である対策影響確認部12をさらに備える。脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された後、かつ、製品での脆弱ソフトウェアの脆弱性に対する対策実施後に、対策影響確認部12は、製品に予め定められた機能が損なわれていないかを確認する。予め定められた機能とは、例えば脆弱ソフトウェアの脆弱性に対する対策実施前に存在していた製品の機能などである。
 なお本実施の形態3では、対策影響確認部12は、脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された場合に、脆弱ソフトウェアの脆弱性に対する対策パッチを取得すること、製品での脆弱ソフトウェアに対策パッチを適用すること、及び、対策パッチが適用された製品の回帰テストを実行することを自動的に行う。なお、回帰テストとは、変更後のソフトウェアが、変更前のソフトウェアと同じ機能を有するかどうかを、機能テストと非機能テストとを実行して確認するテストである。
 <動作>
 図10は、本実施の形態3に係る対策影響確認部12の処理を示すフローチャートである。なお、図10の処理は、脆弱性解析装置の処理が開始すると行われる。
 ステップS21にて、対策影響確認部12は、脆弱ソフトウェアの利用に起因する製品の脆弱性が存在するとソースコード突合部8で判定されたか否かを確認する。脆弱ソフトウェアの利用に起因する製品の脆弱性が存在することが確認された場合には、ステップS22~S24の処理が自動的に行われる。脆弱ソフトウェアの利用に起因する製品の脆弱性が存在することが確認されなかった場合には、図10の処理が終了する。
 ステップS22にて、対策影響確認部12は、公開対策パッチ情報9に含まれている、脆弱ソフトウェアの脆弱性に対する対策パッチを取得する。
 ステップS23にて、対策影響確認部12は、製品ソースコード6に格納され、脆弱性が存在すると判定された製品のソースコードのうちの脆弱ソースコードに、公開対策パッチ情報9から取得した対策パッチを適用する。
 ステップS24にて、対策影響確認部12は、対策パッチの適用をトリガにして、脆弱性が存在すると判定された製品の回帰テストを実行して、脆弱性への対策を行ったことによる製品のデグレードが発生していないことを確認する。その後、図10の処理が終了する。
 <実施の形態3のまとめ>
 以上のような本実施の形態3に係る脆弱性解析装置によれば、脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された後、かつ、製品での脆弱ソフトウェアの脆弱性に対する対策実施後に、製品に予め定められた機能が損なわれていないかを確認する。例えば、脆弱ソフトウェアの利用に起因する製品の脆弱性が存在すると判定された場合に、脆弱ソフトウェアの脆弱性に対する対策パッチを取得すること、製品での脆弱ソフトウェアに対策パッチを適用すること、及び、対策パッチが適用された製品の回帰テストを実行することを自動的に行う。このような構成によれば、製品での脆弱ソフトウェアの脆弱性に対する対策実施を効率よく行うことができる。
 <その他の変形例>
 上述した図1の脆弱ソフトウェア利用判定部1、利用ソースコード特定部4、及び、ソースコード突合部8を、以下「脆弱ソフトウェア利用判定部1等」と記す。脆弱ソフトウェア利用判定部1等は、図11に示す処理回路81により実現される。すなわち、処理回路81は、製品が1以上の脆弱ソフトウェアを利用しているか否かを判定する脆弱ソフトウェア利用判定部1と、製品が利用していると判定された脆弱ソフトウェアに含まれるソースコードのうち、製品が利用しているソースコードを、利用ソースコードとして特定する利用ソースコード特定部4と、利用ソースコードと脆弱ソースコードとを突合し、利用ソースコードと脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定するソースコード突合部8と、を備える。処理回路81には、専用のハードウェアが適用されてもよいし、メモリに格納されるプログラムを実行するプロセッサが適用されてもよい。プロセッサには、例えば、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、DSP(Digital Signal Processor)などが該当する。
 処理回路81が専用のハードウェアである場合、処理回路81は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせたものが該当する。脆弱ソフトウェア利用判定部1等の各部の機能それぞれは、処理回路を分散させた回路で実現されてもよいし、各部の機能をまとめて一つの処理回路で実現されてもよい。
 処理回路81がプロセッサである場合、脆弱ソフトウェア利用判定部1等の機能は、ソフトウェア等との組み合わせにより実現される。なお、ソフトウェア等には、例えば、ソフトウェア、ファームウェア、または、ソフトウェア及びファームウェアが該当する。ソフトウェア等はプログラムとして記述され、メモリに格納される。図12に示すように、処理回路81に適用されるプロセッサ82は、メモリ83に記憶されたプログラムを読み出して実行することにより、各部の機能を実現する。すなわち、脆弱性解析装置は、処理回路81により実行されるときに、製品が1以上の脆弱ソフトウェアを利用しているか否かを判定するステップと、製品が利用していると判定された脆弱ソフトウェアに含まれるソースコードのうち、製品が利用しているソースコードを、利用ソースコードとして特定するステップと、利用ソースコードと脆弱ソースコードとを突合し、利用ソースコードと脆弱ソースコードとの突合結果に基づいて、脆弱ソフトウェアの利用に起因する製品の脆弱性を判定するステップと、が結果的に実行されることになるプログラムを格納するためのメモリ83を備える。換言すれば、このプログラムは、脆弱ソフトウェア利用判定部1等の手順や方法をコンピュータに実行させるものであるともいえる。ここで、メモリ83は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)などの、不揮発性または揮発性の半導体メモリ、HDD(Hard Disk Drive)、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD(Digital Versatile Disc)、それらのドライブ装置、または、今後使用されるあらゆる記憶媒体であってもよい。
 以上、脆弱ソフトウェア利用判定部1等の各機能が、ハードウェア及びソフトウェア等のいずれか一方で実現される構成について説明した。しかしこれに限ったものではなく、脆弱ソフトウェア利用判定部1等の一部を専用のハードウェアで実現し、別の一部をソフトウェア等で実現する構成であってもよい。例えば、脆弱ソフトウェア利用判定部1については専用のハードウェアとしての処理回路81、インターフェースなどの取得回路(取得サーキットリー)などでその機能を実現し、それ以外についてはプロセッサ82としての処理回路81がメモリ83に格納されたプログラムを読み出して実行することによってその機能を実現することが可能である。
 以上のように、処理回路81は、ハードウェア、ソフトウェア等、またはこれらの組み合わせによって、上述の各機能を実現することができる。
 また、以上で説明した脆弱性解析装置は、パーソナルコンピュータと、携帯電話、スマートフォン及びタブレットなどの携帯端末を含む通信端末と、パーソナルコンピュータ及び通信端末の少なくとも1つにインストールされるアプリケーションの機能と、サーバとを適宜に組み合わせてシステムとして構築される脆弱性解析システムにも適用することができる。この場合、以上で説明した脆弱性解析装置の各機能あるいは各構成要素は、前記システムを構築する各機器に分散して配置されてもよいし、いずれかの機器に集中して配置されてもよい。
 なお、各実施の形態及び各変形例を自由に組み合わせたり、各実施の形態及び各変形例を適宜、変形、省略したりすることが可能である。
 上記した説明は、すべての局面において、例示であって、限定的なものではない。例示されていない無数の変形例が、想定され得るものと解される。
 1 脆弱ソフトウェア利用判定部、4 利用ソースコード特定部、8 ソースコード突合部、10 構造解析部、11 優先順位判定部、12 対策影響確認部。

Claims (12)

  1.  製品が1以上の脆弱ソフトウェアを利用しているか否かを判定する第1判定部と、
     前記製品が利用していると判定された前記脆弱ソフトウェアに含まれるソースコードのうち、前記製品が利用しているソースコードを、利用ソースコードとして特定する特定部と、
     前記利用ソースコードと脆弱ソースコードとを突合する突合部と
    を備え、
     前記利用ソースコードと前記脆弱ソースコードとの突合結果に基づいて、前記脆弱ソフトウェアの利用に起因する前記製品の脆弱性を判定する、脆弱性解析装置。
  2.  請求項1に記載の脆弱性解析装置であって、
     前記脆弱ソフトウェアは、脆弱性が公開されたオープンソースソフトウェアである、脆弱性解析装置。
  3.  請求項1または請求項2に記載の脆弱性解析装置であって、
     前記第1判定部は、
     前記脆弱ソフトウェアの名称及びバージョンと、前記製品が利用するソフトウェアの名称及びバージョンとに基づいて、前記製品が前記脆弱ソフトウェアを利用しているか否かを判定する、脆弱性解析装置。
  4.  請求項1から請求項3のうちのいずれか1項に記載の脆弱性解析装置であって、
     前記突合部は、
     前記利用ソースコードと前記脆弱ソースコードとをファイル単位で突合する、脆弱性解析装置。
  5.  請求項1から請求項3のうちのいずれか1項に記載の脆弱性解析装置であって、
     前記突合部は、
     前記利用ソースコードと前記脆弱ソースコードとを関数単位で突合する、脆弱性解析装置。
  6.  請求項5に記載の脆弱性解析装置であって、
     外部インターフェースからの関数呼び出し構造を解析する解析部をさらに備え、
     前記利用ソースコードと前記脆弱ソースコードとの突合結果と、前記関数呼び出し構造の解析結果とに基づいて、前記製品の前記脆弱性を判定する、脆弱性解析装置。
  7.  請求項5または請求項6に記載の脆弱性解析装置であって、
     前記1以上の脆弱ソフトウェアは、複数の脆弱ソフトウェアであり、
     前記複数の脆弱ソフトウェアの利用に起因する前記製品の前記脆弱性が存在すると判定された場合に、前記製品での前記複数の脆弱ソフトウェアの脆弱性に対する対策実施の優先順位を判定する第2判定部をさらに備える、脆弱性解析装置。
  8.  請求項7に記載の脆弱性解析装置であって、
     前記第2判定部は、
     前記脆弱ソフトウェアの深刻度評価値に基づいて前記優先順位を判定する、脆弱性解析装置。
  9.  請求項1から請求項6のうちのいずれか1項に記載の脆弱性解析装置であって、
     前記脆弱ソフトウェアの利用に起因する前記製品の前記脆弱性が存在すると判定された後、かつ、前記製品での前記脆弱ソフトウェアの脆弱性に対する対策実施後に、前記製品に予め定められた機能が損なわれていないかを確認する確認部をさらに備える、脆弱性解析装置。
  10.  請求項9に記載の脆弱性解析装置であって、
     前記確認部は、
     前記脆弱ソフトウェアの利用に起因する前記製品の前記脆弱性が存在すると判定された場合に、前記脆弱ソフトウェアの前記脆弱性に対する対策パッチを取得すること、前記製品での前記脆弱ソフトウェアに前記対策パッチを適用すること、及び、前記対策パッチが適用された前記製品の回帰テストを実行することを自動的に行う、脆弱性解析装置。
  11.  請求項1から請求項9のうちのいずれか1項に記載の脆弱性解析装置であって、
     前記突合部は、
     対策パッチを前記脆弱ソースコードに用いる、脆弱性解析装置。
  12.  製品が1以上の脆弱ソフトウェアを利用しているか否かを判定し、
     前記製品が利用していると判定された前記脆弱ソフトウェアに含まれるソースコードのうち、前記製品が利用しているソースコードを、利用ソースコードとして特定し、
     前記利用ソースコードと脆弱ソースコードとを突合し、
     前記利用ソースコードと前記脆弱ソースコードとの突合結果に基づいて、前記脆弱ソフトウェアの利用に起因する前記製品の脆弱性を判定する、脆弱性解析方法。
PCT/JP2022/005391 2022-02-10 2022-02-10 脆弱性解析装置及び脆弱性解析方法 WO2023152880A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/005391 WO2023152880A1 (ja) 2022-02-10 2022-02-10 脆弱性解析装置及び脆弱性解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/005391 WO2023152880A1 (ja) 2022-02-10 2022-02-10 脆弱性解析装置及び脆弱性解析方法

Publications (1)

Publication Number Publication Date
WO2023152880A1 true WO2023152880A1 (ja) 2023-08-17

Family

ID=87563892

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/005391 WO2023152880A1 (ja) 2022-02-10 2022-02-10 脆弱性解析装置及び脆弱性解析方法

Country Status (1)

Country Link
WO (1) WO2023152880A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7566393B1 (ja) 2024-08-21 2024-10-15 Cloudbase株式会社 評価装置、評価方法、及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067216A (ja) * 2008-09-12 2010-03-25 Toshiba Corp 脆弱性判定装置及びプログラム
JP2015076025A (ja) * 2013-10-11 2015-04-20 株式会社日立製作所 プログラムバージョンアップ支援方法及びシステム
CN112818351A (zh) * 2021-01-18 2021-05-18 哈尔滨工业大学(威海) 一种面向工控系统的漏洞优先级分析方法、系统、设备及存储介质
KR102318714B1 (ko) * 2020-01-31 2021-10-28 고려대학교 산학협력단 바이너리 코드 클론 기반 소프트웨어 취약점 탐지를 위한 컴퓨터 프로그램

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010067216A (ja) * 2008-09-12 2010-03-25 Toshiba Corp 脆弱性判定装置及びプログラム
JP2015076025A (ja) * 2013-10-11 2015-04-20 株式会社日立製作所 プログラムバージョンアップ支援方法及びシステム
KR102318714B1 (ko) * 2020-01-31 2021-10-28 고려대학교 산학협력단 바이너리 코드 클론 기반 소프트웨어 취약점 탐지를 위한 컴퓨터 프로그램
CN112818351A (zh) * 2021-01-18 2021-05-18 哈尔滨工业大学(威海) 一种面向工控系统的漏洞优先级分析方法、系统、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7566393B1 (ja) 2024-08-21 2024-10-15 Cloudbase株式会社 評価装置、評価方法、及びプログラム

Similar Documents

Publication Publication Date Title
US9021584B2 (en) System and method for assessing danger of software using prioritized rules
US9081967B2 (en) System and method for protecting computers from software vulnerabilities
US10055585B2 (en) Hardware and software execution profiling
JP5639725B2 (ja) ソフトウェアの信頼性を測定する方法及び装置
US8468605B2 (en) Identifying security vulnerability in computer software
US8443354B1 (en) Detecting new or modified portions of code
EP2515250A1 (en) System and method for detection of complex malware
US8978142B2 (en) System and method for detection of malware using behavior model scripts of security rating rules
US20230185921A1 (en) Prioritizing vulnerabilities
US20140223566A1 (en) System and method for automatic generation of heuristic algorithms for malicious object identification
US9942258B2 (en) Runtime protection of Web services
US8869284B1 (en) Systems and methods for evaluating application trustworthiness
JP2019521400A (ja) 推測的なエクスプロイトの試みの検出
WO2012103646A1 (en) Determining the vulnerability of computer software applications to privilege-escalation attacks
US10839074B2 (en) System and method of adapting patterns of dangerous behavior of programs to the computer systems of users
RU2706883C1 (ru) Система и способ снижения количества ложных срабатываний классифицирующих алгоритмов
US11503066B2 (en) Holistic computer system cybersecurity evaluation and scoring
WO2023152880A1 (ja) 脆弱性解析装置及び脆弱性解析方法
JP6712207B2 (ja) セキュリティ対策装置
EP3945441A1 (en) Detecting exploitable paths in application software that uses third-party libraries
US20170171224A1 (en) Method and System for Determining Initial Execution of an Attack
US9483645B2 (en) System, method, and computer program product for identifying unwanted data based on an assembled execution profile of code
WO2020007249A1 (zh) 一种操作系统安全主动防御方法及操作系统
US20180260563A1 (en) Computer system for executing analysis program, and method of monitoring execution of analysis program
JP7494917B2 (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: 22925901

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE