WO2014021190A1 - プログラム実行装置及びプログラム解析装置 - Google Patents

プログラム実行装置及びプログラム解析装置 Download PDF

Info

Publication number
WO2014021190A1
WO2014021190A1 PCT/JP2013/070188 JP2013070188W WO2014021190A1 WO 2014021190 A1 WO2014021190 A1 WO 2014021190A1 JP 2013070188 W JP2013070188 W JP 2013070188W WO 2014021190 A1 WO2014021190 A1 WO 2014021190A1
Authority
WO
WIPO (PCT)
Prior art keywords
vulnerability
library function
countermeasure
program
countermeasure processing
Prior art date
Application number
PCT/JP2013/070188
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 EP13825757.1A priority Critical patent/EP2881877A4/en
Priority to CN201380039842.1A priority patent/CN104508672B/zh
Priority to US14/417,920 priority patent/US9507933B2/en
Priority to JP2014528105A priority patent/JP5863973B2/ja
Publication of WO2014021190A1 publication Critical patent/WO2014021190A1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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
    • 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
    • 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

  • the present invention relates to a technique for performing countermeasure processing against a vulnerability of a program.
  • cross-site scripting is an attack that uses a vulnerability in a process of dynamically generating HTML (HyperText Markup Language) data, and this vulnerability allows a script to be mixed into HTML data.
  • HTML HyperText Markup Language
  • SQL injection is an attack that uses the vulnerability of the process of issuing a SQL statement that performs data manipulation of a relational database, and this vulnerability allows an SQL statement that is not assumed by the application to be executed.
  • Unauthorized data for attacking vulnerabilities vary depending on the type of vulnerability, and the countermeasures are also different.
  • a countermeasure against cross-site scripting is to make the ⁇ SCRIPT> tag harmless according to the HTML grammar so that it is not interpreted as the ⁇ SCRIPT> tag in the generated HTML.
  • SQL injection there is a method in which a character string is terminated by mixing “′” for enclosing the character string, and then an arbitrary SQL sentence is mixed.
  • a countermeasure against such SQL injection is to make it harmless according to the grammar of SQL so that “′” included in the input data does not mean that it is a symbol surrounding a character string.
  • the following two measures are mainly taken in order to defend against attacks against the vulnerabilities of Web applications.
  • One is to incorporate into the Web application itself a security function that verifies input data that causes various vulnerabilities and renders illegal data harmless according to the processing content that may cause vulnerabilities.
  • the second defense method uses a web application firewall that inspects an HTTP request to a web application before reaching the web application, and blocks or harms the HTTP request that may cause an attack. It is.
  • Non-Patent Document 1 For the Web application firewall of the second defense method, it is verified whether an illegal data pattern registered in advance is included, and if an illegal data pattern is included in the HTTP request, A method of blocking communication or making data harmless is common (for example, Non-Patent Document 1).
  • Patent Document 2 There is a method using a library that performs various vulnerability countermeasures (for example, Patent Document 2). This method reads the configuration file that describes the necessity of countermeasures against various vulnerabilities for each parameter of the request created by the developer, and the vulnerability specified for each parameter when receiving the HTTP request according to the contents of the configuration file
  • Patent Document 2 By using a library for taking countermeasures, it is possible to efficiently take countermeasures against Web application vulnerabilities.
  • Patent Document 1 A conventional method of statically analyzing source code in a Web application (Patent Document 1) detects a place where a vulnerability can occur, but the examination and correction of a countermeasure method against the vulnerability is performed by a developer of the Web application. There is a problem that must be done individually.
  • Non-Patent Document 1 the method for taking measures against the Web application firewall (Non-Patent Document 1) does not consider the processing contents performed by the Web application. Therefore, even if a specific type of vulnerability does not become a problem depending on the processing contents of the Web application, or when measures against the vulnerability are taken in the Web application, the harmless data corresponding to the illegal data pattern is illegal. Misdetected as data. For this reason, there is a problem that an adverse effect that data that can be handled normally is converted occurs due to blocking communication that has no substantial problem in the Web application or making it harmless.
  • Patent Document 2 the method of taking countermeasures for each request parameter (Patent Document 2) has a problem that a developer needs to set a setting file for each parameter, which is troublesome. In addition, there is a possibility of missing a countermeasure for vulnerability or selecting an unnecessary countermeasure due to a setting error or the like. Furthermore, since the specified vulnerability countermeasures are collectively performed when an HTTP request is received, as in the case of the Web application firewall, there is a problem in that the vulnerability countermeasures that have been taken adversely affect processing that may be another vulnerability. There is also.
  • the main object of the present invention is to solve the above-mentioned problems, and the countermeasure processing for the vulnerability is surely executed before the attack targeting the vulnerability is made, the countermeasure leakage is prevented, and unnecessary countermeasures are taken.
  • the main object is to obtain a configuration that can avoid the adverse effects of processing.
  • the program execution device includes: A program execution device for executing a program using a library function, A vulnerability countermeasure processing unit that performs countermeasure processing for a vulnerability of a vulnerability library function that is a vulnerable library function among library functions used in the program; When a call to the vulnerability library function is requested during the execution of the program, the vulnerability countermeasure processing unit performs countermeasure processing for the vulnerability of the vulnerability library function, and the vulnerability countermeasure processing unit performs countermeasure processing. And a vulnerability countermeasure control unit that calls the vulnerability library function after being performed.
  • FIG. 3 is a diagram illustrating an example of a system configuration according to the first embodiment.
  • 1 is a diagram illustrating a configuration example of a Web application vulnerability countermeasure system according to Embodiment 1.
  • FIG. FIG. 3 is a flowchart showing an operation example in the development environment according to the first embodiment.
  • FIG. 4 is a flowchart showing an operation example in an execution environment according to the first embodiment. The figure which shows the structural example of the Web application vulnerability countermeasure system which concerns on Embodiment 2.
  • FIG. FIG. 10 is a flowchart showing an operation example in the development environment according to the second embodiment.
  • FIG. 10 is a diagram illustrating a configuration example of a Web application vulnerability countermeasure system according to a third embodiment.
  • FIG. 10 is a flowchart showing an operation example in the development environment according to the third embodiment.
  • FIG. 4 is a diagram illustrating an example of a hardware configuration of a Web application vulnerability countermeasure system according to Embodiments 1 to 3.
  • Embodiment 1 FIG.
  • a web application vulnerability countermeasure system that automatically selects necessary and sufficient Web application security measures and avoids the adverse effects of countermeasure countermeasure omission and vulnerability countermeasures will be described.
  • FIG. 1 is a system configuration diagram including a Web application vulnerability countermeasure system according to the present embodiment.
  • the system according to the present embodiment includes a Web application vulnerability countermeasure system 1000, a client terminal 2000, and a network 3000 (network such as the Internet).
  • the Web application vulnerability countermeasure system 1000 and a plurality of client terminals 2000 are connected via a network 3000.
  • FIG. 2 is a configuration diagram of the Web application vulnerability countermeasure system 1000 according to this embodiment.
  • the Web application vulnerability countermeasure system 1000 has hardware resources such as a CPU (Central Processing Unit), a memory, and a secondary storage device.
  • a program that realizes the functions described below is stored in the secondary storage device, and when executing the program, the program is loaded from the secondary storage device into the memory, and the CPU executes the program loaded into the memory. .
  • CPU Central Processing Unit
  • the Web application vulnerability countermeasure system 1000 includes a development environment 1100 and an execution environment 1200.
  • the development environment 1100 is an environment for a developer to mount and test a Web application.
  • the execution environment 1200 is an environment for executing a Web application that has started operation.
  • the execution environment 1200 corresponds to an example of a program execution device.
  • the development environment 1100 includes a static code analysis unit 1120.
  • the static code analysis unit 1120 reads the source code or execution code of the Web application (denoted as “Web application source / execution code 1101”), statically analyzes the Web application source / execution code 1101, and is vulnerable.
  • the operation setting file 1130 for the measure against safety is output.
  • the static code analysis unit 1120 includes a Web application input unit 1121, a general-purpose library usage verification unit 1122, an external input data analysis unit 1123, and an operation setting file output unit 1124.
  • the web application input unit 1121 reads the web application source / execution code 1101.
  • the general-purpose library usage verification unit 1122 checks the location of the code that calls the general-purpose library function and the type of the general-purpose library I / F 1231 by static code analysis on the source / execution code 1101 of the Web application, and uses the general-purpose library function. Verify that is correct.
  • the external input data analysis unit 1123 analyzes the data flow of the input data (external input data) from the outside of the Web application by static code analysis, and the position of the code used for the external input data and the possible value (data Value and data type).
  • the operation setting file output unit 1124 outputs an operation setting file 1130 for determining the operation at the time of executing the general library based on the analysis results of the general library usage verification unit 1122 and the external input data analysis unit 1123.
  • the operation setting file 1130 includes a general-purpose library function having a vulnerability (hereinafter referred to as “vulnerability library function”), the name of a parameter that may cause an abnormality when processed by the vulnerability library function, and the parameter. And the code position where an abnormality may occur among the code positions that call the vulnerability library function are described.
  • the operation setting file 1130 corresponds to an example of vulnerability information.
  • the execution environment 1200 includes a Web server program 1210, a Web application 1220, a general-purpose library 1230, and an operation setting file storage unit 1240.
  • the Web server program 1210 is a program for executing the Web application 1220.
  • the Web application 1220 calls the general library function and obtains the execution result of the general library function.
  • the general-purpose library 1230 provides functions for performing processing performed in a general Web application such as transmission / reception of HTTP requests, HTML output processing, access to a database, and reading / writing of files.
  • the operation setting file storage unit 1240 stores the operation setting file 1130 output from the static code analysis unit 1120 of the development environment 1100.
  • the operation setting file storage unit 1240 corresponds to an example of a vulnerability information storage unit.
  • the general-purpose library 1230 includes a general-purpose library I / F (interface) 1231, a countermeasure selection unit 1232, a vulnerability countermeasure processing unit 1233, and a general-purpose library processing unit 1234.
  • the general-purpose library I / F 1231 provides a program interface for the Web application 1220 to use the general-purpose library 1230.
  • the general-purpose library I / F 1231 is prepared for each classification of processing such as HTML output processing and database access.
  • the vulnerability countermeasure processing unit 1233 performs countermeasure processing for the vulnerability of the Web application.
  • a plurality of vulnerability countermeasure processing units 1233 are prepared for each vulnerability countermeasure. That is, the vulnerability countermeasure processing unit 1233 is prepared for each classification of processing such as HTML output processing and database access.
  • the general-purpose library processing unit 1234 performs processing (HTML output processing, database access, etc.) provided by the general-purpose library 1230.
  • the general library processing unit 1234 corresponds to a general library function.
  • a plurality of general-purpose library processing units 1234 are prepared according to the processing contents.
  • the countermeasure selection unit 1232 reads the operation setting file 1130 and determines whether vulnerability countermeasure processing is necessary in the general-purpose library 1230. More specifically, the countermeasure selection unit 1232 includes the contents of the operation setting file 1130 when a call to the general library function is requested from the Web application 1220, that is, when a call to the general library processing unit 1234 is requested. Based on this, it is determined whether or not vulnerability countermeasure processing is necessary. When vulnerability countermeasure processing is necessary, the countermeasure selection unit 1232 first causes the vulnerability countermeasure processing unit 1233 to perform vulnerability countermeasure processing, and the vulnerability countermeasure processing unit 1233 performs countermeasure processing. Later, the target general-purpose library processing unit 1234 is called.
  • the countermeasure selection unit 1232 corresponds to an example of a vulnerability countermeasure control unit.
  • the static code analysis unit 1120 of the development environment 1100 performs static code analysis on the source / execution code 1110 of the Web application to generate an operation setting file 1130. Then, the web application source / execution code 1110 is compiled and executable, the web application 1220 is arranged in the execution environment 1200, and the operation setting file 1130 is arranged in the execution environment 1200, and the operation of the web application 1220 is started. Is done.
  • the web application source / execution code 1110 is read by the web application input unit 1121 (S101).
  • the general-purpose library usage verification unit 1122 positions the code that calls the general-purpose library function used by the web application source / executed code 1110 (number of lines, etc.), and the type of general-purpose library function to be called (HTML output, (Database access etc.) is examined, and it is verified whether the data given to the general-purpose library function and the usage are appropriate (S102).
  • the external input data analysis unit 1123 specifies a variable (external input data) in which external input data is stored, and external The data flow of the input data is checked, and the position of a series of codes where the external input data is used and the range of values that the external input data can take in each code are checked (S103). If it is determined that the general-purpose library function is not properly used (No in S102), the type of the general-purpose library function that is not properly used, the position on the code, the reason for determining that the general-purpose library function is not properly used, etc. Is output and the process is terminated (S104).
  • the operation setting file output unit 1124 uses a series of codes in which the position of the code that calls the general library function analyzed in S102, the type of the general library function to be called, and the external input data analyzed in S103 are used. Based on the position of the code and the result of the value that the external input data in each code can take, the operation setting file 1130 is output (S105).
  • the operation setting file 1130 is a file for selecting countermeasures including the position of a code that calls a general-purpose library function that may cause a vulnerability depending on a value that external input data can take.
  • the process of S105 is extracted from the code positions that call the general-purpose library function analyzed in S102 and included in a series of code positions where the external input data analyzed in S103 is used. Whether or not the vulnerability becomes a problem when the range of possible values of the external input data analyzed in S103 is input to the general-purpose library function called by the code at the code position (whether an abnormality occurs) Is determined for each external input data value.
  • the operation setting file output unit 1124 displays the name of the general-purpose library function having the vulnerability (vulnerability library function), the code position for calling the vulnerability library function, the external An operation setting file 1130 is generated in which the type of input data (variable name) and the invalid value of external input data (value that causes an abnormality) are described. Then, the generated operation setting file 1130 is output to the operation setting file storage unit 1240 and stored in the operation setting file storage unit 1240.
  • the Web server program 1210 receives an HTTP request from the client terminal 2000 (S201).
  • the Web server program 1210 passes the received HTTP request to the Web application 1220 (S202).
  • the Web application 1220 calls the general-purpose library I / F 1231 and requests to call a general-purpose library function (Yes in S203)
  • the called general-purpose library I / F 1231 calls the countermeasure selection unit 1232 (S204).
  • the countermeasure selection unit 1232 reads the operation setting file 1130, and obtains information on the call code position of a general-purpose library function (vulnerability library function) that may contain external input data that reveals vulnerability from the operation setting file 1130.
  • Obtain S205
  • the measure selection unit 1232 acquires information on the position of the code executed until the general library I / F 1231 is called in S203 from execution information such as a stack trace (S206).
  • the countermeasure selection unit 1232 determines whether or not it is necessary to execute the vulnerability countermeasure processing unit 1233 (S207). Specifically, if any of the code positions acquired in S205 matches the code position acquired in S206, it is associated with the code position that matches the code position acquired in S206 from the operation setting file 1130. Get the name of the vulnerability library function, the type of external input data, and the invalid value of the external input data. Then, the countermeasure selection unit 1232 acquires the name of the acquired vulnerability library function, the type of the external input data, the invalid value of the external input data, the name of the general library function that the Web application 1220 is trying to call, and the general library function.
  • the type of external input data to be processed in step 4 is compared with the value of the external input data, and if all three elements match, it is determined that the vulnerability countermeasure processing unit 1233 needs to be executed. On the other hand, if at least one of the three elements does not match, it is determined that the vulnerability countermeasure processing unit 1233 does not need to be executed. Further, the countermeasure selection unit 1232 designates the vulnerability countermeasure processing unit 1233 corresponding to the vulnerability library function that the Web application 1220 intends to call as a call target.
  • the countermeasure selection unit 1232 determines that the vulnerability countermeasure processing unit 1233 needs to be called (YES in S207)
  • the countermeasure selection unit 1232 calls the vulnerability countermeasure processing unit 1233 before calling the general library processing unit 1234.
  • the general purpose library processing unit 1234 causes the vulnerability countermeasure processing unit 1233 to perform countermeasure processing so that the illegal value of the external input data is not processed (S208).
  • the vulnerability countermeasure processing unit 1233 causes countermeasure processing such as detoxification of external input data.
  • the countermeasure selection unit 1232 calls the general-purpose library processing unit 1234 (S209).
  • the countermeasure selection unit 1232 When it is determined that it is not necessary to call the vulnerability countermeasure processing unit 1233 (NO in S207), the countermeasure selection unit 1232 does not call the vulnerability countermeasure processing unit 1233 but calls the general library processing unit 1234. This is performed (S209).
  • the operation setting file 1130 has a code position (line number or the like) on the source code. Described.
  • the measure selection unit 1232 acquires the code position of the compiled Web application from execution information such as a stack trace. For this reason, in S207 described above, more specifically, the measure selection unit 1232 converts the code position in the source code of the operation setting file 1130 into the code position after compilation, the code position after conversion, the stack trace, and the like. Compared with the compiled code position obtained by.
  • the measure selection unit 1232 converts the compiled code position acquired by stack trace or the like into the code position on the source code, and converts the converted code position and the code position in the source code of the operation setting file 1130. Checking. Such code position conversion is possible by existing technology.
  • the source code or execution code of the Web application is statically analyzed before starting operation, and vulnerability countermeasures are automatically selected based on the data flow obtained by static code analysis.
  • a Web application execution environment having a function to perform the above is provided.
  • the result of static code analysis of the Web application and setting file is used to determine whether or not there is a need for countermeasures for Web application vulnerability, and Web application vulnerability countermeasures are implemented according to the determination result.
  • a Web application vulnerability countermeasure system having a Web application execution environment having a function to perform the above has been described. Further, in the present embodiment, based on the result of comparing the location of the called library that is obtained at the time of executing the Web application with the location of the library calling that requires vulnerability countermeasures obtained by static code analysis, Explained that it has a library to change the operation performed internally.
  • Embodiment 2 the call position of the general-purpose library that uses the external input data is acquired by static code analysis before starting the operation, and the information on the call position of the general-purpose library acquired before starting the operation when the Web application is executed.
  • a configuration has been described in which the necessity of countermeasures against vulnerability performed inside the general-purpose library is dynamically changed from information on the position of the called code included in the execution information of the Web application such as a stack trace.
  • static code analysis before the start of operation it is checked at which position on the syntax of data (HTML, SQL statement, etc.) passed to the general-purpose library is used.
  • FIG. 5 is a configuration diagram of the Web application vulnerability countermeasure system 1000 in the present embodiment.
  • FIG. 5 is obtained by adding a syntax analysis unit 1125 to the static code analysis unit 1120 with respect to the configuration of the first embodiment (FIG. 2).
  • the syntax analysis unit 1125 is called from the external input data analysis unit 1123 and provides a function of analyzing the syntax of a language different from that of a Web application such as an HTML sentence or an SQL sentence.
  • Steps S301 to S304 in FIG. 6 are the same as steps S101 to S104 in FIG.
  • the syntax analysis unit 1125 examines where the external input data is used in the syntax of data (HTML, SQL statement, etc.) passed to the general-purpose library function. For example, in the case of an HTML sentence, it is examined which element content, attribute value of which attribute, etc., is where the external input data is used.
  • the operation setting file output unit 1124 uses the location of the code that calls the general-purpose library function analyzed in S302, the name of the general-purpose library function to be called, and a series of codes that use the external input data analyzed in S303.
  • the operation setting file 1130 is output based on the position and the value that can be taken by the external input data in each code, and information on where the external input data passed to the general-purpose library function examined in S305 is used in the syntax. (S306).
  • the external input data passed to the vulnerability library function is included at any position in the syntax of the HTML sentence or the SQL sentence. Is described.
  • a plurality of syntactic positions are listed, and countermeasure processing is described for each syntactic position.
  • the description of the operation setting file 1130 according to the first embodiment includes the name of a general-purpose library function having a vulnerability (vulnerability library function), the code position for calling the vulnerability library function, and the type of external input data (variables). And an invalid value of external input data (a value that causes an abnormality).
  • the generated operation setting file 1130 is output to the operation setting file storage unit 1240 and stored in the operation setting file storage unit 1240 as in the first embodiment.
  • the countermeasure selection unit 1232 determines in S208 that the external input data to be rendered harmless is included in the HTTP request from the client terminal 2000. It is determined at which position in the HTML sentence or the SQL sentence it is described. Further, the measure selection unit 1232 extracts a match with the description position in the HTTP request from a plurality of syntax positions described in the operation setting file 1130, and extracts a countermeasure process for the extracted syntax position. Then, the countermeasure selection unit 1232 causes the vulnerability countermeasure processing unit 1233 to execute the extracted countermeasure processing to make the external input data harmless or the like. The other flow is the same processing flow as that in FIG.
  • the external library data is used. It is possible to select the contents of vulnerability countermeasures executed internally more accurately.
  • the library that changes the operation to be performed internally based on the information on where the input data from the outside obtained by static code analysis is used in the syntax of the data passed to the library It was explained that
  • Embodiment 3 FIG.
  • information such as the call position of a general-purpose library that uses external input data before starting operation is acquired by static code analysis, and the information acquired before starting operation when executing a Web application , It dynamically changes the necessity of countermeasures against vulnerabilities performed inside the general-purpose library from information that can be acquired at the time of execution such as stack trace.
  • test data or a script of a dynamic test is output.
  • the test data or script according to the present embodiment is a dynamic code for detecting a vulnerability due to an error in a configuration file of a Web application that cannot determine whether or not a vulnerability countermeasure is necessary in static code analysis before starting operation. Used for testing.
  • FIG. 7 is a configuration diagram of the Web application vulnerability countermeasure system 1000 in the present embodiment.
  • a Web application setting file 1111 and test data / script 1131 are added to the development environment 1100 with respect to the configuration of the second embodiment (FIG. 5), and the setting file analysis is further performed to the static code analysis unit 1120.
  • a part 1126 and a test data / script output part 1127 are added.
  • the setting file analysis unit 1126 reads the setting file 1111 of the Web application, verifies that there is no error in the setting file, and extracts the value specified in the setting file.
  • the test data / script output unit 1127 outputs test data / script 1131 using the analysis result of the web application source / execution code 1110 and the web application setting file 1111 in the static code analysis unit 1120.
  • the development environment 1100 corresponds to an example of a program analysis apparatus.
  • the web application source / execution code 1110 and the web application setting file 1111 are read by the web application input unit 1121 (S401).
  • the general-purpose library usage verification unit 1122 positions the code that calls the general-purpose library function used by the web application source / executed code 1110 (number of lines, etc.), and the type of general-purpose library function to be called (HTML output, (Database access, etc.) is examined, and it is verified that the data given to the general-purpose library function and the usage are appropriate (S402).
  • the setting file analysis unit 1126 analyzes the setting file 1111 of the Web application and sets the setting contents of the setting file 1111 of the Web application as It is verified whether there is an obvious setting error such as not being within a settable value range (S403).
  • the general-purpose library function When the general-purpose library function is not properly used (No in S402) or when it is determined that there is a setting error in the Web application setting file 1111 (No in S403), the general-purpose library function that is not properly used The process ends after outputting a message including the type of information, the position on the code, the reason for determining that it is not being used properly, the contents of the setting error in the setting file 1111 of the Web application, and the like (S404).
  • test data / script output unit 1127 performs processing of the general-purpose library function by setting the Web application setting file 1111 in the processing using the general-purpose library function based on the results analyzed in S402, S403, and S405.
  • test data / script 1131 for performing a dynamic test is output (S408). That is, the test data / script output unit 1127 uses the value of the web application setting file 111, the vulnerability library function, the code position where the external input data is used by the web application, and the like, Test data or a script for inspecting the suitability of the data is generated.
  • test data or a script for inspecting a vulnerability due to an error in the setting file of the Web application is created. This makes it easier to find errors in configuration files that cannot be detected by static code analysis before the start of operation.
  • FIG. 9 is a diagram showing an example of hardware resources of the Web application vulnerability countermeasure system 1000 shown in the first to third embodiments.
  • the configuration in FIG. 9 is merely an example of the hardware configuration of the Web application vulnerability countermeasure system 1000, and the hardware configuration of the Web application vulnerability countermeasure system 1000 is not limited to the configuration in FIG. Other configurations may be used.
  • the Web application vulnerability countermeasure system 1000 includes a CPU 911 that executes a program.
  • the CPU 911 is connected to, for example, a ROM (Read Only Memory) 913, a RAM (Random Access Memory) 914, a communication board 915, a display device 901, a keyboard 902, a mouse 903, and a magnetic disk device 920 via a bus 912. Control hardware devices. Further, the CPU 911 may be connected to an FDD 904 (Flexible Disk Drive), a compact disk device 905 (CDD), a printer device 906, and a scanner device 907.
  • FDD 904 Flexible Disk Drive
  • CDD compact disk device
  • printer device 906 printer device 907
  • a storage device such as an SSD (Solid State Drive), an optical disk device, or a memory card (registered trademark) read / write device may be used.
  • the RAM 914 is an example of a volatile memory.
  • the storage media of the ROM 913, the FDD 904, the CDD 905, and the magnetic disk device 920 are an example of a nonvolatile memory. These are examples of the storage device.
  • the “operation setting file storage unit 1240” described in the first to third embodiments is realized by the RAM 914, the magnetic disk device 920, and the like.
  • a communication board 915, a keyboard 902, a mouse 903, a scanner device 907, and the like are examples of input devices.
  • the communication board 915, the display device 901, the printer device 906, and the like are examples of output devices.
  • the communication board 915 is connected to a network.
  • the communication board 915 may be connected to a LAN (Local Area Network), the Internet, a WAN (Wide Area Network), a SAN (Storage Area Network), or the like.
  • LAN Local Area Network
  • WAN Wide Area Network
  • SAN Storage Area Network
  • the magnetic disk device 920 stores an operating system 921 (OS), a window system 922, a program group 923, and a file group 924.
  • the programs in the program group 923 are executed by the CPU 911 using the operating system 921 and the window system 922.
  • the RAM 914 temporarily stores at least part of the operating system 921 program and application programs to be executed by the CPU 911.
  • the RAM 914 stores various data necessary for processing by the CPU 911.
  • the ROM 913 stores a BIOS (Basic Input Output System) program
  • the magnetic disk device 920 stores a boot program.
  • BIOS Basic Input Output System
  • the BIOS program in the ROM 913 and the boot program in the magnetic disk device 920 are executed, and the operating system 921 is activated by the BIOS program and the boot program.
  • the program group 923 includes a program for executing a function described as “-unit” (other than “operation setting file storage unit 1240” in the description of Embodiments 1 to 3), “Web application 1220”. , “Web server program 1210” is stored. The program is read and executed by the CPU 911.
  • Information, data, signal values, variable values, and parameters stored in a storage medium such as a disk or memory are read out to the main memory or cache memory by the CPU 911 via a read / write circuit.
  • the read information, data, signal value, variable value, and parameter are used for CPU operations such as extraction, search, reference, comparison, calculation, calculation, processing, editing, output, printing, and display.
  • Information, data, signal values, variable values, and parameters are stored in the main memory, registers, cache memory, and buffers during the CPU operations of extraction, search, reference, comparison, calculation, processing, editing, output, printing, and display. It is temporarily stored in a memory or the like.
  • the arrows in the flowcharts described in the first to third embodiments mainly indicate input / output of data and signals.
  • Data and signal values are recorded on a storage medium such as a memory of the RAM 914, a flexible disk of the FDD 904, a compact disk of the CDD 905, a magnetic disk of the magnetic disk device 920, other optical disks, a Blu-ray (registered trademark) disk, and a DVD.
  • Data and signals are transmitted online via a bus 912, signal lines, cables, or other transmission media.
  • to part may be “to circuit”, “to device”, “to device”, and “to step” It may be “ ⁇ procedure” or “ ⁇ processing”. Further, the processing of the Web application vulnerability countermeasure system 1000 can be regarded as a program execution method. Further, what is described as “ ⁇ unit” may be realized by firmware stored in the ROM 913. Alternatively, it may be implemented only by software, or only by hardware such as elements, devices, substrates, and wirings, by a combination of software and hardware, or by a combination of firmware.
  • Firmware and software are stored as programs in a storage medium such as a magnetic disk, a flexible disk, an optical disk, a compact disk, a Blu-ray (registered trademark) disk, and a DVD.
  • the program is read by the CPU 911 and executed by the CPU 911.
  • the program causes the computer to function as the “unit” in the first to third embodiments.
  • the computer executes the procedure and method of “unit” in the first to third embodiments.
  • the Web application vulnerability countermeasure system 1000 shown in the first to third embodiments includes a CPU as a processing device, a memory as a storage device, a magnetic disk, a keyboard as an input device, a mouse, a communication board, etc., and a display as an output device.
  • a computer including a device, a communication board, and the like.
  • the functions indicated as “ ⁇ units” are realized using these processing devices, storage devices, input devices, and output devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

 脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行する。脆弱性対策処理部1233は、汎用ライブラリ1230に含まれる汎用ライブラリ関数のうち脆弱性のある汎用ライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う。対策選択部1232は、Webアプリケーション1220の実行時に脆弱性ライブラリ関数の呼び出しが要求された場合に、脆弱性ライブラリ関数の脆弱性に対する対策処理を脆弱性対策処理部1233に行わせ、脆弱性対策処理部1233により対策処理が行われた後に、脆弱性ライブラリ関数を呼び出す。

Description

プログラム実行装置及びプログラム解析装置
 本発明は、プログラムの脆弱性に対する対策処理を行う技術に関する。
 従来から、OS(Operating System)やアプリケーションプログラム(以下、単に「アプリケーション」という)などに存在するセキュリティ上の脆弱性を攻撃することで、データやプログラムの改ざん、コンピュータやアプリケーションの強制停止、コンピュータへの不正侵入や不正操作などの被害が発生している。
 近年では、Webサーバ上で動作するWebアプリケーションへの攻撃が増加しており、機密情報や個人情報の漏えいや改ざん、サービスの不正利用などが社会的な問題となっている。
 Webアプリケーションに対する攻撃は、Webアプリケーションに対するクライアントからの入力データとなるHTTP(HyperText Transfer Protocol)のリクエスト中に、不正なデータを混入させることで行う。
 Webアプリケーションの脆弱性は、入力データを利用する処理内容に応じて異なり、クロスサイトスクリプティングやSQLインジェクションなどの複数の種類があることが知られている。
 例えば、クロスサイトスクリプティングは、HTML(HyperText Markup Language)データを動的に生成する処理における脆弱性を利用した攻撃であり、この脆弱性により、HTMLデータ中にスクリプトが混入することを許してしまう。
 また、SQLインジェクションは、リレーショナルデータベースのデータ操作を行うSQL文を発行する処理の脆弱性を利用した攻撃であり、この脆弱性により、アプリケーションが想定しないSQL文が実行されることを許してしまう。
 脆弱性を攻撃するための不正なデータは、脆弱性の種類によって異なり、それらの対策方法も異なる。
 例えば、クロスサイトスクリプティングを行うための方法の1つとして、不正なデータとして<SCRIPT>タグをリクエスト中に含める方法がある。
 クロスサイトスクリプティングの対策としては、生成するHTML中で<SCRIPT>タグが<SCRIPT>タグとして解釈されないようにHTML文法に則り無害化することである。
 また、SQLインジェクションでは、文字列を括るための「’」を混入することで文字列を終端し、その後に任意のSQL文を混入する方法がある。
 このようなSQLインジェクションに対する対策は、入力データに含まれる「’」が、文字列を括る記号であることを意味しないようにSQLの文法に則り無害化することである。
 従来では、Webアプリケーションの脆弱性に対する攻撃を防御するためには、主に以下の2つの対策が採られている。
 1つは、各種脆弱性を発生させる入力データを検証して、不正なデータを無害化するセキュリティ機能を、脆弱性が発生しうる処理内容に応じてWebアプリケーション自体に組み込むことである。
 2つ目の防御方法は、WebアプリケーションへのHTTPリクエストをWebアプリケーションに到達する前に検査して、攻撃が発生する可能性があるHTTPリクエストのブロックや無害化を行うWebアプリケーションファイアウォールを利用することである。
 1つ目の防御方法については、OWASP(The Open Web Application Security Project)などの組織が組み込むセキュリティ機能などのガイドラインを公開している。
 また、セキュリティ機能の組み込みを支援する方法として、プログラムのソースコードを解析することで、脆弱性が発生しうる箇所を検出する方法も知られている(例えば、特許文献1)。
 2つ目の防御方法のWebアプリケーションファイアウォールについては、事前に登録してある不正なデータのパターンが含まれているかを検証し、不正なデータのパターンがHTTPリクエストに含まれていた場合には、通信の遮断やデータの無害化などを行う方法が一般的である(例えば、非特許文献1)。
 また、各種の脆弱性対策を行うライブラリを用いる方法がある(例えば、特許文献2)。
この方法では、開発者が作成したリクエストの各パラメータに対する各種脆弱性の対策の要否を記載した設定ファイルを読込み、設定ファイルの内容に応じてHTTPリクエストの受信時にパラメータごとに指定された脆弱性対策を行うライブラリを利用することで、Webアプリケーションの脆弱性対策を効率的に行うことができる。
特開2007-52625号公報 特開2007-47884号公報
ModSecurity <URL:http://www.modsecurity.org/>
 従来のWebアプリケーション内のソースコードを静的に解析する方法(特許文献1)は、脆弱性が発生しうる箇所は検出するものの、脆弱性に対する対策方法の検討と修正は、Webアプリケーションの開発者が個別に行わなければいけないという課題がある。
 また、Webアプリケーションファイアウォールによって対策する方法(非特許文献1)は、Webアプリケーションが行う処理内容を考慮しない。
 従って、Webアプリケーションの処理内容によっては特定の種類の脆弱性が問題にならない場合やWebアプリケーションにおいて脆弱性の対策を施している場合も、不正なデータのパターンに該当するものの無害なデータが不正なデータとして誤検出されてしまう。
 このため、Webアプリケーションでは実質問題がない通信を遮断することや、無害化によって、正常に扱えるデータが変換されてしまう悪影響が発生するという課題がある。
 さらに、リクエストのパラメータごとに対策する方法(特許文献2)は、設定ファイルを開発者がパラメータごとに設定する必要があり手間がかかるという課題がある。
 さらに、設定ミスなどにより、脆弱性の対策抜けや不必要な対策を選択してしまう可能性がある。
 さらに、指定された脆弱性対策は、Webアプリケーションファイアウォールと同様にHTTPリクエスト受信時に一括して行われるため、施された脆弱性対策が別の脆弱性の可能性がある処理に悪影響を及ぼすという課題もある。
 この発明は上記のような課題を解決することを主な目的としており、脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行し、対策漏れを防止し、不要な対策処理による悪影響を回避できる構成を得ることを主な目的とする。
 本発明に係るプログラム実行装置は、
 ライブラリ関数を用いるプログラムを実行するプログラム実行装置であって、
 前記プログラムで用いられるライブラリ関数のうち脆弱性のあるライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う脆弱性対策処理部と、
 前記プログラム実行時に前記脆弱性ライブラリ関数の呼び出しが要求された場合に、前記脆弱性ライブラリ関数の脆弱性に対する対策処理を前記脆弱性対策処理部に行わせ、前記脆弱性対策処理部により対策処理が行われた後に、前記脆弱性ライブラリ関数を呼び出す脆弱性対策制御部とを有することを特徴とする。
 本発明によれば、プログラム実行時に脆弱性ライブラリ関数の呼び出しが要求された場合に、当該脆弱性ライブラリ関数の脆弱性に対する対策処理を行うため、脆弱性を狙った攻撃がなされる前に脆弱性に対する対策処理を確実に実行することができ、対策漏れを防止し、不要な対策処理による悪影響を回避することができる。
実施の形態1に係るシステム構成例を示す図。 実施の形態1に係るWebアプリケーション脆弱性対策システムの構成例を示す図。 実施の形態1に係る開発環境における動作例を示すフローチャート図。 実施の形態1に係る実行環境における動作例を示すフローチャート図。 実施の形態2に係るWebアプリケーション脆弱性対策システムの構成例を示す図。 実施の形態2に係る開発環境における動作例を示すフローチャート図。 実施の形態3に係るWebアプリケーション脆弱性対策システムの構成例を示す図。 実施の形態3に係る開発環境における動作例を示すフローチャート図。 実施の形態1~3に係るWebアプリケーション脆弱性対策システムのハードウェア構成例を示す図。
 実施の形態1.
 本実施の形態及び以降の実施の形態では、必要十分なWebアプリケーションのセキュリティ対策を自動選択し、対策漏れの防止と脆弱性対策による悪影響を回避するWebアプリケーション脆弱性対策システムを説明する。
 図1は、本実施の形態に係るWebアプリケーション脆弱性対策システムを含むシステム構成図である。
 図1に示すように、本実施の形態に係るシステムは、Webアプリケーション脆弱性対策システム1000、クライアント端末2000、ネットワーク3000(インターネット等のネットワーク)から構成される。
 Webアプリケーション脆弱性対策システム1000と複数のクライアント端末2000は、ネットワーク3000を介して接続される。
 また、図2は、本実施の形態のWebアプリケーション脆弱性対策システム1000の構成図である。
 なお、図2では、図示を省略しているが、Webアプリケーション脆弱性対策システム1000は、CPU(Central Processing Unit)、メモリ、二次記憶装置等のハードウェア資源を有している。
 そして、以下に説明する機能を実現するプログラムを二次記憶装置に格納しておき、プログラムの実行に際して、二次記憶装置からプログラムをメモリにロードし、CPUがメモリにロードされたプログラムを実行する。
 図2において、Webアプリケーション脆弱性対策システム1000は、開発環境1100と実行環境1200から構成される。
 開発環境1100は、開発者がWebアプリケーションを実装・試験するための環境である。
 実行環境1200は、運用を開始したWebアプリケーションを実行するための環境である。
 実行環境1200は、プログラム実行装置の例に相当する。
 開発環境1100は、静的コード解析部1120を備える。
 静的コード解析部1120は、Webアプリケーションのソースコード又は実行コード(「Webアプリケーションのソース/実行コード1101」と表記する)を読込み、Webアプリケーションのソース/実行コード1101を静的解析して、脆弱性対策のための動作設定ファイル1130を出力する。
 また、静的コード解析部1120は、Webアプリケーション入力部1121、汎用ライブラリ利用検証部1122、外部入力データ解析部1123、動作設定ファイル出力部1124から構成される。
 Webアプリケーション入力部1121は、Webアプリケーションのソース/実行コード1101を読込む。
 汎用ライブラリ利用検証部1122は、Webアプリケーションのソース/実行コード1101に対する静的コード解析により汎用ライブラリ関数を呼び出しているコードの位置と汎用ライブラリI/F1231の種類を調べて、汎用ライブラリ関数の利用方法が正しいかを検証する。
 外部入力データ解析部1123は、静的コード解析によりWebアプリケーションの外部からの入力データ(外部入力データ)のデータフローを解析し、その外部入力データの利用されるコードの位置と取り得る値(データの値及びデータの型)を解析する。
 動作設定ファイル出力部1124は、汎用ライブラリ利用検証部1122と外部入力データ解析部1123の解析結果に基づいて、汎用ライブラリの実行時の動作を決定するための動作設定ファイル1130を出力する。
 なお、動作設定ファイル1130には、脆弱性のある汎用ライブラリ関数(以下、「脆弱性ライブラリ関数」という)と、脆弱性ライブラリ関数で処理された場合に異常が発生し得るパラメータの名称と当該パラメータにおける不正値と、脆弱性ライブラリ関数を呼び出すコード位置のうち異常が発生し得るコード位置とが記述されている。
 動作設定ファイル1130は、脆弱性情報の例に相当する。
 また、実行環境1200は、Webサーバプログラム1210、Webアプリケーション1220、汎用ライブラリ1230、動作設定ファイル記憶部1240から構成される。
 Webサーバプログラム1210は、Webアプリケーション1220を実行するためのプログラムである。
 Webアプリケーション1220は、汎用ライブラリ関数を呼び出し、汎用ライブラリ関数の実行結果を得る。
 汎用ライブラリ1230は、HTTPリクエストの送受信や、HTML出力処理や、データベースへのアクセス、ファイルの読み書きなどの一般的なWebアプリケーションで行われる処理を行うための機能を提供する。
 動作設定ファイル記憶部1240は、開発環境1100の静的コード解析部1120より出力された動作設定ファイル1130を記憶する。
 動作設定ファイル記憶部1240は、脆弱性情報記憶部の例に相当する。
 汎用ライブラリ1230は、汎用ライブラリI/F(インタフェース)1231、対策選択部1232、脆弱性対策処理部1233、汎用ライブラリ処理部1234から構成される。
 汎用ライブラリI/F1231は、Webアプリケーション1220が汎用ライブラリ1230を利用するためのプログラムインタフェースを提供する。
 なお、汎用ライブラリI/F1231は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
 脆弱性対策処理部1233は、Webアプリケーションの脆弱性に対する対策処理を行う。
 なお、脆弱性対策処理部1233は、脆弱性の対策ごとに複数用意される。
 つまり、脆弱性対策処理部1233は、HTML出力処理やデータベースアクセスなどの処理の分類ごとに用意される。
 汎用ライブラリ処理部1234は、汎用ライブラリ1230が提供する処理(HTML出力処理やデータベースアクセスなど)を行う。
 汎用ライブラリ処理部1234は、汎用ライブラリ関数に相当する。
 また、汎用ライブラリ処理部1234は、処理内容に応じて複数用意される。
 対策選択部1232は、動作設定ファイル1130を読み込み、汎用ライブラリ1230内部で脆弱性の対策処理が必要か否かを判定する。
 より具体的には、対策選択部1232は、Webアプリケーション1220から汎用ライブラリ関数の呼び出しが要求された場合、すなわち、汎用ライブラリ処理部1234の呼び出しが要求された場合に、動作設定ファイル1130の内容に基づき、脆弱性の対策処理が必要か否かを判定する。
 そして、脆弱性の対策処理が必要な場合は、対策選択部1232は、まず、脆弱性対策処理部1233に脆弱性の対策処理を行わせ、脆弱性対策処理部1233により対策処理が行われた後に、対象の汎用ライブラリ処理部1234を呼び出す。
 対策選択部1232は、脆弱性対策制御部の例に相当する。
 次に、Webアプリケーション脆弱性対策システム1000で行う動作を説明する。
 Webアプリケーション脆弱性対策システム1000では、最初に開発環境1100の静的コード解析部1120でWebアプリケーションのソース/実行コード1110を静的コード解析し、動作設定ファイル1130を生成する。
 そして、Webアプリケーションのソース/実行コード1110をコンパイルして実行可能にしてWebアプリケーション1220を実行環境1200に配置し、また、動作設定ファイル1130を実行環境1200に配置し、Webアプリケーション1220の運用が開始される。
 開発環境1100での動作例を図3を用いて説明する。
 開発環境1100では、Webアプリケーション入力部1121でWebアプリケーションのソース/実行コード1110が読込まれる(S101)。
 次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であるかを検証する(S102)。
 汎用ライブラリ関数が適切に利用されていると判定した場合には(S102のYes)、外部入力データ解析部1123が、外部からの入力データが格納される変数(外部入力データ)を特定し、外部入力データのデータフローを調べて、外部入力データが利用される一連のコードの位置及び、各コードにおける外部入力データが取り得る値の範囲を調べる(S103)。
 汎用ライブラリ関数が適切に利用されていないと判定した場合には(S102のNo)、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由などを含むメッセージを出力して処理を終了する(S104)。
 S103の後には、動作設定ファイル出力部1124が、S102で解析した汎用ライブラリ関数を呼び出しているコードの位置及び呼び出される汎用ライブラリ関数の種類並びに、S103で解析した外部入力データが利用される一連のコードの位置及び各コードにおける外部入力データが取り得る値の結果に基づいて、動作設定ファイル1130を出力する(S105)。
 この動作設定ファイル1130は、外部入力データの取り得る値によって脆弱性が発生する可能性がある汎用ライブラリ関数を呼び出すコードの位置を含む、対策選択のためのファイルである。
 S105の処理をさらに具体的に説明すると、S102で解析した汎用ライブラリ関数を呼び出しているコード位置のうちS103で解析した外部入力データが利用される一連のコード位置に含まれているコード位置を抽出し、そのコード位置のコードが呼び出している汎用ライブラリ関数に、S103で解析した外部入力データの取り得る値の範囲を入力した場合に脆弱性が問題になるか否か(異常が発生するか否か)を外部入力データの値ごとに判定する。
 そして、脆弱性が問題になると判定した場合には、動作設定ファイル出力部1124は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)が記述される動作設定ファイル1130を生成する。
 そして、生成された動作設定ファイル1130は、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
 次に、実行環境1200での動作例を、図4を用いて説明する。
 まず、Webサーバプログラム1210は、クライアント端末2000からのHTTPリクエストを受信する(S201)。
 Webサーバプログラム1210は、受信したHTTPリクエストをWebアプリケーション1220に渡す(S202)。
 Webアプリケーション1220が、汎用ライブラリI/F1231を呼び出し、汎用ライブラリ関数の呼び出しを要求した場合に(S203のYes)、呼び出された汎用ライブラリI/F1231は対策選択部1232を呼び出す(S204)。
 対策選択部1232は、動作設定ファイル1130を読込み、動作設定ファイル1130から、脆弱性を顕在化させる外部入力データが混入するおそれがある汎用ライブラリ関数(脆弱性ライブラリ関数)の呼び出しコード位置の情報を取得する(S205)。
 次に、対策選択部1232は、S203で汎用ライブラリI/F1231を呼び出すまでに実行されたコードの位置の情報をスタックトレースなどの実行情報から取得する(S206)。
 次に、対策選択部1232は、脆弱性対策処理部1233を実行する必要があるか否かを判定する(S207)。
 具体的には、S205で取得したコード位置の中にS206で取得したコード位置と一致するものがあれば、動作設定ファイル1130から、S206で取得したコード位置と一致するコード位置に対応付けられている脆弱性ライブラリ関数の名称と、外部入力データの種類と、外部入力データの不正値を取得する。
 そして、対策選択部1232は、取得した脆弱性ライブラリ関数の名称と外部入力データの種類と外部入力データの不正値と、Webアプリケーション1220が呼び出そうとしている汎用ライブラリ関数の名称と当該汎用ライブラリ関数で処理させようとしている外部入力データの種類と外部入力データの値とを照合し、3つの要素のすべてが一致する場合に、脆弱性対策処理部1233を実行する必要があると判定する。
 一方、3つの要素の少なくとも1つが一致しない場合は、脆弱性対策処理部1233を実行する必要がないと判定する。
 また、対策選択部1232は、Webアプリケーション1220が呼び出そうとしている脆弱性ライブラリ関数に対応する脆弱性対策処理部1233を呼び出しの対象として指定する。
 対策選択部1232は、脆弱性対策処理部1233を呼び出す必要があると判定した場合(S207のYES)には、汎用ライブラリ処理部1234の呼び出しを行う前に、脆弱性対策処理部1233の呼び出しを行い、汎用ライブラリ処理部1234が外部入力データの不正値を処理しないようにする対策処理を脆弱性対策処理部1233に行わせる(S208)。
 具体的には、脆弱性対策処理部1233に外部入力データの無害化などの対策処理を行わせる。
 脆弱性対策処理部1233による対策処理が完了した後に、対策選択部1232は、汎用ライブラリ処理部1234を呼び出す(S209)。
 脆弱性対策処理部1233の呼び出しが必要ないと判断した場合(S207のNO)には、対策選択部1232は、脆弱性対策処理部1233の呼び出しは行わずに、汎用ライブラリ処理部1234の呼び出しを行う(S209)。
 以上のS203~S209のステップは、Webサーバプログラム1210がクライアント端末2000にレスポンスを送信するまでに汎用ライブラリI/F1231が呼び出されるたびに行われる(S210)。
 そして、Webサーバプログラム1210がHTTPレスポンスをクライアント端末2000に送信する場合には、Webアプリケーション1220はHTTPレスポンスをWebサーバプログラム1210に渡す(S211)。
 そして、最後に、Webサーバプログラム1210は、HTTPレスポンスをクライアント端末2000に応答する(S212)。
 なお、開発環境100において、静的コード解析部1120がWebアプリケーションのソースコードを用いて動作設定ファイル1130を生成した場合は、動作設定ファイル1130にはソースコード上のコード位置(ライン番号等)が記述される。
 一方、実行環境1200では、対策選択部1232は、コンパイル後のWebアプリケーションのコード位置をスタックトレースなどの実行情報から取得する。
 このため、上記のS207では、より詳細には、対策選択部1232は、動作設定ファイル1130のソースコードでのコード位置をコンパイル後のコード位置に変換し、変換後のコード位置と、スタックトレース等により取得したコンパイル後のコード位置とを照合している。
 もしくは、対策選択部1232は、スタックトレース等により取得したコンパイル後のコード位置をソースコード上のコード位置に変換し、変換後のコード位置と、動作設定ファイル1130のソースコードでのコード位置とを照合している。
 このようなコード位置の変換は既存技術により可能である。
 以上のように、本実施の形態では、運用開始前にWebアプリケーションのソースコードもしくは実行コードを静的コード解析し、静的コード解析で得られたデータフローに基づいて、脆弱性対策を自動選択する機能を備えたWebアプリケーション実行環境を提供する。
 これにより、必要十分なWebアプリケーションの脆弱性対策を自動選択できるため、対策漏れが防止できる上、不要な対策処理を実行しないため、対策処理による悪影響や処理速度の性能劣化を最小限にできる。
 本実施の形態では、Webアプリケーションや設定ファイルの静的コード解析の結果を使い、Webアプリケーションの脆弱性対策の必要性の有無を判定し、その判定結果に応じてWebアプリケーションの脆弱性対策を実施する機能をもつWebアプリケーション実行環境を有するWebアプリケーション脆弱性対策システムを説明した。
 また、本実施の形態では、静的コード解析で得られた脆弱性対策が必要なライブラリの呼び出しの位置とWebアプリケーションの実行時に取得した呼び出されたライブラリの位置情報を比較した結果に基づいて、内部で行う動作を変更するライブラリを有することを説明した。
 実施の形態2.
 以上の実施の形態1では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した汎用ライブラリの呼び出し位置の情報と、スタックトレースなどのWebアプリケーションの実行情報に含まれる呼び出されたコードの位置の情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更する構成を説明した。
 次に、本実施の形態では、運用開始前の静的コード解析で、汎用ライブラリに渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べることで、実行時に行う脆弱性対策の正確性を向上する実施の形態を示す。
 図5は、本実施の形態における、Webアプリケーション脆弱性対策システム1000の構成図である。
 図5は、実施の形態1の構成(図2)に対して、静的コード解析部1120に構文解析部1125を追加したものである。
 構文解析部1125は、外部入力データ解析部1123から呼び出されて、HTML文やSQL文などのWebアプリケーションとは異なる言語の構文を解析する機能を提供する。
 開発環境1100での動作を図6を用いて説明する。
 図6のS301~S304は、図3のS101~S104と同様のフローであるため説明は省略する。
 S305では、構文解析部1125が、汎用ライブラリ関数に渡されるデータ(HTMLやSQL文など)の構文上のどの位置に外部入力データが利用されているかを調べる。
 例えば、HTML文の場合には、外部入力データが利用される箇所が、どの要素のコンテンツなのか、どの属性の属性値なのかなどを調べる。
 次に、動作設定ファイル出力部1124が、S302で解析した汎用ライブラリ関数を呼び出しているコードの位置及び呼び出される汎用ライブラリ関数の名称並びに、S303で解析した外部入力データが利用される一連のコードの位置及び各コードにおける外部入力データが取り得る値、及びS305で調べた汎用ライブラリ関数に渡される外部入力データが構文上のどの位置で利用されるかの情報に基づいて、動作設定ファイル1130を出力する(S306)。
 本実施の形態で生成される動作設定ファイル1130には、実施の形態1の記述内容に加えて、脆弱性ライブラリ関数に渡される外部入力データがHTML文又はSQL文の構文上のどの位置に含まれるかが記述される。
 本実施の形態の動作設定ファイル1130では、この構文上の位置が複数列挙され、更に、構文上の位置ごとに対策処理が記述されている。
 なお、実施の形態1の動作設定ファイル1130の記述内容は、脆弱性のある汎用ライブラリ関数(脆弱性ライブラリ関数)の名称と、脆弱性ライブラリ関数を呼び出すコード位置と、外部入力データの種類(変数の名称)と、外部入力データの不正値(異常が発生する値)である。
 生成された動作設定ファイル1130は、実施の形態1と同様に、動作設定ファイル記憶部1240に出力され、動作設定ファイル記憶部1240に格納される。
 実行環境1200の動作では、図4の処理フローのS208の処理が、実施の形態1と異なる。
 脆弱性対策処理部1233を呼び出す必要があると判定した場合(S207のYES)に、対策選択部1232は、S208において、無害化の対象となる外部入力データがクライアント端末2000からのHTTPリクエスト内のHTML文又はSQL文のどの位置に記述されているかを判断する。
 更に、対策選択部1232は、動作設定ファイル1130に記述されている複数の構文位置の中から、HTTPリクエストにおける記述位置と合致するものを抽出し、抽出した構文位置の対策処理を抽出する。
 そして、対策選択部1232は、脆弱性対策処理部1233に、抽出した対策処理を実行させて、外部入力データの無害化等を行わせる。
 これ以外のフローは、図4と同じ処理フローであるため説明は省略する。
 以上のように、本実施の形態では、静的コード解析において、汎用ライブラリに渡すHTML文やSQL文などの構文上のどの位置に外部入力データが利用されるかを調べることで、汎用ライブラリの内部で実行する脆弱性対策の内容をより正確に選択できるようにできる。
 以上、本実施の形態では、静的コード解析で得られた外部からの入力データがライブラリに渡されるデータの構文上のどこに利用されるかの情報に基づいて、内部で行う動作を変更するライブラリを有することを説明した。
 実施の形態3.
 以上の実施の形態1、2では、運用開始前に外部入力データを利用する汎用ライブラリの呼び出し位置などの情報を静的コード解析で取得し、Webアプリケーションの実行時に運用開始前に取得した情報と、スタックトレースなどの実行時に取得できる情報から、汎用ライブラリの内部で行う脆弱性対策の要否を動的に変更するものである。
 これに対して、本実施の形態では、動的試験の試験データもしくはスクリプトを出力する例を示す。
 本実施の形態の試験データもしくはスクリプトは、運用開始前の静的コード解析では、脆弱性対策の要否を判定することができないWebアプリケーションの設定ファイルの誤りによる脆弱性を検出するための動的試験に用いられる。
 図7は、本実施の形態における、Webアプリケーション脆弱性対策システム1000の構成図である。
 図7では、実施の形態2の構成(図5)に対して、開発環境1100にWebアプリケーションの設定ファイル1111と試験データ/スクリプト1131を追加し、さらに静的コード解析部1120に、設定ファイル解析部1126、試験データ/スクリプト出力部1127を追加したものである。
 設定ファイル解析部1126は、Webアプリケーションの設定ファイル1111を読込んで、設定ファイルに誤りがないことの検証と、設定ファイルで指定された値を抽出する。
 試験データ/スクリプト出力部1127は、静的コード解析部1120でのWebアプリケーションのソース/実行コード1110やWebアプリケーションの設定ファイル1111に対する解析結果を用いて、試験データ/スクリプト1131を出力する。
 なお、本実施の形態に係る開発環境1100は、プログラム解析装置の例に相当する。
 実施の形態3における動作を図8を用いて説明する。
 開発環境1100では、Webアプリケーション入力部1121でWebアプリケーションのソース/実行コード1110及びWebアプリケーションの設定ファイル1111が読込まれる(S401)。
 次に、汎用ライブラリ利用検証部1122が、Webアプリケーションのソース/実行コード1110が利用する汎用ライブラリ関数を呼び出しているコードの位置(ライン数など)、呼び出しされる汎用ライブラリ関数の種類(HTML出力、データベースアクセスなど)を調べた上で、汎用ライブラリ関数に与えるデータや使い方が適切であることを検証する(S402)。
 汎用ライブラリ関数が適切に利用されていると判定した場合(S402のYes)には、設定ファイル解析部1126が、Webアプリケーションの設定ファイル1111を解析し、Webアプリケーションの設定ファイル1111の設定内容に、設定可能な値の範囲内にないなどの明らかな設定誤りがないかを検証する(S403)。
 汎用ライブラリ関数が適切に利用されていない場合(S402のNo)や、Webアプリケーションの設定ファイル1111に設定ミスがあると判定した場合(S403のNo)には、適切に利用されていない汎用ライブラリ関数の種類、コード上の位置、適切に利用されていないと判定した理由や、Webアプリケーションの設定ファイル1111の設定ミスの内容などを含むメッセージを出力して処理を終了する(S404)。
 汎用ライブラリ関数が適切に利用されており、かつWebアプリケーションの設定ファイル1111に設定誤りがないと判定した場合には(S403のNo)、S405~S407の処理が行われる。
 これらの処理は、図6のS303~S306の処理と同じであるため説明は省略する。
 次に、試験データ/スクリプト出力部1127は、S402、S403、S405で解析した結果に基づいて、汎用ライブラリ関数が利用されている処理でWebアプリケーションの設定ファイル1111の設定によって汎用ライブラリ関数の処理の内容が変更される処理について、動的試験をするための試験データ/スクリプト1131を出力する(S408)。
 つまり、試験データ/スクリプト出力部1127は、Webアプリケーションの設定ファイル111の値、脆弱性ライブラリ関数、Webアプリケーションで外部入力データが利用されるコード位置などを用いて、Webアプリケーションの設定ファイル111の値の適否を検査するための試験データ又はスクリプトを生成する。
 以上のように、本実施の形態では、Webアプリケーション及び設定ファイルを静的コード解析した結果に基づいて、Webアプリケーションの設定ファイルの誤りによる脆弱性を検査するための試験データもしくはスクリプトを作成することによって、静的コード解析では検出できない設定ファイルの誤りを運用開始前に見つけ出すことが容易になる。
 以上、本実施の形態では、Webアプリケーションの設定ファイルに依存する静的コード解析で得られた情報だけでは、ライブラリ内部で行う動作を決定できない場合に、設定ファイルに誤りがないかを動的に試験するための試験データやスクリプトを出力する静的コード解析部を有することを説明した。
 最後に、実施の形態1~3に示したWebアプリケーション脆弱性対策システム1000のハードウェア構成例について説明する。
 図9は、実施の形態1~3に示すWebアプリケーション脆弱性対策システム1000のハードウェア資源の一例を示す図である。
 なお、図9の構成は、あくまでもWebアプリケーション脆弱性対策システム1000のハードウェア構成の一例を示すものであり、Webアプリケーション脆弱性対策システム1000のハードウェア構成は図9に記載の構成に限らず、他の構成であってもよい。
 図9において、Webアプリケーション脆弱性対策システム1000は、プログラムを実行するCPU911を備えている。
 CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
 更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
 RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
 実施の形態1~3で説明した「動作設定ファイル記憶部1240」は、RAM914、磁気ディスク装置920等により実現される。
 通信ボード915、キーボード902、マウス903、スキャナ装置907などは、入力装置の一例である。
 また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
 通信ボード915は、図1に示すように、ネットワークに接続されている。
 例えば、通信ボード915は、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていてもよい。
 磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
 プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
 また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
 また、RAM914には、CPU911による処理に必要な各種データが格納される。
 また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
 Webアプリケーション脆弱性対策システム1000の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
 上記プログラム群923には、実施の形態1~3の説明において「~部」(「動作設定ファイル記憶部1240」以外、以下同様)として説明している機能を実行するプログラム、「Webアプリケーション1220」、「Webサーバプログラム1210」が記憶されている。
 プログラムは、CPU911により読み出され実行される。
 ファイル群924には、実施の形態1~3の説明において、「~の判断」、「~の判定」、「~の抽出」、「~の比較」、「~の検証」、「~の生成」、「~の設定」、「~の取得」、「~の照合」、「~の選択」、「~の生成」、「~の入力」、「~の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が、ディスクやメモリなどの記憶媒体にファイルとして記憶されている。
 また、暗号鍵・復号鍵や乱数値やパラメータが、ディスクやメモリなどの記憶媒体にファイルとして記憶されてもよい。
 「~ファイル」や「~データベース」は、ディスクやメモリなどの記憶媒体に記憶される。
 ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
 そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
 抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
 また、実施の形態1~3で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
 データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記録される。
 また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
 また、実施の形態1~3の説明において「~部」として説明しているものは、「~回路」、「~装置」、「~機器」であってもよく、また、「~ステップ」、「~手順」、「~処理」であってもよい。
 また、Webアプリケーション脆弱性対策システム1000の処理をプログラム実行方法として捉えることができる。
 また、「~部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
 或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
 ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD等の記憶媒体に記憶される。
 プログラムはCPU911により読み出され、CPU911により実行される。
 すなわち、プログラムは、実施の形態1~3の「~部」としてコンピュータを機能させるものである。あるいは、実施の形態1~3の「~部」の手順や方法をコンピュータに実行させるものである。
 このように、実施の形態1~3に示すWebアプリケーション脆弱性対策システム1000は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
 そして、上記したように「~部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
 1000 Webアプリケーション脆弱性対策システム、1100 開発環境、1110 Webアプリケーションのソース/実行コード、1111 Webアプリケーションの設定ファイル、1120 静的コード解析部、1121 Webアプリケーション入力部、1122 汎用ライブラリ利用検証部、1123 外部入力データ解析部、1124
 動作設定ファイル出力部、1125 構文解析部、1126 設定ファイル解析部、1127 試験データ/スクリプト出力部、1130 動作設定ファイル、1131 試験データ/スクリプト、1200 実行環境、1210 Webサーバプログラム、1220 Webアプリケーション、1230 汎用ライブラリ、1231 汎用ライブラリI/F、1232 対策選択部、1233 脆弱性対策処理部、1234 汎用ライブラリ処理部、1240 動作設定ファイル記憶部、2000 クライアント端末、3000 ネットワーク。

Claims (7)

  1.  ライブラリ関数を用いるプログラムを実行するプログラム実行装置であって、
     前記プログラムで用いられるライブラリ関数のうち脆弱性のあるライブラリ関数である脆弱性ライブラリ関数の脆弱性に対する対策処理を行う脆弱性対策処理部と、
     前記プログラム実行時に前記脆弱性ライブラリ関数の呼び出しが要求された場合に、前記脆弱性ライブラリ関数の脆弱性に対する対策処理を前記脆弱性対策処理部に行わせ、前記脆弱性対策処理部により対策処理が行われた後に、前記脆弱性ライブラリ関数を呼び出す脆弱性対策制御部とを有することを特徴とするプログラム実行装置。
  2.  前記プログラム実行装置は、更に、
     前記脆弱性ライブラリ関数で処理されるパラメータ値における不正値が示される脆弱性情報を記憶する脆弱性情報記憶部を有し、
     前記脆弱性対策制御部は、
     前記脆弱性ライブラリ関数の呼び出しが要求された場合に、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当するか否かを判断し、
     前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当する場合は、前記脆弱性ライブラリ関数が前記不正値を処理しないようにする対策処理を前記脆弱性対策処理部に行わせることを特徴とする請求項1に記載のプログラム実行装置。
  3.  前記脆弱性対策制御部は、
     前記脆弱性ライブラリ関数以外のライブラリ関数の呼び出しが要求された場合は、前記脆弱性対策処理部に対策処理を行わせることなく、対象のライブラリ関数を呼び出し、
     前記脆弱性ライブラリ関数の呼び出しが要求され、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当しない場合は、前記脆弱性対策処理部に対策処理を行わせることなく、前記脆弱性ライブラリ関数を呼び出すことを特徴とする請求項2に記載のプログラム実行装置。
  4.  前記プログラム実行装置は、
     複数の脆弱性ライブラリ関数に対応させて複数の脆弱性対策処理部を有し、
     前記脆弱性対策制御部は、
     前記プログラム実行時に、いずれかの脆弱性ライブラリ関数の呼び出しが要求された場合に、呼び出しの対象の脆弱性ライブラリ関数に対応する脆弱性対策処理部を選択し、
     選択した脆弱性対策処理部に、脆弱性に対する対策処理を行わせることを特徴とする請求項1~3のいずれかに記載のプログラム実行装置。
  5.  前記プログラム実行装置は、
     外部装置から受信した受信データに記述されているパラメータ値を前記脆弱性ライブラリ関数に処理させ、
     前記プログラム実行装置は、更に、
     前記脆弱性ライブラリ関数で処理されるパラメータ値における不正値が示されるとともに、前記脆弱性ライブラリ関数で処理されるパラメータ値の受信データにおける記述位置ごとに、対策処理が示される脆弱性情報を記憶する脆弱性情報記憶部を有し、
     前記脆弱性対策制御部は、
     外部装置からの受信データの受信に伴って前記脆弱性ライブラリ関数の呼び出しが要求され、当該呼び出しによって前記脆弱性ライブラリ関数で処理されるパラメータ値が前記不正値に該当する場合に、
     当該パラメータ値の受信データにおける記述位置を判定し、当該パラメータ値の記述位置に対応する対策処理を前記脆弱性対策処理部に行わせることを特徴とする請求項1~4のいずれかに記載のプログラム実行装置。
  6.  前記脆弱性対策処理部と前記脆弱性対策制御部が、汎用ライブラリに含まれていることを特徴とする請求項1~5のいずれかに記載のプログラム実行装置。
  7.  プログラム及び前記プログラムで用いられるライブラリ関数を解析して、外部入力データに対して脆弱性のあるライブラリ関数を脆弱性ライブラリ関数として抽出するとともに、
     前記プログラムの設定ファイルの値の適否を検査するための試験データ及びスクリプトの少なくともいずれかを、前記設定ファイルの値と、前記脆弱性ライブラリ関数と、外部入力データが利用される前記プログラム内のコードの位置とを用いて生成することを特徴とするプログラム解析装置。
PCT/JP2013/070188 2012-08-01 2013-07-25 プログラム実行装置及びプログラム解析装置 WO2014021190A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP13825757.1A EP2881877A4 (en) 2012-08-01 2013-07-25 PROGRAM EXECUTION DEVICE AND PROGRAM ANALYSIS DEVICE
CN201380039842.1A CN104508672B (zh) 2012-08-01 2013-07-25 程序执行装置以及程序分析装置
US14/417,920 US9507933B2 (en) 2012-08-01 2013-07-25 Program execution apparatus and program analysis apparatus
JP2014528105A JP5863973B2 (ja) 2012-08-01 2013-07-25 プログラム実行装置及びプログラム解析装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012171164 2012-08-01
JP2012-171164 2012-08-01

Publications (1)

Publication Number Publication Date
WO2014021190A1 true WO2014021190A1 (ja) 2014-02-06

Family

ID=50027868

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/070188 WO2014021190A1 (ja) 2012-08-01 2013-07-25 プログラム実行装置及びプログラム解析装置

Country Status (5)

Country Link
US (1) US9507933B2 (ja)
EP (1) EP2881877A4 (ja)
JP (1) JP5863973B2 (ja)
CN (1) CN104508672B (ja)
WO (1) WO2014021190A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019519056A (ja) * 2016-06-16 2019-07-04 ヴァーセック システムズ,インコーポレイテッド コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
US11113407B2 (en) 2014-06-24 2021-09-07 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
US11146572B2 (en) 2013-09-12 2021-10-12 Virsec Systems, Inc. Automated runtime detection of malware
US11599634B1 (en) 2006-02-09 2023-03-07 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9509714B2 (en) * 2014-05-22 2016-11-29 Cabara Software Ltd. Web page and web browser protection against malicious injections
CN105763534A (zh) * 2016-01-21 2016-07-13 厦门市三驾马车网络科技有限公司 一种内容陷阱检测web系统数据库信息泄露的方法
US9792200B2 (en) * 2016-03-01 2017-10-17 Sap Se Assessing vulnerability impact using call graphs
CN107392029B (zh) * 2017-07-28 2020-07-07 中国人民解放军63928部队 一种基于化学抽象机的脆弱性模型构建方法
CN107798236B (zh) * 2017-11-30 2021-05-04 阿里巴巴(中国)有限公司 一种对应用程序安装包实现安全安装的方法和装置
CN113672929A (zh) * 2020-05-14 2021-11-19 阿波罗智联(北京)科技有限公司 漏洞特征获取方法、装置及电子设备
CN115694982B (zh) * 2022-10-30 2023-09-05 济南三泽信息安全测评有限公司 网络攻防虚拟仿真系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047884A (ja) 2005-08-05 2007-02-22 Recruit Co Ltd 情報処理システム
JP2007052625A (ja) 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
JP2007241906A (ja) * 2006-03-11 2007-09-20 Hitachi Software Eng Co Ltd Webアプリケーション脆弱性動的検査方法およびシステム
JP2009301327A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd 脆弱性対策システム、脆弱性対策サーバ、脆弱性対策方法、及びプログラム
JP2011150716A (ja) * 2011-03-07 2011-08-04 Fujitsu Ltd 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101241735B (zh) * 2003-07-07 2012-07-18 罗威所罗生股份有限公司 重放加密的视听内容的方法
JP2006106939A (ja) 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
JPWO2006087780A1 (ja) * 2005-02-17 2008-07-03 富士通株式会社 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法
US20070192344A1 (en) * 2005-12-29 2007-08-16 Microsoft Corporation Threats and countermeasures schema
JP4587976B2 (ja) 2006-02-27 2010-11-24 日立ソフトウエアエンジニアリング株式会社 アプリケーションの脆弱性検査方法および装置
JP4722730B2 (ja) 2006-03-10 2011-07-13 富士通株式会社 セキュリティ管理プログラム、セキュリティ管理装置、およびセキュリティ管理方法
JP2008129714A (ja) 2006-11-17 2008-06-05 Univ Of Tsukuba 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法
US8959647B2 (en) * 2007-02-27 2015-02-17 Microsoft Corporation Runtime security and exception handler protection
US20090030756A1 (en) * 2007-07-27 2009-01-29 Bank Of America Corporation Managing Risk Associated with Various Transactions
US20090276257A1 (en) * 2008-05-01 2009-11-05 Bank Of America Corporation System and Method for Determining and Managing Risk Associated with a Business Relationship Between an Organization and a Third Party Supplier
WO2010069904A1 (en) * 2008-12-16 2010-06-24 F-Secure Oyj Method and apparatus for protecting vulnerable functions
JP5585303B2 (ja) * 2010-08-25 2014-09-10 日本電気株式会社 ライブラリ実行管理システム、ライブラリ実行管理方法およびプログラム
JP2013030017A (ja) * 2011-07-28 2013-02-07 Fujitsu Ltd テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007047884A (ja) 2005-08-05 2007-02-22 Recruit Co Ltd 情報処理システム
JP2007052625A (ja) 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
JP2007241906A (ja) * 2006-03-11 2007-09-20 Hitachi Software Eng Co Ltd Webアプリケーション脆弱性動的検査方法およびシステム
JP2009301327A (ja) * 2008-06-13 2009-12-24 Nec System Technologies Ltd 脆弱性対策システム、脆弱性対策サーバ、脆弱性対策方法、及びプログラム
JP2011150716A (ja) * 2011-03-07 2011-08-04 Fujitsu Ltd 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2881877A4 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599634B1 (en) 2006-02-09 2023-03-07 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US11146572B2 (en) 2013-09-12 2021-10-12 Virsec Systems, Inc. Automated runtime detection of malware
US11113407B2 (en) 2014-06-24 2021-09-07 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
JP2019519056A (ja) * 2016-06-16 2019-07-04 ヴァーセック システムズ,インコーポレイテッド コンピュータアプリケーション内のメモリ破損を修復するためのシステム及び方法
US11409870B2 (en) 2016-06-16 2022-08-09 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application

Also Published As

Publication number Publication date
US9507933B2 (en) 2016-11-29
JPWO2014021190A1 (ja) 2016-07-21
US20150302191A1 (en) 2015-10-22
JP5863973B2 (ja) 2016-02-17
EP2881877A4 (en) 2016-08-03
CN104508672A (zh) 2015-04-08
CN104508672B (zh) 2017-05-17
EP2881877A1 (en) 2015-06-10

Similar Documents

Publication Publication Date Title
JP5863973B2 (ja) プログラム実行装置及びプログラム解析装置
Mitropoulos et al. Defending against web application attacks: Approaches, challenges and implications
Pietraszek et al. Defending against injection attacks through context-sensitive string evaluation
US8266700B2 (en) Secure web application development environment
US9081961B2 (en) System and method for analyzing malicious code using a static analyzer
US10771494B2 (en) Runtime protection of web services
US8635602B2 (en) Verification of information-flow downgraders
US20170316202A1 (en) Rasp for scripting languages
US8931102B2 (en) Testing web applications for file upload vulnerabilities
US20170185784A1 (en) Point-wise protection of application using runtime agent
Akram et al. How to build a vulnerability benchmark to overcome cyber security attacks
Chinprutthiwong et al. Security Study of Service Worker Cross-Site Scripting.
Shalini et al. Prevention of cross-site scripting attacks (xss) on web applications in the client side
Leithner et al. Hydra: Feedback-driven black-box exploitation of injection vulnerabilities
Kim et al. {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing
US20070130620A1 (en) Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
Kim et al. Extending a hand to attackers: browser privilege escalation attacks via extensions
Appelt et al. Assessing the impact of firewalls and database proxies on SQL injection testing
Boudjema et al. Detection of security vulnerabilities in C language applications
Han et al. Medusa Attack: Exploring Security Hazards of {In-App}{QR} Code Scanning
Popa Requirements of a better secure program coding
KR102538664B1 (ko) Excel 계열의 문서에서 수식 기능에 있는 Link의 무해화를 위한 방법 및 장치
Jahanshahi et al. Argus: All your ({{{{{PHP}}}}}) Injection-sinks are belong to us.
JP6498413B2 (ja) 情報処理システム、情報処理装置、制御サーバ、生成サーバ、動作制御方法及び動作制御プログラム
WO2023129992A1 (en) Memory hybrid-dynamic vulnerability assessment

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014528105

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2013825757

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 14417920

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE