WO2022097799A1 - 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} - Google Patents
함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} Download PDFInfo
- Publication number
- WO2022097799A1 WO2022097799A1 PCT/KR2020/015660 KR2020015660W WO2022097799A1 WO 2022097799 A1 WO2022097799 A1 WO 2022097799A1 KR 2020015660 W KR2020015660 W KR 2020015660W WO 2022097799 A1 WO2022097799 A1 WO 2022097799A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- function
- security
- vulnerability
- analysis
- code
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000012038 vulnerability analysis Methods 0.000 title claims abstract description 44
- 230000006870 function Effects 0.000 claims abstract description 194
- 238000004458 analytical method Methods 0.000 claims description 129
- 238000001514 detection method Methods 0.000 claims description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 39
- 230000003068 static effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000008676 import Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000005206 flow analysis Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 241000609666 Tuber aestivum Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Definitions
- It relates to a security vulnerability analysis method and an electronic device including the same, and more particularly, to a security vulnerability analysis method for generating function summary information including a security vulnerability analysis result, and an electronic device including the same.
- Heartbleed a new program security vulnerability called Heartbleed that could leak information was discovered. This has become a big issue in the security market.
- Security vulnerabilities include buffer overflow, integer overflow, memory exception, malformed-input, race condition, symbolic link and Various types are known, such as a null pointer. Due to the above vulnerability, some functions of the input code may be modified without permission for inappropriate purposes, and the system in which the code is executed may cause security problems. In particular, with the recent trend of reusing source code or binary code, the need for a technology for analyzing security vulnerabilities included in the code is increasing.
- Security vulnerability analysis is divided into static analysis, which analyzes the entire code constituting the software, and dynamic analysis, which analyzes the code along the execution path by inputting test cases.
- static analysis a problem of false positive detection as an error may occur even though it is not an error
- dynamic analysis if there is an error in a place other than the execution path of the test case, the problem of false detection may occur.
- An object of the present invention is to provide a security vulnerability analysis method for generating function summary information including vulnerability identification information of an analysis target as a result of static analysis, and an electronic device including the same.
- a security vulnerability analysis method includes the steps of receiving an input of an intermediate language code divided into function units at the binary level, specifying an analysis target, performing a security vulnerability analysis on a specific analysis target, and performing the analysis Displaying the location of the target, generating function summary information by filling in vulnerability identification information regarding whether the displayed security vulnerability is detected or not, and outputting the function summary information and the intermediate language code to a virtual machine can
- the method may further include receiving a list of security weaknesses, wherein the generating of the function summary information may include writing the vulnerability identification information regarding security weaknesses corresponding to the list of security weaknesses from the analysis target.
- the security vulnerability analysis is sequentially performed for each code line, and the security weakness list may include at least one security vulnerability among a stack buffer overflow, an integer overflow, and a prohibited API list. .
- the vulnerability identification information may display a detection result of at least one of the stack buffer overflow, integer overflow, and prohibited API list.
- the vulnerability identification information may be displayed in different formats according to the at least one detection result.
- the function summary information may include a function start address, a function name, and an external function call list analyzed at an EAT (Export Address Table) level.
- the function summary information may include the number of parameters and parameter data types analyzed at the type inference level.
- An electronic device receives an intermediate language code divided into function units at a binary level, specifies an analysis target, and performs a security vulnerability analysis on a specific analysis target, and the analysis
- a function summary information generator that displays the location of a target, generates function summary information by filling in vulnerability identification information regarding whether the displayed security vulnerability is detected or not, and outputs the function summary information and the intermediate language code to a virtual machine may include
- the function summary information generator may receive the security weakness list, and may write the weakness identification information on the security weakness corresponding to the security weakness list from the analysis target.
- the security weakness analyzer sequentially performs the security vulnerability analysis for each code line, and the security weakness list may include at least one security vulnerability among a stack buffer overflow, an integer overflow, and a prohibited API list. .
- the function summary information generator may display a detection result of at least one of the stack buffer overflow, integer overflow, and prohibited API list as the vulnerability identification information.
- the function summary information generator may display the vulnerability identification information in different formats according to the at least one detection result.
- the function summary information may include a function start address, a function name, and an external function call list analyzed at an EAT (Export Address Table) level.
- the function summary information may include the number of parameters and parameter data types analyzed at the type inference level.
- the virtual machine receives the function summary information and the intermediate language code, and the virtual machine uses the static analysis result, in particular, vulnerability identification information of the analysis target function among the intermediate language codes.
- Hybrid analysis that performs efficient dynamic analysis can be performed.
- hybrid analysis can be performed regardless of the language of the input code, and various security vulnerabilities such as use of known dangerous functions, stack buffer overflow, and integer overflow can be checked.
- FIG. 1 is a block diagram illustrating an electronic device according to an exemplary embodiment of the present disclosure.
- FIGS. 2A and 2B are block diagrams for explaining an embodiment in which an input code processor of an electronic device is implemented differently according to an input code according to an embodiment of the present disclosure.
- FIG. 3 is a block diagram illustrating an intermediate language converter according to an exemplary embodiment of the present disclosure.
- FIG. 4 is a block diagram illustrating a security weakness analyzer according to an exemplary embodiment of the present disclosure.
- FIG. 5 is a flowchart illustrating a security vulnerability analysis method according to an exemplary embodiment of the present disclosure.
- FIG. 6 is a code for explaining a security vulnerability analysis result on an intermediate language code according to an exemplary embodiment of the present disclosure.
- FIG. 7 is a code for explaining an intermediate language code and function summary information according to an exemplary embodiment of the present disclosure.
- FIG. 8 is a block diagram illustrating a virtual machine according to an exemplary embodiment of the present disclosure.
- FIG. 9 is a block diagram illustrating components of a security weakness analyzer according to an embodiment of the present disclosure.
- FIG. 10 is a flowchart illustrating a method for an electronic device to analyze a security weakness of an input code using a control flow graph according to an embodiment of the present disclosure.
- 11A to 11D are diagrams for explaining a method of detecting a buffer overflow by an electronic device according to an embodiment of the present disclosure
- 12A to 12C describe an embodiment in which an electronic device of the present disclosure detects a security weakness using an intermediate language conversion and a Banned API List.
- FIGS. 13A and 13B are diagrams for explaining a method of detecting an integer overflow by an electronic device according to an embodiment of the present disclosure
- expressions such as “or” include any and all combinations of words listed together.
- “A or B” may include A, may include B, or may include both A and B.
- Expressions such as “first”, “second”, “first”, or “second” used in various embodiments of the present disclosure may modify various components of various embodiments, but do not limit the components. does not For example, the above expressions do not limit the order and/or importance of corresponding components, and may be used to distinguish one component from another.
- modules are terms for designating a component that performs at least one function or operation, and such component is hardware or software. It may be implemented or implemented as a combination of hardware and software.
- a plurality of "modules”, “units”, “parts”, etc. are integrated into at least one module or chip, except when each needs to be implemented in individual specific hardware, and thus at least one processor. can be implemented as
- FIG. 1 is a block diagram illustrating components of an electronic device 10 according to an embodiment of the present disclosure.
- the electronic device 10 of the present disclosure may be a computing device that analyzes a program so that security vulnerabilities or hacking risk factors of the program can be derived in advance. Specifically, when an input code is input, the electronic device 10 may generate (or convert) an intermediate language code written in an intermediate language corresponding to the input code. The electronic device 10 may analyze a security weakness based on the intermediate language code, and may generate summary information and execute the virtual machine 500 based on the analyzed result.
- the electronic device 10 may include an input code processor 100 , an intermediate language converter 200 , a security weakness analyzer 300 , a function summary information generator 400 , and a virtual machine 500 .
- Components included in the electronic device 10 may be implemented as software, hardware, or firmware, respectively.
- at least one of the components included in the electronic device 10 may be implemented as a software module, stored in a memory (not shown), and executed by a processor (not shown).
- the input code processor 100 may perform preprocessing so that an input code (hereinafter, an input code) can be easily converted into an intermediate language later.
- the input code according to an embodiment of the present disclosure may be source code written in various types of programming languages, or may be binary codes including various types of machine language.
- the electronic device 10 may detect a security vulnerability regardless of the type of the input code.
- the input code according to an embodiment of the present disclosure is a chaincode written in a programming language such as Java, Go, and node.js. under the Hyperledger Fabric framework. (Chain Code).
- the input code may be a smart contract written in a language such as Solidity under an Ethereum-based framework such as Truffle.
- the input code according to another embodiment of the present disclosure may be a virtual machine code for execution in a virtual machine such as an Ethereum Virtual Machine (EVM), but is not limited thereto.
- EVM Ethereum Virtual Machine
- the input code processor 100 of the present disclosure may be implemented differently depending on the type of the input code. This will be further described with reference to FIGS. 2A to 3 .
- the intermediate language converter 200 may convert an input code such as a binary code or a source code into an intermediate language code.
- the intermediate language code may be a code converted into an instruction unit so that the code form is different from the input code, but the meaning of the code is the same.
- the intermediate language converter 200 of the present disclosure may convert an input code having a complex syntax structure into an intermediate language decomposed into simplified instructions. Since the intermediate language according to an embodiment of the present disclosure is converted and decomposed into command units, there is an advantage in that it is easy in control flow analysis, data flow analysis, and the like. In particular, when analyzing the data flow in the security weakness analyzer 300 , when the value of a variable in the stack area changes, how it affects other variables, there is an advantage in that it is easy to track variable values during final collection.
- the input code for analyzing the security vulnerability may be written in various ways from a low-level programming language to a high-level programming language according to software, and may be a machine language of a different format according to various types of compilers.
- the intermediate language converter 200 can convert various types of input codes into one intermediate language, and through this, the electronic device 10 has the effect of easily performing security vulnerability analysis on any input code. .
- the security weakness analyzer 300 may analyze the security weaknesses included in the code based on the converted intermediate language. At this time, there are static analysis and dynamic analysis as techniques for analyzing security vulnerabilities.
- Static analysis is one of the methods of analyzing computer software. It is a method of analyzing and verifying the written program code based on the written program code without actually executing it.
- the security weakness analyzer 300 may generate a data flow graph and a control flow graph for the intermediate language code, and perform static analysis based thereon.
- Dynamic analysis refers to analyzing and verifying a program through actual program execution.
- the security weakness analyzer 300 may analyze a security vulnerability by referring to a Banned API List and/or variable size information used in the API.
- the security weakness analyzer 300 of the present disclosure may detect security weaknesses such as buffer overflow (BOF) and integer overflow (Interger Overflow) through at least one of the above-described methods.
- BOF buffer overflow
- Interger Overflow integer overflow
- the function summary information generator 400 may generate function summary information including functions of the input code and security vulnerability information therefor.
- function summary information includes the name of the function to be analyzed for detecting security vulnerabilities, the starting address of the function, identification information on whether to detect security vulnerabilities, a list of external function calls, the number of parameters, data types of parameters, parameters It can include the location of the function and the function that called the analysis target function.
- the function summary information generator 400 may provide a result for the static analysis by generating the function summary information. That is, in order to achieve the hybrid analysis according to the technical spirit of the present disclosure, the virtual machine 500 may efficiently perform dynamic analysis based on the function summary information provided by the function summary information generator 400 .
- the function summary information generator 400 may write vulnerability identification information regarding whether a security vulnerability is detected in the function summary information, and accordingly, the virtual machine 500 may perform an efficient dynamic analysis.
- the virtual machine 500 executes software by interpreting the intermediate language code, and detects security vulnerabilities by inputting test cases into the executed software (that is, dynamic analysis). )can do.
- the virtual machine 500 may intensively analyze a function to be subjected to dynamic analysis based on the function summary information and syntax including the same.
- FIGS. 2A and 2B are block diagrams for explaining an embodiment in which an input code processor of the electronic device 10 is implemented differently according to an input code according to an embodiment of the present disclosure.
- the input code processor 100 of the present disclosure may be implemented as a disassembler 101 when the input code is a binary code.
- the disassembler 101 of the present disclosure may convert a binary code, which is a target of security vulnerability analysis, into an assembly code.
- the disassembler 101 may include a format analyzer 110 , a PE structure analyzer 120 , and a code converter 130 .
- the format analyzer 110 is a component for analyzing and specifying the format of the binary code input for reversing into the assembly code.
- PE structure analysis unit 120 may analyze the PE structure of the input binary code, Import Directory Table, Import Lookup Table, Hint/Name Tables, Raw calculation from RVA offset, Indirect Function Call, List of each function start address such information can be collected.
- additional meta information for composing executable files such as exe and dll can be analyzed.
- the code conversion unit 130 may convert the input binary code into an assembly code based on the above-described information.
- the input code processor 100 of the present disclosure may be implemented as a front end 102 when the input code is a source code or other VM language.
- the front end 102 of the present disclosure may parse the source code, check for syntax errors, and generate an Abstract Syntax Tree (AST) suitable for a corresponding language characteristic.
- AST Abstract Syntax Tree
- the front end 102 according to an embodiment of the present disclosure may distinguish and display each variable included in the source code.
- the front end 102 may be configured according to the type of the source code.
- the front end 102 may be implemented as a solidity front-end, but It is not limited to this.
- the input code is a chain code written in a programming language such as Java, Go, or node.js. under the Hyperledger Fabric framework.
- a programming language such as Java, Go, or node.js. under the Hyperledger Fabric framework.
- FIG. 3 is a block diagram for explaining the intermediate language converter 200 according to an exemplary embodiment of the present disclosure.
- the intermediate language converter 200 may include a code parser 210 , a code segment module 211 , an analysis module 220 and an intermediate language code generator 230 ,
- the analysis module 220 may include a variable analysis unit 221 , a data type inference unit 222 , a stack/heap analysis unit 223 , and a system function/library collection unit 224 .
- the code parser 210 of the present disclosure decomposes an instruction sentence included in an input code (assembly code in FIG. 3) into constituent components, and determines a sentence structure by analyzing a hierarchical relationship between them.
- the code parser 210 may generate an abstract syntax tree (AST) using the parsed assembly code.
- the code parser 210 may check the assembly code for syntax errors.
- FIG. 3 illustrates an embodiment in which the input code is a binary code, and the code converted from the input code processor 100 to the assembly code is transferred to the intermediate language converter 200, but as described above, the present invention is not limited thereto. .
- the language transmitted to the intermediate language converter 200 may be an AST (Abstract Syntax Tree) for the source code, not the assembly code.
- the code parser 210 may be included in the aforementioned front end 102 .
- the code segment module 211 of the present disclosure may generate a code segment in response to an input code and an AST.
- the segment refers to a logical unit managed by allocation and deallocation by dividing the code into a certain size (usually 64 kb) in order to efficiently operate the main memory device.
- the analysis module 220 of the present disclosure may include a variable analysis unit 221 , a data type inference unit 222 , a stack/heap analysis unit 223 , and a system/library collection unit 224 .
- the intermediate language code generator 230 may generate an intermediate language code based on the information INFO analyzed by the analysis module 220 .
- the intermediate language code generator 230 may generate an intermediate language code based on a data type symbol table defined as an intermediate language.
- the data type symbol table may be a data structure defined so that each identifier of a program (source code or binary code) matches information related to the type appearance in the intermediate language code generator 230 in language conversion.
- FIG. 4 is a block diagram illustrating a security weakness analyzer 300 according to an exemplary embodiment of the present disclosure.
- the security weakness analyzer 300 may include a data flow generator 310 , a control flow generator 320 , and a weakness analysis module 330 .
- the data flow generator 310 may generate a data flow graph based on the input intermediate language code.
- a data flow graph is a graph that indicates all paths where a specific value moves and changes through a parameter while the intermediate language code is being executed.
- the control flow generator 320 may generate a control flow graph based on the input intermediate language code.
- the control flow graph refers to a graph in which all paths that can be traversed while the intermediate language code is being executed are marked when a basic block of code is a single node.
- the weakness analysis module 330 may perform security vulnerability analysis based on the data flow graph and the control flow graph.
- the weakness analysis module 330 may perform security vulnerability analysis using a banned API list and a control flow graph.
- a function eg, strcpy
- the banned API list may be, for example, banned API List of JAVA 1.4 or Microsoft Security Develop Lifecycle (SDL) banned APIs, but is not limited thereto, and may include various types of banned API lists.
- the weakness analysis module 330 may perform security vulnerability analysis using the control flow graph, the first weak function API list, and the variable size information. In this case, the weakness analysis module 330 may detect a stack buffer overflow.
- the weakness analysis module 330 may detect an integer overflow based on the control flow graph. In this case, the weakness analysis module 330 may detect an integer overflow based on a code pattern regarding whether a value of a variable in which overflow may occur decreases or increases.
- the weakness analysis module 330 may perform the static analysis as described above.
- Static analysis is the opposite of dynamic analysis, and refers to a method of analyzing the meaning of target code in an environment where software is not executed. In the case of static analysis, false positives can occur, meaning that the software is not in a viable environment.
- dynamic analysis using the virtual machine 500 security vulnerabilities are analyzed in an environment in which software is executable. In this case, false negatives may occur.
- the function summary information generator 400 may generate function summary information. there is.
- the function summary information generator 400 may generate function summary information by entrusting vulnerability identification information regarding whether or not a security vulnerability has been detected using the information on security vulnerabilities (INFO) received from the security weakness analyzer 300 . A detailed description will be given later.
- FIG. 5 is a flowchart illustrating a security vulnerability analysis method according to an exemplary embodiment of the present disclosure.
- the security weakness analyzer 300 may receive an intermediate language code divided into function units at the binary level.
- the intermediate language code received by the security weakness analyzer 300 may be divided into units of each of a plurality of functions at the level of the binary code and converted into an intermediate language code.
- the security weakness analyzer 300 may specify the analysis target.
- the security weakness analyzer 300 may specify at least one of a plurality of functions included in the received intermediate language code as an analysis target.
- the security weakness analyzer 300 may perform security vulnerability analysis on a specific analysis target to display the location of the analysis target and generate information on security vulnerabilities (INFO).
- the function summary information generator 400 may generate the function summary information by writing vulnerability identification information regarding whether the displayed analysis target has detected a security vulnerability based on the information on the security vulnerability (INFO).
- the function summary information generator 400 may receive a list of security weaknesses.
- the security weakness list may include use of a function known to be dangerous (eg, use of a function included in the prohibited API list), a stack buffer overflow, and an integer overflow.
- the function summary information generator 400 may display the location of the analysis target corresponding to the security weakness list.
- the location may include a start address of a function, but is not limited thereto.
- the function summary information generator 400 may write vulnerability identification information regarding whether or not a security vulnerability of the analysis target is detected, in which the location of the analysis target is displayed. For example, vulnerability identification information that a function with a name of testMain whose start address is indicated by ac0 is exposed to use of a known dangerous function and a stack buffer overflow can be written.
- the function summary information generator 400 may output the function summary information and the intermediate language code to the virtual machine 500 .
- the virtual machine 500 efficiently performs dynamic analysis on a part where a vulnerability may occur by using the vulnerability identification information and its location included in the function summary information while executing the intermediate language code (ie, dynamic analysis). can do.
- FIG. 6 is a code for explaining a security vulnerability analysis result on an intermediate language code according to an exemplary embodiment of the present disclosure.
- the analysis result CD may include intermediate language codes for performing security vulnerability analysis and a code WK indicating security vulnerabilities.
- the electronic device 10 may identify the strcpy function call corresponding to Label00252 among the intermediate language codes as a security vulnerability.
- the electronic device 10 may express the identified security vulnerability in a different format.
- the electronic device 10 may display the identified security vulnerability by applying a highlight and/or bold. Specifically, the electronic device 10 may display the vulnerability identification information in different formats according to a detection result of at least one of a stack buffer overflow, an integer overflow, and a forbidden API list.
- the electronic device 10 highlights the first analysis target when the first analysis target corresponds to the use of a function known to be dangerous, and as another example, the second analysis target is the use and stack of the function known to be dangerous. In case of buffer overflow, the second analysis target may be indicated by highlighting and bolding.
- the electronic device 10 may output an analysis result CD indicating a security vulnerability.
- ILC 7 is a code for explaining an intermediate language code (ILC) and function summary information (AFI) according to an exemplary embodiment of the present disclosure.
- ICI intermediate language code
- AFI function summary information
- the intermediate language code includes a function known to be dangerous called strcpy in the testMain function, and the test2 function may include the testMain function, and a buffer overflow may occur by the test2 function.
- the electronic device 10 may generate function summary information (AFI) for the intermediate language code (ILC), which will be described later.
- the electronic device 10 may record a function start address and a name functionName of a function to be analyzed in the function summary information AFI. For example, the electronic device 10 may express "ac0" as a function start address, and record that the name of the corresponding function is "testMain".
- the function start address and name may be analyzed at the EAT (Export Address Table) level.
- the electronic device 10 may record vulnerability identification information (weaknessList) of the analysis target function.
- the electronic device 10 may record a buffer overflow (“BOF”) and a function known to be dangerous (“BAC”) as vulnerability identification information.
- the electronic device 10 may record the above vulnerability identification information based on the received security weakness list.
- the security weakness list may include the use of known dangerous functions, stack buffer overflows, and integer overflows, and therefore, the electronic device 10 uses a function known to be dangerous as vulnerability identification information, stack At least one of a buffer overflow and an integer overflow may be recorded as vulnerability identification information.
- the electronic device 10 may record an external function call list (functionCallList) called by the analysis target function.
- functionCallList called by the analysis target function.
- the electronic device 10 may record that the testMain function calls strcpy from an external library.
- the list of external function calls can be analyzed at IAT (Import Address Table) and EAT level.
- the electronic device 10 may record the number of parameters (paramNum) of the analysis target function, the data types of the parameters (paramTypes), and the positions of the parameters (param). For example, the electronic device 10 records that the data types of the parameters of the analysis target function are "array&class” and "int", the number of parameters is two, and the positions of the parameters are "ebp-0x14" and " ebp-0x20" can be recorded.
- the number of parameters is analyzed at the variable and parameter type inference level and the data flow analysis level, and the data type of the parameter can be analyzed at the variable and parameter type inference level.
- the electronic device 10 may record a function (caller) that calls the analysis target function.
- the electronic device 10 may record information that the test2 function calls testMain, which is an analysis target function.
- the function summary information may be written adjacent to the intermediate language code (ILC).
- ILC intermediate language code
- vulnerability identification information for the analysis target may be written adjacent to the analysis target included in the intermediate language code (ILC).
- FIG. 8 is a block diagram illustrating a virtual machine 500 according to an exemplary embodiment of the present disclosure.
- the virtual machine 500 may include an interpreter 510 , a dynamic analyzer 520 , and a behavior monitor 530 .
- the interpreter 510 may interpret the intermediate language code converted by the intermediate language converter 200 to execute the software.
- the dynamic analyzer 520 may detect a security vulnerability by inputting test cases into the executed software.
- the virtual machine 500 may receive the function summary information (AFI) and the intermediate language code (ILC).
- the interpreter 510 executes software based on the intermediate language code (ILC), and the dynamic analyzer 520 may perform dynamic analysis based on the function summary information (AFI) indicating the static analysis result. That is, the virtual machine 500 may perform hybrid analysis that efficiently performs dynamic analysis using the static analysis result, particularly, vulnerability identification information of the analysis target function.
- the virtual machine 500 may output the performed hybrid analysis result data DO.
- the virtual machine 500 may be driven in various runtime environments, and the runtime environment means a state of a virtual machine that provides software services for programs. For example, it may belong to the operating system itself, or may refer to software operating in the operating system.
- the type of runtime environment may include, for example, a Java runtime environment (JRE), Windows, or Linux, but is not limited thereto.
- FIG. 9 is a block diagram illustrating components of a security weakness analyzer according to an embodiment of the present disclosure.
- the security weakness analyzer 300 of the present disclosure may include a control flow generator 310 , a data flow generator 320 , and a weakness analysis module 330 .
- the control flow generator 310 may generate a control flow graph based on the input intermediate language code.
- the control flow graph refers to a graph that indicates all paths that can be traversed while the virtual machine code is running.
- the data flow generator 320 may generate a data flow graph based on the input intermediate language code.
- a data flow graph refers to a graph that indicates all paths in which a specific value moves and changes through a parameter while the virtual machine code is being executed.
- the weakness analysis module 330 is a configuration for performing security vulnerability analysis based on the data flow graph and the control flow graph.
- the weakness analysis module 330 may detect a buffer overflow through an intermediate language-based control flow graph and data tracking.
- the weakness analysis module 330 may perform security vulnerability analysis using an intermediate language code and a banned API list. The weakness analysis module 330 compares the function included in the intermediate language code with the prohibited API list, and identifies the function related to the prohibited API list as a security vulnerability.
- the banned API list may be obtained based on Microsoft Security Develop Lifecycle (SDL) banned APIs including, for example, about 150 APIs such as strcpy, strcat, sprintfW, but is not limited thereto, and various types of banned API list may include
- SDL Microsoft Security Develop Lifecycle
- the weakness analysis module 330 may perform security vulnerability analysis using the prohibited API list and variable size information.
- the weakness analysis module 300 may detect a stack buffer overflow.
- the weakness analysis module 330 may detect an integer overflow based on the control flow graph. In this case, the weakness analysis module 330 may detect an integer overflow based on a code pattern regarding whether a value of a variable in which overflow may occur decreases or increases.
- the weakness analysis module 330 may perform the static analysis as described above.
- Static analysis is the opposite of dynamic analysis, and refers to a method of analyzing the meaning of target code in an environment where software is not executed. In the case of static analysis, false positives can occur, meaning that the software is not in a viable environment.
- dynamic analysis using the virtual machine 500 security vulnerabilities are analyzed in an environment in which software is executable. In this case, false negatives may occur.
- the function summary information generator 400 may generate function summary information. there is.
- the function summary information generator 400 may generate function summary information by entrusting identification information regarding whether or not a security vulnerability has been detected using the information on security vulnerabilities (INFO) received from the security weakness analyzer 300 .
- INFO security vulnerabilities
- FIG. 10 is a flowchart illustrating a method for an electronic device to analyze a security weakness of an input code using a control flow graph according to an embodiment of the present disclosure.
- the electronic device 10 of the present disclosure may acquire a control flow graph (CFG) for identifying a path through which the intermediate language is executed ( S1010 ).
- the control flow graph may be generated by the control flow generator 310 based on the intermediate language code converted by the intermediate language converter 200 .
- the converted intermediate language code may include inferred variable type information.
- the electronic device 10 of the present disclosure may acquire a data flow graph (DFG) for the intermediate language ( S1020 ).
- the data flow graph may be a flow graph generated to identify a variable for performing a function corresponding to a specific node of the control flow graph and perform a comparison between the variables.
- the electronic device 10 of the present disclosure may determine whether a security vulnerability exists in the code (or program) to be analyzed based on the data flow graph (S1030).
- the electronic device 10 may detect a security vulnerability, particularly a buffer overflow, through analysis of an IL Code Data Flow Graph based on an intermediate language code.
- a buffer overflow is a phenomenon in which an unexpected error occurs due to an overflow of a buffer.
- the program invades other areas beyond the normal part of the stack area used by the program.
- the electronic device 10 of the present disclosure may track data corresponding to a specific variable along a data flow graph, and may compare and determine data values corresponding to the variable in the data tracking process.
- the electronic device 10 of the present disclosure determines whether a security vulnerability (eg, buffer overflow) exists through data flow graph analysis based on the data type (or data type) of the variable inferred in the process of converting to an intermediate language. can judge This will be further described with reference to FIGS. 11A to 11C .
- a security vulnerability eg, buffer overflow
- 11A to 11D are diagrams for explaining a method of detecting, by an electronic device, a stack overflow and/or a buffer overflow according to an embodiment of the present disclosure
- FIG. 11A is an example of a program that is a target of security weakness analysis
- FIG. 11B is a control flow graph corresponding to the program
- 11C is an example of a control flow graph generated by the control flow generator 310 based on the intermediate language
- FIG. 11D is an example of a data flow graph generated by the data flow generator 310 based on the control flow graph.
- the electronic device 10 of the present disclosure may generate a control flow graph corresponding to the program as shown in FIG. 11B .
- 11A and 11B illustrate an embodiment in which a source code is input, the electronic device 10 may also receive a binary code. In this case, the electronic device 10 may disassemble the binary code to convert it into an assembly code, and may generate a control flow graph for the disassembled code.
- the electronic device 10 may convert the input source code (or the converted assembly code) into an intermediate language code.
- the intermediate language code may include data type inference information for a variable.
- the electronic device 10 may obtain an intermediate language-based control flow graph (IL CFG) as shown in FIG. 11C based on the converted assembly code and the control flow graph of FIG. 11B .
- IL CFG intermediate language-based control flow graph
- the IL CFG may include a path in which a sample function is executed.
- the main functions (M1 to M5) declare a char variable with a size of 256, and include a loop that inserts a specific value into the declared variable whenever i is increased by 1.
- Variables declared in the main function (M1 to M5) can be used in the sample function (SA). That is, the main functions M1 to M5 may call the sample function SA.
- the variable declared in the main function (M1 to M5) has a larger memory size than the size limited in the sample function (SA), and eventually a buffer overflow occurs because a variable with a large size is used in the sample function (SA).
- SA sample function
- the electronic device 10 determines that the size of the variable to be used is determined by the sample function SA. You can check if it is of an acceptable size (ie, the limit size).
- the sample function SA called by the main functions M1 to M5 in steps S1110 and S1120 is first identified.
- the limit size of the variable allocated in the sample function SA may be estimated.
- the sizes of variables declared in the main functions M1 to M5 may be estimated.
- the limit size (eg, 16) of the variable allocated in the sample function SA is compared with the size (eg, 256) of the variable declared in the main functions M1 to M5, and the main function M1 to If the size of the variable declared in M5) is larger, it can be detected that a buffer overflow occurs (S1170). Conversely, if the size of the variable declared in the main functions M1 to M5 is smaller than or equal to the limit size, it may be detected that the buffer overflow does not occur ( S1180 ).
- the electronic device 10 identifies a variable causing a buffer overflow through the control flow graph and tracks the value of the variable through the data flow graph to determine whether the buffer overflow occurs.
- the electronic device 10 of the present disclosure may determine the variable size based on data type information and data size information inferred during intermediate language conversion, and may detect an overflow through this.
- 12A to 12C describe an embodiment in which an electronic device of the present disclosure detects a security weakness using an intermediate language conversion and a Banned API List.
- FIG. 12A is a flowchart illustrating a method of analyzing, by an electronic device, a security weakness of an input code using a prohibited API list according to an embodiment of the present disclosure.
- the electronic device 10 of the present disclosure may analyze the structure of the input code and reconfigure the system function and library ( S1210 ).
- the electronic device 10 may analyze the PE structure of the input binary code, and may include Import Directory Table, Import Lookup Table, and Hint/Name Tables. , Raw calculation from RVA offset, Indirect Function Call, List of each function start address can be collected. In addition, additional meta information for composing executable files such as exe and dll can be analyzed. The electronic device 10 may collect data for a system call function and a library call function and reconfigure them.
- the electronic device 10 when the code input to the electronic device 10 is the source code, the electronic device 10 analyzes information described in the input source code and additional meta information to perform a system call function (System Call function). ) and information about library call functions can be collected.
- System Call function System Call function
- the electronic device 10 of the present disclosure may obtain a prohibited API list (S1220).
- the banned API list may be obtained based on Microsoft Security Develop Lifecycle (SDL) banned APIs including about 150 APIs such as strcpy, strcat, sprintfW, etc. as shown in FIG. 12b, but is not limited thereto, and various types of banned API list may include
- SDL Microsoft Security Develop Lifecycle
- the electronic device 10 of the present disclosure may compare the system call function and library call function information reconstructed in the intermediate language conversion process with the forbidden API list (S1230).
- the electronic device 10 may compare the function information collected based on the information described in the source code and additional meta-information with the prohibited API list. there is.
- the electronic device 10 may identify a function corresponding to the forbidden API, and accordingly determine a function corresponding to the security vulnerability ( S1240 ).
- the electronic device 10 may convert an input input code (a binary code in the example of the drawing) into an intermediate language.
- the electronic device 10 may convert the identification information for the collected or reconfigured system call function and library call function information to be included in the intermediate language.
- the electronic device 10 may compare the system call function and library call function information with the prohibited API list. In this case, if the strcpy function is included in duplicate, the corresponding strcpy function can be detected as a security vulnerability.
- the electronic device 10 analyzes a security weakness by combining the security weakness analysis method using the prohibited API list and the security weakness analysis method using the CFG in FIGS.
- the electronic device 10 of the present disclosure may determine whether a security vulnerability has occurred by additionally analyzing the variable inference information and data flow graph analysis used with respect to a function using a prohibited API.
- FIGS. 13A and 13B are diagrams for explaining a method of detecting an integer overflow by an electronic device according to an embodiment of the present disclosure
- the electronic device 10 of the present disclosure may obtain a control flow graph corresponding to the input code in order to detect an integer overflow of the input code (S1310).
- the control flow graph may be generated based on the converted intermediate language code.
- the electronic device 10 may store a control flow graph of a code in which an integer overflow occurs. 13A and 13B together, FIG. 13B is an example of a function for generating an integer overflow.
- the code shown in FIG. 13B may be intentionally added to the program by a hacker, or a code having a similar pattern may be unintentionally added to the program.
- variable c is set to have a value obtained by adding 1 to the maximum value that can be of the short type.
- Negative numbers store absolute values in 2's complement. So, if you add 1 to -1, it becomes 0 naturally (on the contrary, if you add 1 to 2147483647, it becomes -2147483648). That is, the code causes an integer overflow no matter what values of a and b are input through two if statements.
- the electronic device 10 may pre-store a control flow graph for a function in which an integer overflow occurs, as shown in FIG. 13B .
- the electronic device 10 may compare the control flow graph of the input code with the pattern of the control flow graph in which overflow occurs (S1320).
- the electronic device 10 determines the similarity through pattern matching between a control flow graph generated based on inference information about a data type during intermediate language conversion and a control flow graph in which the overflow occurs. That is, through the pattern comparison, the electronic device 10 may detect a code pattern in which a value of a variable with a possibility of integer overflow in the intermediate language decreases or increases.
- the electronic device 10 may detect a code pattern in which information loss of an integer variable may occur in the input code ( S1330 ), and may detect an integer overflow vulnerability based thereon ( S1340 ).
- various embodiments of the present disclosure described above may be performed through an embedded server provided in the electronic device or an external server of the electronic device.
- the various embodiments described above are a recording medium (readable by a computer or a similar device) using software, hardware, or a combination thereof. It may be implemented as software including instructions stored in a computer readable recording medium). In some cases, the embodiments described herein may be implemented by the processor itself. According to the software implementation, embodiments such as procedures and functions described in this specification may be implemented as separate software modules. Each of the software modules may perform one or more functions and operations described herein.
- a computer or a similar device is a device capable of calling a stored command from a storage medium and operating according to the called command, and may include the device according to the disclosed embodiments.
- the processor may directly or use other components under the control of the processor to perform a function corresponding to the instruction. Instructions may include code generated or executed by a compiler or interpreter.
- the device-readable recording medium may be provided in the form of a non-transitory computer readable recording medium.
- 'non-transitory' means that the storage medium does not include a signal and is tangible, and does not distinguish that data is semi-permanently or temporarily stored in the storage medium.
- the non-transitory computer-readable medium refers to a medium that stores data semi-permanently, rather than a medium that stores data for a short moment, such as a register, cache, memory, etc., and can be read by a device.
- Specific examples of the non-transitory computer-readable medium may include a CD, DVD, hard disk, Blu-ray disk, USB, memory card, ROM, and the like.
- non-transitory computer-readable recording medium may include the security vulnerability analysis method of steps S110 to S150 described in conjunction with FIG. 5 and various methods described in the present disclosure.
- the security vulnerability analysis method includes receiving an intermediate language code divided into function units at a binary level (S110), an analysis target A step of specifying (S120), performing a security vulnerability analysis on a specific analysis target to display the location of the analysis target, and generating vulnerability identification information (S130), the above related to whether the displayed security vulnerability of the analysis target is detected It may include generating the function summary information by writing the vulnerability identification information (S140) and outputting the function summary information and the intermediate language code to the virtual machine (S150).
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
본 개시의 기술적 사상에 따른 보안 취약점 분석 방법은 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받는 단계, 분석 대상을 특정하는 단계, 특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 상기 분석 대상의 위치를 표시하고, 표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하는 단계 및 상기 함수 요약 정보 및 중간언어 코드를 가상 기계로 출력하는 단계를 포함한다.
Description
보안 취약점 분석 방법 및 이를 포함하는 전자 장치에 관한 것으로 상세하게는 보안 취약점 분석 결과를 포함하는 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치에 관한 것이다.
지난 2014년, 정보가 유출될 수 있는 Heartbleed라는 프로그램 보안 취약점이 새롭게 발견되었다. 이는 보안 시장에서 커다란 이슈가 되었다. 보안 취약점은, 이외에도 버퍼 오버플로우(buffer overflow), 정수 오버플로우(integer overflow), 메모리 익셉션(memory exception), 기형 입력(malformed-input), 레이스 컨디션(race condition), 기호 링크(symbolic link) 및 널 포인터(null pointer)등 다양한 유형이 알려져 있다. 상기 취약점으로 인하여 입력되는 코드의 일부 기능이 부적절한 목적으로 무단 수정될 수도 있고, 코드가 실행되는 시스템이 보안상 문제를 일으킬 수 있다. 특히나, 최근에는 소스 코드나 바이너리 코드를 재사용하려는 트렌드에 따라, 코드에 포함된 보안 취약점을 분석하는 기술의 필요성이 더욱 증대되고 있다.
한편, 2009년 이후 이더리움, 이오스와 같은 블록체인 2.0 시대가 열리면서 DApp 개발자의 개발능력 하향평준화된 점, 블록체인 특성상 원장에 코드가 올라가는 순간 보안약점을 수정할 수 없다는 점을 고려하면, 블록체인 분야의 DApp 보안 이슈는 일반 소프트웨어의 보안 이슈보다 심각할 수 있다.
보안 취약점 분석은 소프트웨어를 구성하는 코드 전체를 분석하는 정적 분석과 테스트 케이스를 입력하여 실행 경로를 따라 코드를 분석하는 동적 분석으로 나뉜다. 그러나, 정적 분석은 오류가 아님에도 오류로 탐지하는 오탐의 문제가 발생할 수 있으며, 동적 분석은 테스트 케이스의 실행 경로가 아닌 곳에 오류가 있는 경우 탐지를 하지 못하는 미탐의 문제가 발생할 수 있다.
본 발명은 상술한 필요성에 따른 것으로, 정적 분석에 따른 결과로써 분석 대상의 취약점 식별 정보를 포함한 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치를 제공하는 것을 목적으로 한다.
그러나 이러한 과제는 예시적인 것으로, 이에 의해 본 발명의 범위가 한정되는 것은 아니다.
본 개시의 예시적 실시예에 따른 보안 취약점 분석 방법은 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받는 단계, 분석 대상을 특정하는 단계, 특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 상기 분석 대상의 위치를 표시하고, 표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하는 단계 및 상기 함수 요약 정보 및 중간언어 코드를 가상 기계로 출력하는 단계를 포함할 수 있다.
또한, 보안 약점 리스트를 수신하는 단계를 더 포함하며, 상기 함수 요약 정보를 생성하는 단계는, 상기 분석 대상으로부터 상기 보안 약점 리스트에 대응되는 보안 약점에 관한 상기 취약점 식별 정보를 기입할 수 있다.
또한, 상기 생성하는 단계는, 코드 라인 별 순차적으로 상기 보안 취약점 분석을 수행하며, 상기 보안 약점 리스트는, 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 보안 취약점을 포함할 수 있다.
한편, 상기 취약점 식별 정보는, 상기 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 탐지 결과를 표시할 수 있다.
또한, 상기 취약점 식별 정보는, 상기 적어도 하나의 탐지 결과에 따라 서로 다른 서식으로 표시될 수 있다.
한편, 상기 함수 요약 정보는, EAT(Export Address Table) 레벨에서 분석되는 함수 시작 주소, 함수 이름 및 외부 함수 호출 목록을 포함할 수 있다.
또한, 상기 함수 요약 정보는, 타입 추론 레벨에서 분석되는 매개변수 수 및 매개변수 자료형을 포함할 수 있다.
본 개시의 예시적 실시예에 따른 전자 장치는 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받고, 분석 대상을 특정하며, 특정한 분석 대상에 대해 보안 취약점 분석을 수행하는 보안약점 분석기 및 상기 분석 대상의 위치를 표시하고, 표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하며, 상기 함수 요약 정보 및 상기 중간언어 코드를 가상 기계로 출력하는 함수 요약정보 생성기를 포함할 수 있다.
또한, 상기 함수 요약정보 생성기는, 보안 약점 리스트를 수신하며, 상기 분석 대상으로부터 상기 보안 약점 리스트에 대응되는 보안 약점에 관한 상기 취약점 식별 정보를 기입할 수 있다.
또한, 상기 보안약점 분석기는, 코드 라인 별 순차적으로 상기 보안 취약점 분석을 수행하며, 상기 보안 약점 리스트는, 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 보안 취약점을 포함할 수 있다.
또한, 상기 함수 요약정보 생성기는, 상기 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 탐지 결과를 상기 취약점 식별 정보로써 표시할 수 있다.
또한, 상기 함수 요약정보 생성기는, 상기 적어도 하나의 탐지 결과에 따라 서로 다른 서식으로 상기 취약점 식별 정보를 표시할 수 있다.
한편, 상기 함수 요약 정보는, EAT(Export Address Table) 레벨에서 분석되는 함수 시작 주소, 함수 이름 및 외부 함수 호출 목록을 포함할 수 있다.
또한, 상기 함수 요약 정보는, 타입 추론 레벨에서 분석되는 매개변수 수 및 매개변수 자료형을 포함할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점은 이하의 발명을 실시하기 위한 구체적인 내용, 청구범위 및 도면으로부터 명확해질 것이다.
상기한 바와 같이 이루어진 본 발명의 일 실시예에 따르면, 가상 기계는 함수 요약 정보 및 중간언어 코드를 수신하여, 가상 기계는 정적분석 결과, 특히 중간언어 코드 중 분석 대상 함수의 취약점 식별 정보를 이용하여 효율적인 동적분석을 수행하는 하이브리드 분석을 수행할 수 있다. 또한, 입력 코드의 언어에 무관하게 하이브리드 분석을 수행할 수 있으며, 위험하다고 알려진 함수의 사용, 스택 버퍼 오버플로우 및 정수 오버플로우 등 다양한 보안 취약점을 검사할 수 있다.
물론 이러한 효과에 의해 본 발명의 범위가 한정되는 것은 아니다.
도 1은 본 개시의 예시적 실시예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 2a 및 도 2b는 본 개시의 일 실시예에 따른 전자 장치의 입력코드 처리기가 입력 코드에 따라 상이하게 구현되는 실시예를 설명하기 위한 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 중간언어 변환기를 설명하기 위한 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 보안약점 분석기를 설명하기 위한 블록도이다.
도 5는 본 개시의 예시적 실시예에 따른 보안 취약점 분석 방법을 설명하기 위한 흐름도이다.
도 6은 본 개시의 예시적 실시예에 따른 중간언어 코드 상의 보안 취약점 분석 결과를 설명하기 위한 코드이다.
도 7은 본 개시의 예시적 실시예에 따른 중간언어 코드 및 함수 요약 정보를 설명하기 위한 코드이다.
도 8은 본 개시의 예시적 실시예에 따른 가상 기계를 설명하기 위한 블록도이다.
도 9는 본 개시의 일 실시예에 따른 보안 약점 분석기의 구성요소를 설명하기 위한 블록도이다.
도 10는 본 개시의 일 실시예에 따른 전자 장치가 제어 흐름 그래프(Control Flow Graph)를 이용하여 입력 코드의 보안약점 분석 방법을 설명하기 위한 흐름도이다.
도 11a 내지 도 11d는 본 개시의 일 실시예에 따른 전자 장치가 버퍼 오퍼플로우를 검출하는 방법을 설명하기 위한 도면이다.
도 12a 내지 12c는 본 개시의 전자 장치가 중간언어 변환 및 금지 API 리스트(Banned API List)를 이용하여 보안 약점을 탐지하는 실시예를 설명한다.
도 13a 및 도 13b는 본 개시의 일 실시예에 따른 전자 장치가 정수 오버플로우를 탐지하는 방법을 설명하기 위한 도면이다.
이하, 본 개시의 다양한 실시예가 첨부된 도면과 연관되어 기재된다. 본 개시의 다양한 실시예는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나 이는 본 개시의 다양한 실시예를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 다양한 실시예의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다.
본 개시의 다양한 실시예에서, "포함하다." 또는 "가지다." 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시의 다양한 실시예에서 "또는" 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한다. 예를 들어, "A 또는 B"는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.
본 개시의 다양한 실시예에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않으며, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
본 개시의 실시 예에서 "모듈", "유닛", "부(part)" 등과 같은 용어는 적어도 하나의 기능이나 동작을 수행하는 구성요소를 지칭하기 위한 용어이며, 이러한 구성요소는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈", "유닛", "부(part)" 등은 각각이 개별적인 특정한 하드웨어로 구현될 필요가 있는 경우를 제외하고는, 적어도 하나의 모듈이나 칩으로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.
일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미가 있는 것으로 해석되어야 하며, 본 개시의 다양한 실시예에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하에서, 첨부된 도면을 이용하여 본 발명의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 개시의 일 실시예에 따른 전자 장치(10)의 구성요소를 설명하기 위한 블록도이다.
본 개시의 전자 장치(10)는 프로그램의 보안 취약점이나 해킹 위험 요소를 사전에 도출할 수 있도록, 프로그램을 분석하는 컴퓨팅 장치일 수 있다. 구체적으로 전자 장치(10)는 입력 코드가 입력되면, 해당 입력 코드에 대응하는 중간언어로 작성된 중간언어 코드를 생성(또는 변환)할 수 있다. 전자 장치(10)는 중간언어 코드를 기초로 보안약점을 분석할 수 있고, 분석된 결과를 기초로 요약정보 생성 및 가상 기계(500)를 실행할 수 있다.
도 1을 참조하면, 전자 장치(10)는 입력코드 처리기(100), 중간언어 변환기(200), 보안약점 분석기(300), 함수 요약정보 생성기(400) 및 가상 기계(500)를 포함할 수 있다. 전자 장치(10)에 포함된 구성은 각각 소프트웨어, 하드웨어 또는 펌웨어로써 구현될 수 있다. 일 예로, 전자 장치(10)에 포함된 구성들 중 적어도 하나는, 소프트웨어 모듈로써 구현되어 메모리(미도시)에 저장될 수 있으며 프로세서(미도시)에 의해 실행될 수 있다.
본 개시의 선택적 실시예에 따른 입력코드 처리기(100)는 입력되는 코드(이하, 입력 코드)를 추후 용이하게 중간언어로 변환할 수 있도록 선행 처리(Preprocessing)를 수행할 수 있다.
이때, 본 개시의 일 실시예에 따른 입력 코드는 다양한 유형의 프로그래밍 언어로 작성된 소스 코드일 수도 있고, 다양한 유형의 기계어를 포함하는 바이너리 코드일 수도 있다.
즉, 본 개시의 예시적 실시예에 따른 입력코드 처리기(100)에 의해 전자 장치(10)는 입력 코드의 종류에 무관하게 보안 취약점을 탐지할 수 있다.
또한, 본 개시의 일 실시예에 따른 입력코드는 하이퍼레저 패브릭(Hyperledger Fabric) 프레임워크 하에 자바(Java), 고(Go), 노드제이에스(node.js.)와 같은 프로그래밍 언어로 작성된 체인코드(Chain Code)일 수 있다. 또한, 입력코드는 트러플(truffle)과 같은 이더리움 기반 프레임워크 하에 솔리디티(Solidity)와 같은 언어로 작성된 스마트 컨트랙트일 수 있다. 본 개시의 또 다른 실시예에 따른 입력 코드는 EVM(Ethereum Virtual Machine)과 같은 가상 머신에서의 실행을 위한 가상기계 코드일 수 있으며 이에 한정되지 않는다.
본 개시의 입력코드 처리기(100)는 입력 코드의 유형에 따라 상이하게 구현될 수 있다. 이에 대하여는 도 2a 내지 도 3을 통해 추가로 설명하기로 한다.
본 개시의 선택적 실시예에 따른 중간언어 변환기(200)는 바이너리 코드 또는 소스 코드와 같은 입력 코드를 중간언어 코드로 변환할 수 있다. 이때, 중간언어 코드는 코드 형태는 입력 코드와 상이하나, 코드의 의미는 동일하도록 명령어(Instruction) 단위로 변환된 코드일 수 있다.
본 개시의 중간언어 변환기(200)는 복잡한 구문구조의 입력 코드를 단순화된 명령어(Instruction)로 분해된 중간언어로 변환할 수 있다. 본 개시의 일 실시예에 따른 중간언어는 명령어 단위로 분해되어 변환된 것이기 때문에, 제어 흐름 분석(Control Flow Analysis), 데이터 흐름 분석(Data Flow Analysis) 등에 있어서 수월하다는 장점이 있다. 특히, 보안약점 분석기(300)에서의 데이터 흐름 분석시, 스택 영역에서 변수의 값이 바뀔 때, 다른 변수에 어떤 영향을 주는지, 최종 취합 시 변수 값 트래킹 용이하다는 장점이 있다.
상술한 바와 같이, 보안 취약점을 분석할 입력 코드는 소프트웨어에 따라 저급 프로그래밍 언어부터 고급 프로그래밍 언어까지 다양한 방식으로 작성된 것일 수 있고, 다양한 유형의 컴파일러에 따라 상이한 포맷의 기계어일 수 있다. 중간언어 변환기(200)는 다양한 유형의 입력 코드를 하나의 중간언어로 변환할 수 있고, 이를 통해 전자 장치(10)는 어떠한 입력 코드에 대하여도 보안 취약점 분석을 용이하게 수행할 수 있다는 효과가 있다.
본 개시의 선택적 실시예에 따른 보안약점 분석기(300)는 변환된 중간언어를 기반으로 코드에 포함된 보안 취약점을 분석할 수 있다. 이때, 보안 취약점을 분석하기 위한 기법으로 정적 분석 및 동적 분석이 있다.
정적 분석(Static Analysis)은 컴퓨터 소프트웨어를 분석 하는 방법 중의 하나로, 작성된 프로그램을 실제로 실행하지 않고, 작성된 프로그램 코드를 기반으로 분석, 검증하는 방법이다. 본 개시의 일 실시예에 따른 보안약점 분석기(300)는 중간언어 코드에 대한 데이터 흐름 그래프, 제어 흐름 그래프를 생성하고, 이를 기초로 정적분석을 수행할 수 있다.
동적 분석(Dynamic Analysis)은 실제 프로그램의 실행을 통해 프로그램을 분석하여 검증하는 것을 의미한다.
본 개시의 또 다른 실시예에 따른 보안약점 분석기(300)는 금지 API 리스트(Banned API List)를 참조 및/또는 API에 사용되는 변수 크기 정보를 참조함으로써 보안취약점을 분석할 수 있다. 본 개시의 보안약점 분석기(300)는 상술한 방법 중 적어도 하나를 통해, 버퍼 오버플로우(Buffer Overflow; BOF), 정수 오버플로우(Interger Overflow) 등의 보안취약점을 탐지할 수 있다.
본 개시의 선택적 실시예에 따른 함수 요약정보 생성기(400)는 입력 코드의 함수들 및 그에 대한 보안 취약점 정보를 포함하는 함수 요약정보를 생성할 수 있다. 예컨대, 함수 요약정보는 보안 취약점을 탐지하기 위한 분석 대상의 함수의 명칭, 함수의 시작주소, 보안 취약점 탐지 여부에 관한 식별 정보, 외부 함수 호출 목록, 매개변수의 수, 매개변수의 자료형, 매개변수의 위치 및 분석 대상 함수를 호출한 함수를 포함할 수 있다.
함수 요약정보 생성기(400)는 함수 요약정보를 생성함으로써 정적 분석에 대한 결과를 제공할 수 있다. 즉, 본 개시의 기술적 사상에 따른 하이브리드 분석을 달성하기 위하여, 함수 요약정보 생성기(400)가 제공한 함수 요약정보를 기반으로 가상 기계(500)는 효율적으로 동적 분석을 수행할 수 있다. 특히, 함수 요약정보 생성기(400)는 함수 요약정보에 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입할 수 있으며, 이에 따라 가상 기계(500)는 효율적인 동적 분석을 수행할 수 있다.
본 개시의 일 실시예에 따른 가상 기계(500)는 중간언어 코드를 해석하여 소프트웨어를 실행하며, 또한, 실행된 소프트웨어에 테스트 케이스(test case)들을 입력함으로써 보안 취약점을 감지(다시 말해, 동적 분석)할 수 있다. 이 때, 가상 기계(500)는 함수 요약정보를 기반으로 동적 분석을 수행하여야 할 함수 및 이를 포함하는 구문들에 대해 집중적으로 분석을 수행할 수 있다.
도 2a 및 도 2b는 본 개시의 일 실시예에 따른 전자 장치(10)의 입력코드 처리기가 입력 코드에 따라 상이하게 구현되는 실시예를 설명하기 위한 블록도이다.
도 2a를 참조하면, 본 개시의 입력코드 처리기(100)는 입력 코드가 바이너리 코드인 경우, 디스어셈블러(Disassembler)(101)로 구현될 수 있다. 본 개시의 디스어셈블러(101)는 보안 취약점 분석의 대상이 되는 바이너리 코드를 어셈블리 코드로 변환할 수 있다.
디스어셈블러(101)는 포맷 분석부(110), PE 구조 분석부(120) 및 코드 변환부(130)를 포함할 수 있다.
포맷 분석부(110)는 어셈블리 코드로 리버싱(Reversing)하기 위해 입력된 바이너리 코드의 포맷을 분석하고 특정하기 위한 구성이다.
PE 구조 분석부(120)는 입력된 바이너리 코드의 PE 구조를 분석할 수 있고, Import Directory Table, Import Lookup Table, Hint/Name Tables, Raw calculation from RVA offset, Indirect Function Call, List of each function start address와 같은 정보를 수집할 수 있다. 또한 exe, dll과 같은 실행파일을 구성하기 위한 부가적인 메타정보들을 분석할 수 있다.
코드 변환부(130)는 상술한 정보들을 기초로 입력된 바이너리 코드를 어셈블리 코드로 변환할 수 있다.
도 2b를 참조하면, 본 개시의 입력코드 처리기(100)는 입력 코드가 소스 코드 또는 기타 VM 언어인 경우, 프론트 엔드(Frontend)(102)로 구현될 수 있다.
본 개시의 프론트 엔드(102)는 소스코드를 파싱하여 구문(syntax) 에러를 체크하고 해당 언어 특성에 맞는 AST (Abstract Syntax Tree)를 생성할 수 있다. 또한, 본 개시의 일 실시예에 따른 프론트 엔드(102)는 소스코드에 포함된 각 변수들을 구별하여 표시할 수 있다.
프론트 엔드(102)는 소스 코드의 종류에 따라 구성될 수 있다. 예컨대, 소스 코드가 탈중앙화 어플리케이션(Decentralized Application)을 구성하며, 이더리움 솔리디티(Ethereum Solidity)에 의해 작성된 경우, 프론트 엔드(102)는 솔리디티 프론트 엔드(solidity front-end)로 구현될 수 있으나 이에 한정하지 않는다.
또 다른 예로, 입력코드가 하이퍼레저 패브릭(Hyperledger Fabric) 프레임워크 하에 자바(Java), 고(Go), 노드제이에스(node.js.)와 같은 프로그래밍 언어로 작성된 체인코드(Chain Code)인 경우, 각각의 프로그래밍 언어에 대응하는 프론트 엔드로 구현될 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 중간언어 변환기(200)를 설명하기 위한 블록도이다.
도 3을 참조하면, 중간언어 변환기(200)는 코드 파서(code parser)(210), 코드 세그먼트 모듈(211), 분석 모듈(220) 및 중간언어 코드 생성부(230)를 포함할 수 있으며, 분석 모듈(220)은 변수 분석부(221), 데이터 타입 추론부(222), 스택/힙 분석부(223) 및 시스템 함수/라이브러리 수집부(224)를 포함할 수 있다.
본 개시의 코드 파서(code parser)(210)는 입력되는 코드(도 3에서는 어셈블리 코드)에 포함된 명령어(Instruction) 문장을 구성 성분별로 분해하고, 그들 사이의 위계 관계를 분석하여 문장 구조를 결정할 수 있다.
코드 파서(210)는 파싱된 어셈블리 코드를 이용하여 추상 구문 트리(abstract syntax tree)(AST)를 생성할 수 있다. 코드 파서(210)는 어셈블리 코드의 구문 오류(syntax error)를 검사할 수 있다.
한편, 도 3은 입력코드가 바이너리 코드로써, 입력코드 처리기(100)에서 어셈블리 코드로 변환된 코드가 중간언어 변환기(200)로 전달되는 실시예에 대하여 도시하였으나, 상술한 바와 같이 이에 한정되지 않는다.
입력코드가 소스 코드인 실시예의 경우, 중간언어 변환기(200)로 전달되는 언어는 어셈블리 코드가 아닌 소스 코드에 대한 AST(Abstract Syntax Tree)일 수 있다. 이 경우, 코드 파서(210)는 전술한 프론트 엔드(102)에 포함될 수 있다.
본 개시의 코드 세그먼트 모듈(211)은 입력되는 코드 및 AST에 대응하여 코드 세그먼트(Segment)를 생성할 수 있다. 이때, 세그먼트는 주기억장치를 효율적으로 운영하리 위해서, 코드를 일정한 크기(대개는 64kb크기)로 나누어서 할당과 할당 해제로 관리되는 논리적 단위를 의미한다.
본 개시의 분석 모듈(220)은 변수 분석부(221), 데이터 타입 추론부(222), 스택/힙 분석부(223) 및 시스템/라이브러리 수집부(224)를 포함할 수 있다.
중간언어 코드 생성부(230)는 분석 모듈(220)이 분석한 정보(INFO)를 기반으로 중간언어 코드를 생성할 수 있다. 이에 더하여, 중간언어 코드 생성부(230)는 중간언어로써 정의된 자료형 심볼 테이블(Type Symbol Table)을 기초로, 중간언어 코드를 생성할 수 있다. 이때, 자료형 심볼 테이블은 언어 변환에 있어서, 프로그램(소스 코드 또는 바이너리 코드)의 각 식별자가 중간언어 코드 생성부(230)에서의 타입 외형과 관련된 정보에 매칭되도록 기정의된 데이터 구조일 수 있다.
본 개시의 분석 모듈(220) 및 중간언어 코드 생성부(230)가 중간언어 코드를 생성하는 실시예에 대하여 도 4를 함께 참조하여 추가적으로 설명한다.
도 4는 본 개시의 예시적 실시예에 따른 보안약점 분석기(300)를 설명하기 위한 블록도이다.
도 4를 참조하면, 보안약점 분석기(300)는 데이터 흐름 생성기(310), 제어 흐름 생성기(320) 및 약점 분석 모듈(330)을 포함할 수 있다.
데이터 흐름 생성기(310)는 입력된 중간언어 코드를 기반으로 데이터 흐름 그래프(data flow graph)를 생성할 수 있다. 데이터 흐름 그래프란, 중간언어 코드가 실행되는 도중 특정 값이 매개 변수를 통해 이동하고 변하는 모든 경로를 표기한 그래프를 말한다.
제어 흐름 생성기(320)는 입력된 중간언어 코드를 기반으로 제어 흐름 그래프(control flow graph)를 생성할 수 있다. 제어 흐름 그래프는 코드의 기본 블록(basic block)을 하나의 노드라고 할 때, 중간언어 코드가 실행되는 도중 횡단할 수 있는 모든 경로를 표기한 그래프를 말한다.
약점 분석 모듈(330)은 데이터 흐름 그래프 및 제어 흐름 그래프를 기반으로 보안 취약점 분석을 수행할 수 있다.
일 예로, 약점 분석 모듈(330)은 금지 API 리스트(banned API list) 및 제어 흐름 그래프를 이용하여 보안 취약점 분석을 수행할 수 있다. 이 경우, 금지 API 리스트에 포함된 함수(예컨대, strcpy)를 보안 취약점으로 식별할 수 있다. 한편, 금지 API 리스트는 예를 들어 JAVA 1.4의 banned API List 또는 Microsoft Security Develop Lifecycle(SDL) banned APIs일 수 있으나 이에 제한되지 않으며 다양한 종류의 금지 API 리스트를 포함할 수 있다.
다른 예로, 약점 분석 모듈(330)은 제어 흐름 그래프, 제1 취약 함수 API 리스트 및 변수 크기 정보를 이용하여 보안 취약점 분석을 수행할 수 있다. 이 경우, 약점 분석 모듈(330)은 스택 버퍼 오버 플로우(stack buffer overflow)를 감지해낼 수 있다.
또 다른 예로, 약점 분석 모듈(330)은 제어 흐름 그래프를 기반으로, 정수 오버 플로우(integer overflow)를 감지해낼 수 있다. 이 경우, 약점 분석 모듈(330)은 오버플로우가 일어날 수 있는 변수의 값이 감소 또는 증가하는지에 관한 코드의 패턴을 기반으로 정수 오버플로우를 감지할 수 있다.
약점 분석 모듈(330)은 상술한 바와 같이 정적 분석을 수행할 수 있다. 정적 분석이라 함은 동적 분석의 반대되는 개념으로, 소프트웨어가 실행되지 않는 환경에서 대상 코드의 의미를 분석하는 방법을 말한다. 정적 분석의 경우, 소프트웨어가 실행가능한 환경이 아닌 것을 의미하는 오탐(false positive)이 발생할 수 있다. 한편, 가상 기계(500)를 이용한 동적 분석의 경우, 소프트웨어가 실행가능한 환경에서 보안 취약점을 분석하게 되는데 이 경우, 미탐(false negative)이 발생할 수 있다. 이를 보완하기 위해, 상기 약점 분석 모듈(330)의 정적 분석 결과를 이용하여 가상 기계(500)가 동적 분석을 수행하는 하이브리드 분석을 위해, 함수 요약정보 생성기(400)는 함수 요약정보를 생성할 수 있다.
함수 요약정보 생성기(400)는 보안약점 분석기(300)로부터 수신한 보안 취약점에 관한 정보(INFO)를 이용하여 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기임함으로써 함수 요약 정보를 생성할 수 있다. 상세한 설명은 후술하기로 한다.
도 5는 본 개시의 예시적 실시예에 따른 보안 취약점 분석 방법을 설명하기 위한 흐름도이다.
단계 S110에서, 보안약점 분석기(300)는 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받을 수 있다. 보안약점 분석기(300)가 입력받은 중간언어 코드는, 바이너리 코드의 레벨에서 복수의 함수들 각각의 단위로 분할되어 중간언어 코드로 변환된 것일 수 있다.
단계 S120에서, 보안약점 분석기(300)는 분석 대상을 특정할 수 있다. 보안약점 분석기(300)는 입력받은 중간언어 코드에 포함된 복수의 함수들 중 적어도 하나를 분석 대상으로써 특정할 수 있다.
단계 S130에서, 보안약점 분석기(300)는 특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 분석 대상의 위치를 표시하고 보안 취약점에 관한 정보(INFO)를 생성할 수 있다.
단계 S140에서, 함수 요약정보 생성기(400)는 보안 취약점에 관한 정보(INFO)에 기반하여, 표시된 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입함으로써 함수 요약 정보를 생성할 수 있다.
본 개시의 예시적 실시예에 따르면, 함수 요약정보 생성기(400)는 보안 약점 리스트를 수신할 수 있다. 예컨대, 보안 약점 리스트란 위험하다고 알려진 함수의 사용(예컨대, 금지 API 리스트에 포함된 함수의 사용), 스택 버퍼 오버플로우 및 정수 오버플로우를 포함할 수 있다. 함수 요약정보 생성기(400)는 보안 약점 리스트에 해당하는 분석 대상의 위치를 표시할 수 있다. 여기서 위치란 함수의 시작 주소를 포함할 수 있으나, 이에 제한되지는 않는다. 또한, 함수 요약정보 생성기(400)는 분석 대상의 위치가 표시된 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입할 수 있다. 예컨대, 함수의 시작 주소가 ac0로 표시된 testMain의 이름을 가진 함수가 위험하다고 알려진 함수의 사용 및 스택 버퍼 오버플로우에 노출되어 있다는 취약점 식별 정보를 기입할 수 있다.
단계 S150에서, 함수 요약정보 생성기(400)는 함수 요약 정보 및 중간언어 코드를 가상 기계(500)로 출력할 수 있다. 가상 기계(500)는 중간언어 코드를 실행(즉, 동적분석)을 수행하면서 함수 요약 정보에 포함된 취약점 식별 정보 및 그 위치를 이용하여, 취약점이 발생할 수 있는 부분에 대해 효율적으로 동적분석을 수행할 수 있다.
도 6은 본 개시의 예시적 실시예에 따른 중간언어 코드 상의 보안 취약점 분석 결과를 설명하기 위한 코드이다.
도 6을 참조하면, 분석 결과(CD)는 보안 취약점 분석을 수행하는 중간언어 코드들 및 보안 취약점이 표시된 코드(WK)를 포함할 수 있다. 전자 장치(10)는 중간언어 코드들 중 Label00252에 해당하는 strcpy 함수 호출을 보안 취약점으로 식별할 수 있다. 전자 장치(10)는 식별된 보안 취약점에 대해 다른 서식으로 표현할 수 있다.
전자 장치(10)는 식별된 보안 취약점에 대해 하이라이트 및/또는 볼드(bold)를 적용하여 표시할 수 있다. 구체적으로, 전자 장치(10)는 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 탐지 결과에 따라 서로 다른 서식으로 취약점 식별 정보를 표시할 수 있다.
일 예로, 전자 장치(10)는 제1 분석 대상이 위험하다고 알려진 함수의 사용에 해당하는 경우 제1 분석 대상을 하이라이트 표시를 하며, 다른 예로, 제2 분석 대상이 위험하다고 알려진 함수의 사용이자 스택 버퍼 오버플로우에 해당하는 경우 하이라이트 및 볼드로 제2 분석 대상을 표시할 수 있다.
이 후, 전자 장치(10)는 보안 취약점을 표시한 분석 결과(CD)를 출력할 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 중간언어 코드(ILC) 및 함수 요약 정보(AFI)를 설명하기 위한 코드이다. 도시된 중간언어 코드(ILC)는 설명의 편의상 C언어로써 설명하기로 한다.
도 7을 참조하면, 중간언어 코드(ILC)는 testMain 함수에 strcpy라는 위험하다고 알려진 함수를 포함하며, test2 함수는 상기 testMain 함수를 포함할 수 있으며, test2 함수에 의해 버퍼 오버플로우가 발생할 수 있다. 전자 장치(10)는 중간언어 코드(ILC)에 대해 후술하는 바와 같은 함수 요약 정보(AFI)를 생성할 수 있다.
전자 장치(10)는 분석 대상이 되는 함수의 함수 시작주소(address) 및 명칭(functionName)을 함수 요약 정보(AFI)에 기록할 수 있다. 예컨대, 전자 장치(10)는 함수 시작주소로써 "ac0"를 표현할 수 있으며, 해당 함수의 이름은 "testMain"임을 기록할 수 있다. 여기서, 함수 시작주소 및 명칭은 EAT(Export Address Table) 수준에서 분석될 수 있다.
전자 장치(10)는 분석 대상 함수의 취약점 식별 정보(weaknessList)를 기록할 수 있다. 예컨대, 전자 장치(10)는 취약점 식별 정보로써 버퍼 오버플로우("BOF") 및 위험하다고 알려진 함수("BAC")를 기록할 수 있다. 전자 장치(10)는 수신된 보안 약점 리스트를 기반으로 위와 같은 취약점 식별 정보를 기록할 수 있다. 전술한 바와 같이, 보안 약점 리스트는 위험하다고 알려진 함수의 사용, 스택 버퍼 오버플로우 및 정수 오버플로우를 포함할 수 있으며, 따라서, 전자 장치(10)는 취약점 식별 정보로써 위험하다고 알려진 함수의 사용, 스택 버퍼 오버플로우 및 정수 오버플로우 중 적어도 하나를 취약점 식별 정보로써 기록할 수 있다.
전자 장치(10)는 분석 대상 함수가 호출한 외부 함수 호출 목록(functionCallList)을 기록할 수 있다. 예컨대, 전자 장치(10)는 testMain 함수가 외부 라이브러리에서 strcpy를 호출하였음을 기록할 수 있다. 외부 함수 호출 목록은 IAT(Import Address Table) 및 EAT 수준에서 분석될 수 있다.
전자 장치(10)는 분석 대상 함수의 매개변수의 수(paramNum), 매개변수의 자료형(paramTypes) 및 매개변수의 위치(param)를 기록할 수 있다. 예컨대, 전자 장치(10)는 분석 대상 함수의 매개변수의 자료형이 "array&class" 및 "int"임을 기록하고, 매개변수들의 수는 2개이며, 매개변수들의 위치가 각각 "ebp-0x14" 및 "ebp-0x20"에 해당함을 기록할 수 있다. 여기서, 매개변수의 수는 변수 및 파라미터 타입 추론 수준과 데이터 흐름 분석 수준에서 분석되며, 매개변수의 자료형은 변수 및 파라미터 타입 추론 수준에서 분석될 수 있다.
전자 장치(10)는 분석 대상 함수를 호출한 함수(caller)를 기록할 수 있다. 예컨대, 전자 장치(10)는 test2 함수가 분석 대상 함수인 testMain를 호출하였다는 정보를 기록할 수 있다.
본 개시의 예시적 실시예에 따르면, 함수 요약 정보(AFI)는 중간언어 코드(ILC)에 인접하여 작성될 수 있다. 예컨대, 중간언어 코드(ILC)에 포함된 분석 대상에 인접하도록, 해당 분석 대상에 대한 취약점 식별 정보가 기입될 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 가상 기계(500)를 설명하기 위한 블록도이다.
가상 기계(500)는 인터프리터(interpreter)(510), 동적 분석기(520) 및 행동 모니터(530)를 포함할 수 있다.
인터프리터(510)는 중간언어 변환기(200)에 의해 변환된 중간언어 코드를 해석하여 소프트웨어를 실행할 수 있다. 동적 분석기(520)는 실행된 소프트웨어에 테스트 케이스(test case)들을 입력함으로써 보안 취약점을 감지할 수 있다.
본 개시의 예시적 실시예에 따르면, 가상 기계(500)는 함수 요약 정보(AFI) 및 중간언어 코드(ILC)를 수신할 수 있다. 인터프리터(510)는 중간언어 코드(ILC)를 기반으로 소프트웨어를 실행시키며 동적 분석기(520)는 정적분석 결과를 나타내는 함수 요약 정보(AFI)를 기반으로 동적분석을 수행할 수 있다. 즉, 가상 기계(500)는 정적분석 결과, 특히 분석 대상 함수의 취약점 식별 정보를 이용하여 효율적인 동적분석을 수행하는 하이브리드 분석을 수행할 수 있다. 가상 기계(500)는 수행된 하이브리드 분석된 결과 데이터(DO)를 출력할 수 있다.
가상 기계(500)는 다양한 런타임 환경에서 구동될 수 있으며, 런타임 환경은 프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태를 의미한다. 예컨대, 운영체제 자체에 속하는 경우도 있으며, 운영체제에서 작동하는 소프트웨어를 의미할 수도 있다. 런타임 환경의 종류로써, 예컨대, 자바 런타임 환경(JRE), 윈도우(windows) 또는 리눅스(linux)를 포함할 수 있으나 이에 제한되지는 않는다.
도 9는 본 개시의 일 실시예에 따른 보안 약점 분석기의 구성요소를 설명하기 위한 블록도이다.
도 9를 참조하면, 본 개시의 보안약점 분석기(300)는 제어 흐름 생성기(310), 데이터 흐름 생성기(320) 및 약점 분석 모듈(330)을 포함할 수 있다.
제어 흐름 생성기(310)는 입력된 중간언어 코드를 기반으로 제어 흐름 그래프(control flow graph)를 생성할 수 있다. 제어 흐름 그래프는 코드의 기본 블록(basic block)을 하나의 노드라고 할 때, 가상 기계 코드가 실행되는 도중 횡단할 수 있는 모든 경로를 표기한 그래프를 의미한다.
데이터 흐름 생성기(320)는 입력된 중간언어 코드를 기반으로 데이터 흐름 그래프(data flow graph)를 생성할 수 있다. 데이터 흐름 그래프란, 가상 기계 코드가 실행되는 도중 특정 값이 매개 변수를 통해 이동하고 변하는 모든 경로를 표기한 그래프를 의미한다.
약점 분석 모듈(330)은 데이터 흐름 그래프 및 제어 흐름 그래프를 기반으로 보안 취약점 분석을 수행하기 위한 구성이다.
일 예로, 약점 분석 모듈(330)은 중간 언어 기반 제어 흐름 그래프 및 데이터 트래킹을 통해 버퍼 오버플로우를 탐지할 수 있다.
또 다른 예로, 약점 분석 모듈(330)은 중간언어 코드 및 금지 API 리스트(banned API list)를 이용하여 보안 취약점 분석을 수행할 수 있다. 약점 분석 모듈(330)은 중간언어 코드에 포함된 함수와 금지 API 리스트를 비교하여, 금지 API 리스트와 관련된 함수를 보안 취약점으로 식별할 수 있다.
한편, 금지 API 리스트는 예를 들어 strcpy, strcat, sprintfW 등 약 150개의 API를 포함하는 Microsoft Security Develop Lifecycle(SDL) banned APIs를 기초로 획득된 것일 수 있으나 이에 제한되지 않으며, 다양한 종류의 금지 API 리스트를 포함할 수 있다.
또 다른 예로, 약점 분석 모듈(330)은 금지 API 리스트 및 변수 크기 정보를 이용하여 보안 취약점 분석을 수행할 수 있다. 특히, 약점 분석 모듈(300)은 스택 버퍼 오버 플로우(stack buffer overflow)를 감지해낼 수 있다.
또 다른 예로, 약점 분석 모듈(330)은 제어 흐름 그래프를 기반으로, 정수 오버 플로우(integer overflow)를 감지해낼 수 있다. 이 경우, 약점 분석 모듈(330)은 오버플로우가 일어날 수 있는 변수의 값이 감소 또는 증가하는지에 관한 코드의 패턴을 기반으로 정수 오버플로우를 감지할 수 있다.
약점 분석 모듈(330)은 상술한 바와 같이 정적 분석을 수행할 수 있다. 정적 분석이라 함은 동적 분석의 반대되는 개념으로, 소프트웨어가 실행되지 않는 환경에서 대상 코드의 의미를 분석하는 방법을 말한다. 정적 분석의 경우, 소프트웨어가 실행가능한 환경이 아닌 것을 의미하는 오탐(false positive)이 발생할 수 있다. 한편, 가상 기계(500)를 이용한 동적 분석의 경우, 소프트웨어가 실행가능한 환경에서 보안 취약점을 분석하게 되는데 이 경우, 미탐(false negative)이 발생할 수 있다. 이를 보완하기 위해, 상기 약점 분석 모듈(330)의 정적 분석 결과를 이용하여 가상 기계(500)가 동적 분석을 수행하는 하이브리드 분석을 위해, 함수 요약정보 생성기(400)는 함수 요약정보를 생성할 수 있다.
함수 요약정보 생성기(400)는 보안약점 분석기(300)로부터 수신한 보안 취약점에 관한 정보(INFO)를 이용하여 보안 취약점 탐지 여부에 관한 식별 정보를 기임함으로써 함수 요약 정보를 생성할 수 있다.
도 10는 본 개시의 일 실시예에 따른 전자 장치가 제어 흐름 그래프(Control Flow Graph)를 이용하여 입력 코드의 보안약점 분석 방법을 설명하기 위한 흐름도이다.
본 개시의 전자 장치(10)는 중간언어가 실행되는 경로를 파악하기 위한 제어 흐름 그래프(CFG; Control Flow Graph)를 획득할 수 있다(S1010). 이때, 제어 흐름 그래프는 제어 흐름 생성기(310)가 중간언어 변환기(200)에서 변환된 중간언어 코드를 기반으로 생성한 것일 수 있다. 이때, 변환된 중간언어 코드에는 추론된 변수 타입 정보가 포함되어 있을 수 있다.
본 개시의 전자 장치(10)는 중간언어에 대한 데이터 흐름 그래프(DFG; Data Flow Graph)를 획득할 수 있다(S1020). 이때, 데이터 흐름 그래프는 제어 흐름 그래프의 특정 노드에 해당하는 기능이 수행되기 위한 변수를 식별하고, 변수 간의 비교를 수행하도록 생성한 흐름 그래프일 수 있다.
본 개시의 전자 장치(10)는 상기 데이터 흐름 그래프를 기초로 분석 대상이 되는 코드(또는 프로그램)에 대한 보안취약점이 존재하는지 여부를 판단할 수 있다(S1030).
일예로, 전자 장치(10)는 중간언어 코드 기반 데이터 흐름 그래프(IL Code Data Flow Grapgh)에 대한 분석을 통해 보안취약점, 특히 버퍼 오버플로우(Buffer overflow)를 탐지할 수 있다. 버퍼 오버플로우(Buffer Overflow: BOF)는 버퍼에 오버플로우가 발생하여 예상치 못한 오류가 발생하는 현상이다. 용이한 입출력을 위해 스택(stack)이라는 영역을 사용하는 경우, 버퍼 오버플로우가 발생하면, 프로그램이 사용하는 스택 영역의 정상적인 부분을 넘어서 다른 곳까지 침범을 하게 된다.
본 개시의 전자 장치(10)는 데이터 흐름 그래프를 따라 특정 변수에 대응하는 데이터를 트래킹할 수 있고, 데이터 트래킹 과정에서 변수에 대응하는 데이터 값의 비교 판단을 수행할 수 있다.
즉, 본 개시의 전자 장치(10)는 중간언어로 변환하는 과정에서 추론한 변수의 데이터 타입(또는 자료형)을 기초로, 데이터 흐름 그래프 분석을 통해 보안취약점(예로, 버퍼 오버플로우)이 존재하는지 판단할 수 있다. 이에 대하여, 도 11a 내지 도 11c를 통해 추가적으로 설명한다.
도 11a 내지 도 11d는 본 개시의 일 실시예에 따른 전자 장치가 스택 오버 플로우 및/또는 버퍼 오퍼플로우를 검출하는 방법을 설명하기 위한 도면이다.
구체적으로, 도 11a는 보안약점 분석의 대상이 되는 프로그램의 예시이고, 도 11b는 프로그램에 대응하는 제어 흐름 그래프이다. 도 11c는 제어 흐름 생성기(310)가 중간언어를 기반으로 생성한 제어 흐름 그래프예시이고, 도 11d는 데이터 흐름 생성기(310)가 제어 흐름 그래프를 기반으로 생성한 데이터 흐름 그래프 예시이다.
본 개시의 전자 장치(10)는 도 11a와 같은 프로그램이 입력되면, 도 11b와 같이 프로그램에 대응하는 제어 흐름 그래프를 생성할 수 있다. 도 11a 및 도 11b에서는 소스 코드가 입력된 실시예에 대하여 도시하였으나, 전자 장치(10)는 바이너리 코드를 입력 받을 수도 있다. 이 경우 전자 장치(10)는 바이너리 코드에 대하여 디스어셈블링을 수행하여 어셈블리 코드로 변환할 수 있고, 이에 대한 제어 흐름 그래프를 생성할 수 있다.
본 개시의 일 실시에에 따른 전자 장치(10)는 입력된 소스 코드(또는 변환된 어셈블리 코드)를 중간언어 코드로 변환할 수 있다. 상술한 바와 같이, 중간언어 코드는 변수에 대한 데이터 타입 추론 정보를 포함하고 있을 수 있다.
전자 장치(10)는 변환된 어셈블리 코드 및 도 11b의 제어 흐름 그래프를 기초로, 도 11c와 같은 중간 언어 기반 제어 흐름 그래프(IL CFG; Intermediate Language Control Flow Graph)를 획득할 수 있다.
도 11c를 참조하면, IL CFG는 샘플 함수가 실행되는 경로를 포함할 수 있다. 예를 들어, 메인 함수(M1~M5)는 크기가 256인 char형 변수를 선언하며, i를 1씩 증가시킬 때 마다 선언된 변수에 특정 값을 삽입하는 반복문을 포함한다. 메인 함수(M1~M5)에서 선언된 변수는 샘플 함수(SA)에서 사용될 수 있다. 즉, 메인 함수(M1~M5)는 샘플 함수(SA)를 호출할 수 있다.
이 때, 메인 함수(M1~M5)에서 선언된 변수는 샘플 함수(SA)에서 제한된 크기보다 큰 메모리 사이즈를 갖게되고, 결국 샘플 함수(SA)에서 사이즈가 큰 변수가 사용됨으로써 버퍼 오버플로우가 발생할 수 있다. 이를 방지하기 위하여, 도 11d에서는 샘플 함수(SA)가 실행되기 전 단계 즉, 메인 함수(M1~M5)의 변수를 사용할 때, 전자 장치(10)는 사용될 변수의 크기가 샘플 함수(SA)가 수용 가능한 사이즈(즉, 한계 사이즈)의 크기인지 검사할 수 있다.
도 11d를 참조하면, 단계 S1110 및 S1120에서 메인 함수(M1~M5)가 호출하는 샘플 함수(SA)를 먼저 식별한다. 단계 S1130에서는 샘플 함수(SA) 내에 할당된 변수의 한계 사이즈를 추정할 수 있다. 이후, 단계 S1140 및 S1150에서는 메인 함수(M1~M5)에서 선언된 변수의 사이즈를 추정할 수 있다.
이 후, S1160에서 샘플 함수(SA) 내에서 할당된 변수의 한계 사이즈(예컨대 16)와 메인 함수(M1~M5)에서 선언된 변수의 사이즈(예컨대, 256)을 비교하여, 메인 함수(M1~M5)에서 선언된 변수의 사이즈가 더 크다면 버퍼 오버플로우가 발생(S1170)함을 검출할 수 있다. 반대로, 한계 사이즈보다 메인 함수(M1~M5)에서 선언된 변수의 사이즈가 작거나 같다면 버퍼 오버플로우가 발생하지 않음(S1180)을 검출할 수 있다.
상술한 실시예들에 따르면, 전자 장치(10)는 제어 흐름 그래프를 통해 버퍼 오버플로우를 발생시키는 변수를 식별하고, 데이터 흐름 그래프를 통해 해당 변수 값을 트래킹함으로써, 버퍼 오버플로우 발생 여부를 판단할 수 있다.
변수 값을 트래킹하여 스택 오버플로우 및/또는 버퍼 오버플로우를 판단하기 위해서는, 흐름도상 변수의 사이즈를 판단하는 과정이 필요하다. 본 개시의 전자 장치(10)는 중간언어 변환 시 추론된 데이터 타입 정보 및 데이터 사이즈 정보를 기초로 상기 변수 사이즈를 판단할 수 있고, 이를 통해 오버플로우를 탐지할 수 있다.
도 12a 내지 12c는 본 개시의 전자 장치가 중간언어 변환 및 금지 API 리스트(Banned API List)를 이용하여 보안 약점을 탐지하는 실시예를 설명한다.
특히, 도 12a는 본 개시의 일 실시예에 따른 전자 장치가 금지 API 리스트를 이용하여 입력 코드의 보안약점 분석 방법을 설명하기 위한 흐름도이다.
본 개시의 전자 장치(10)는 입력된 코드에 대한 구조 분석 및 시스템 함수 및 라이브러리를 재구성할 수 있다(S1210).
예를 들어, 전자 장치(10)에 입력된 코드가 바이너리 코드인 경우, 전자 장치(10)는 입력된 바이너리 코드의 PE 구조를 분석할 수 있고, Import Directory Table, Import Lookup Table, Hint/Name Tables, Raw calculation from RVA offset, Indirect Function Call, List of each function start address와 같은 정보를 수집할 수 있다. 또한 exe, dll과 같은 실행파일을 구성하기 위한 부가적인 메타정보들을 분석할 수 있다. 전자 장치(10)는 시스템 콜 함수(System Call function) 및 라이브러리 콜 함수(Library Call Function)에 대하여 데이터를 수집하고, 이를 재구성할 수 있다.
선택적 실시예에 따르면, 전자 장치(10)에 입력된 코드가 소스 코드인 경우, 전자 장치(10)는 입력된 소스 코드에 기재된 정보 및 부가적인 메타정보들을 분석하여, 시스템 콜 함수(System Call function) 및 라이브러리 콜 함수(Library Call Function)에 대한 정보를 수집할 수 있다.
본 개시의 전자 장치(10)는 금지 API 리스트를 획득할 수 있다(S1220). 금지 API 리스트는 도 12b과 같이, strcpy, strcat, sprintfW 등 약 150개의 API를 포함하는 Microsoft Security Develop Lifecycle(SDL) banned APIs를 기초로 획득된 것일 수 있으나 이에 제한되지 않으며, 다양한 종류의 금지 API 리스트를 포함할 수 있다.
본 개시의 전자 장치(10)는 상기 중간언어 변환과정에서 재구성된 시스템 콜 함수 및 라이브러리 콜 함수 정보를 금지 API 리스트와 비교할 수 있다(S1230).
선택적 실시예에 따르면 전자 장치(10)에 입력된 코드가 소스 코드인 경우, 전자 장치(10)는 소스 코드에 기재된 정보 및 부가적인 메타정보들을 기초로 수집된 함수 정보를 금지 API 리스트와 비교할 수 있다.
전자 장치(10)는 금지 API에 대응하는 함수를 식별할 수 있고, 이에 따라 보안 취약점에 대응하는 함수를 판단할 수 있다(S1240).
도 12c의 예시를 참조하면, 전자 장치(10)는 입력된 입력 코드(도면의 예에서, 바이너리 코드)에 대하여 중간언어로 변환할 수 있다. 특히, 전자 장치(10)는 수집 또는 재구성된 시스템 콜 함수 및 라이브러리 콜 함수 정보에 대한 식별정보가 중간언어에 포함되도록 변환할 수 있다.
구체적으로, 전자 장치(10)는 시스템 콜 함수 및 라이브러리 콜 함수 정보와 금지 API 리스트를 비교할 수 있다. 이 경우, strcpy 함수가 중복되어 포함되어 있는 경우, 해당 strcpy 함수를 보안 취약점으로 탐지할 수 있다.
한편 입력 코드가 바이너리 코드이고, 코드 최적화 등의 이유로 함수호출이 바이너리 코드 내에서 사라진 경우는 시스템 콜 함수 및 라이브러리 콜 함수 재구성이 불가능하다. 또한, 금지 API를 사용한 코드(또는 프로그램)이더라도, 규칙에 맞게 사용한 경우 보안취약점이 발생하지 않을 수 있다.
즉, 시스템 콜 함수 및 라이브러리 콜 함수 재구성 및 금지 API 리스트를 이용한 경우라고 하더라도, 탐지하지 못하는 보안취약점이 있을 수 있고, 반면, 보안취약점이라고 탐지하더라도 실제로 보안 위험이 발생하지 않을 수 있다.
이에 따라, 본 개시의 일 실시예에 따른 전자 장치(10)는 금지 API 리스트를 이용한 보안약점 분석 방법과, 도 10 내지 도 11c에서의 CFG를 이용한 보안약점 분석 방법을 결합하여 보안약점을 분석할 수 있다. 예를 들어, 본 개시의 전자 장치(10)는 금지된 API를 이용하는 함수에 대하여, 사용되는 변수 추론 정보 및 데이터 흐름 그래프 분석을 추가적으로 분석함으로써, 보안취약점 발생 여부를 확인할 수 있다.
도 13a 및 도 13b는 본 개시의 일 실시예에 따른 전자 장치가 정수 오버플로우를 탐지하는 방법을 설명하기 위한 도면이다.
정수(int)의 경우 보통 크기가 32비트이다. 첫 비트는 부호 비트이고 나머지 31개의 비트에 숫자의 절댓값을 정하므로, 2^31-1(=2147483647)보다 큰 수는 저장할 수 없다. 즉, 정수 오버플로우는 정수형의 크기는 고정되어 있는데, 정수형이 저장할 수 있는 값의 크기보다 큰 값을 저장하려 할 때 발생하는 오버플로우 취약점이다.
본 개시의 전자 장치(10)는 입력된 코드의 정수 오버플로우를 탐지하기 위해 입력 코드에 대응하는 제어 흐름 그래프를 획득할 수 있다(S1310). 상술한 바와 같이, 제어 흐름 그래프는 변환된 중간언어 코드를 기반으로 생성된 것일 수 있다.
전자 장치(10)는 정수 오버플로우가 발생하는 코드의 제어 흐름 그래프를 저장하고 있을 수 있다. 도 13a 및 도 13b를 함께 참조하면, 도 13b는 정수 오버플로우를 발생시키는 함수의 일 예이다. 도 13b와 같은 코드는 해커에 의해 의도적으로 프로그램에 추가된 것일 수도 있고, 이와 유사한 패턴을 가지는 코드가 의도치 않게 프로그램에 추가된 것일 수도 있다.
도 13b를 참조하면, 변수 c는 short 타입에서 가질 수 잇는 최대 값에 1을 더한값을 가지도록 셋팅된다. 음수는 절댓값을 2의 보수로 저장한다. 그래서 -1에 1을 더하는 연산을 하면 자연스럽게 0이 된다(반대로 2147483647에 1을 더하면 -2147483648이 된다). 즉, 해당 코드는 2개의 if 문을 통해 어떠한 a, b 값이 입력되더라도 정수 오버플로우를 발생시킨다.
예를 들어, a 및 b 중 어느 하나가 양수인 경우에 result 값이 정수 오버플로우가 발생하며, 그 외의 경우에도 result 값은 음수 커버범위를 초과하기 때문에 정수 오버플로우가 발생한다. 정수 오버플로우가 발생하는 경우, 데이터가 손실된다.
본 개시의 일 실시예에 따른 전자 장치(10)는 도 13b와 같이, 정수 오버플로우가 발생하는 함수에 대한 제어 흐름 그래프를 기저장하고 있을 수 있다. 전자 장치(10)는 입력된 코드의 제어 흐름 그래프와 오버플로우가 발생하는 제어 흐름 그래프의 패턴을 비교할 수 있다(S1320).
구체적으로, 전자 장치(10)는 중간 언어 변환시 데이터 타입에 대한 추론 정보를 기초로 생성되는 제어 흐름 그래프와, 상기 오버플로우가 발생하는 제어 흐름 그래프 간 패턴매칭을 통해 유사도를 판단한다. 즉, 전자 장치(10)는 상기 패턴 비교를 통해서 중간 언어 상에서 정수 오버플로우가 일어날 가능성이 있는 변수의 값이 감소 또는 증가하는 코드의 패턴을 탐지할 수 있다.
즉, 전자 장치(10)는 입력 코드 내에서, 정수형 변수의 정보 상실이 발생할 수있는 코드 패턴을 탐지할 수 있고(S1330), 이를 기초로 정수 오버플로우 취약점을 탐지할 수 있다(S1340).
한편, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 설치 가능한 어플리케이션 형태로 구현될 수 있다.
또한, 상술한 본 개시의 다양한 실시 예들에 따른 방법들은, 기존 전자 장치에 대한 소프트웨어 업그레이드, 또는 하드웨어 업그레이드 만으로도 구현될 수 있다.
또한, 상술한 본 개시의 다양한 실시예들은 전자 장치에 구비된 임베디드 서버, 또는 전자장치의 외부 서버를 통해 수행되는 것도 가능하다.
한편, 본 개시의 일 실시예에 따르면, 이상에서 설명된 다양한 실시예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록매체(computer readable recording medium)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 동작을 수행할 수 있다.
한편, 컴퓨터(computer) 또는 이와 유사한 장치는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 장치를 포함할 수 있다. 상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다.
기기로 읽을 수 있는 기록매체는, 비일시적 컴퓨터 판독가능 기록매체(non-transitory computer readable recording medium)의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다. 이때 비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
또한, 본 개시의 예시적 실시예에 따른 비일시적 컴퓨터 판독가능 기록매체는 도 5와 함께 설명한 단계 S110 내지 단계 S150의 보안 취약점 분석 방법 및 본 개시에서 설명된 다양한 방법들을 포함할 수 있다.
다시말해, 보안 취약점 분석 방법을 실행하기 위한 비일시적 컴퓨터 판독가능 기록 매체에 있어서, 상기 보안 취약점 분석 방법은, 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받는 단계(S110), 분석 대상을 특정하는 단계(S120), 특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 상기 분석 대상의 위치를 표시하고, 취약점 식별 정보를 생성하는 단계(S130), 표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 상기 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하는 단계(S140) 및 상기 함수 요약 정보 및 중간언어 코드를 가상 기계로 출력하는 단계(S150)를 포함할 수 있다.
이와 같이 본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 개시의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (15)
- 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받는 단계;분석 대상을 특정하는 단계;특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 상기 분석 대상의 위치를 표시하고, 취약점 식별 정보를 생성하는 단계;표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 상기 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하는 단계; 및상기 함수 요약 정보 및 중간언어 코드를 가상 기계로 출력하는 단계를 포함하는 보안 취약점 분석 방법.
- 제1항에 있어서,보안 약점 리스트를 수신하는 단계를 더 포함하며,상기 함수 요약 정보를 생성하는 단계는,상기 분석 대상으로부터 상기 보안 약점 리스트에 대응되는 보안 약점에 관한 상기 취약점 식별 정보를 기입하는 것을 특징으로 하는 보안 취약점 분석 방법.
- 제2항에 있어서,상기 취약점 식별 정보를 생성하는 단계는,코드 라인 별 순차적으로 상기 보안 취약점 분석을 수행하며,상기 보안 약점 리스트는,스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 보안 취약점을 포함하는 것을 특징으로 하는 보안 취약점 분석 방법.
- 제3항에 있어서,상기 취약점 식별 정보는, 상기 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 탐지 결과를 표시하는 것을 특징으로 하는 보안 취약점 분석 방법.
- 제4항에 있어서,상기 취약점 식별 정보는, 상기 적어도 하나의 탐지 결과에 따라 서로 다른 서식으로 표시되는 것을 특징으로 하는 보안 취약점 분석 방법.
- 제1항에 있어서,상기 함수 요약 정보는,EAT(Export Address Table) 레벨에서 분석되는 함수 시작 주소, 함수 이름 및 외부 함수 호출 목록을 포함하는 것을 특징으로 하는 보안 취약점 분석 방법.
- 제6항에 있어서,상기 함수 요약 정보는,타입 추론 레벨에서 분석되는 매개변수 수 및 매개변수 자료형을 포함하는 것을 특징으로 하는 보안 취약점 분석 방법.
- 바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받고, 분석 대상을 특정하며, 특정한 분석 대상에 대해 보안 취약점 분석을 수행하는 보안약점 분석기; 및상기 분석 대상의 위치를 표시하고, 표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하며, 상기 함수 요약 정보 및 상기 중간언어 코드를 가상 기계로 출력하는 함수 요약정보 생성기를 포함하는 전자 장치.
- 제8항에 있어서,상기 함수 요약정보 생성기는,보안 약점 리스트를 수신하며, 상기 분석 대상으로부터 상기 보안 약점 리스트에 대응되는 보안 약점에 관한 상기 취약점 식별 정보를 기입하는 것을 특징으로 하는 전자 장치.
- 제9항에 있어서,상기 보안약점 분석기는,코드 라인 별 순차적으로 상기 보안 취약점 분석을 수행하며,상기 보안 약점 리스트는,스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 보안 취약점을 포함하는 것을 특징으로 하는 전자 장치.
- 제10항에 있어서,상기 함수 요약정보 생성기는, 상기 스택 버퍼 오버플로우, 정수 오버플로우 및 금지 API 리스트 중 적어도 하나의 탐지 결과를 상기 취약점 식별 정보로써 표시하는 것을 특징으로 하는 전자 장치.
- 제11항에 있어서,상기 함수 요약정보 생성기는, 상기 적어도 하나의 탐지 결과에 따라 서로 다른 서식으로 상기 취약점 식별 정보를 표시하는 것을 특징으로 하는 전자 장치.
- 제8항에 있어서,상기 함수 요약 정보는,EAT(Export Address Table) 레벨에서 분석되는 함수 시작 주소, 함수 이름 및 외부 함수 호출 목록을 포함하는 것을 특징으로 하는 전자 장치.
- 제13항에 있어서,상기 함수 요약 정보는,타입 추론 레벨에서 분석되는 매개변수 수 및 매개변수 자료형을 포함하는 것을 특징으로 하는 전자 장치.
- 보안 취약점 분석 방법을 실행하기 위한 비일시적 컴퓨터 판독가능 기록 매체에 있어서,상기 보안 취약점 분석 방법은,바이너리 레벨에서 함수 단위로 분할된 중간언어 코드를 입력받는 단계;분석 대상을 특정하는 단계;특정한 분석 대상에 대해 보안 취약점 분석을 수행하여 상기 분석 대상의 위치를 표시하고, 취약점 식별 정보를 생성하는 단계;표시된 상기 분석 대상의 보안 취약점 탐지 여부에 관한 상기 취약점 식별 정보를 기입하여 함수 요약 정보를 생성하는 단계; 및상기 함수 요약 정보 및 중간언어 코드를 가상 기계로 출력하는 단계를 포함하는 비일시적 컴퓨터 판독가능 기록 매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2020/015660 WO2022097799A1 (ko) | 2020-11-09 | 2020-11-09 | 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2020/015660 WO2022097799A1 (ko) | 2020-11-09 | 2020-11-09 | 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022097799A1 true WO2022097799A1 (ko) | 2022-05-12 |
Family
ID=81456766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2020/015660 WO2022097799A1 (ko) | 2020-11-09 | 2020-11-09 | 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2022097799A1 (ko) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007041777A (ja) * | 2005-08-02 | 2007-02-15 | Hitachi Ltd | 言語処理方法 |
KR101269089B1 (ko) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | 자가암호화를 이용한 소프트웨어 변조방지 방법 |
KR101741131B1 (ko) * | 2016-02-29 | 2017-05-29 | 충남대학교산학협력단 | 크래시 위험도 분석 장치 및 그 방법과, 이를 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 |
KR101906004B1 (ko) * | 2016-11-29 | 2018-10-10 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
KR102001046B1 (ko) * | 2017-11-24 | 2019-07-17 | (주)잉카엔트웍스 | 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 |
-
2020
- 2020-11-09 WO PCT/KR2020/015660 patent/WO2022097799A1/ko active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007041777A (ja) * | 2005-08-02 | 2007-02-15 | Hitachi Ltd | 言語処理方法 |
KR101269089B1 (ko) * | 2011-08-19 | 2013-05-29 | 고려대학교 산학협력단 | 자가암호화를 이용한 소프트웨어 변조방지 방법 |
KR101741131B1 (ko) * | 2016-02-29 | 2017-05-29 | 충남대학교산학협력단 | 크래시 위험도 분석 장치 및 그 방법과, 이를 실행하는 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 |
KR101906004B1 (ko) * | 2016-11-29 | 2018-10-10 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
KR102001046B1 (ko) * | 2017-11-24 | 2019-07-17 | (주)잉카엔트웍스 | 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2010062063A2 (ko) | 브라우저 기반 어뷰징 방지 방법 및 시스템 | |
WO2013168913A1 (ko) | 비실행 파일 검사 장치 및 방법 | |
WO2017213400A1 (en) | Malware detection by exploiting malware re-composition variations | |
WO2013168951A1 (ko) | 악성 파일 검사 장치 및 방법 | |
WO2011122724A1 (ko) | 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템 | |
WO2014035043A1 (ko) | 악성 애플리케이션 진단 장치 및 방법 | |
US12001543B2 (en) | System and method for container assessment using sandboxing | |
WO2012044016A1 (en) | Method and apparatus for compiling and executing an application using virtualization in a heterogeneous system | |
WO2022260254A1 (ko) | 전이학습을 통한 적응형 모델 기반의 온 디바이스 안드로이드 악성코드 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
WO2021118125A1 (ko) | 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 | |
WO2016072760A1 (ko) | 전가상화 시스템에서 자원을 감시하는 장치 및 방법 | |
WO2022108318A1 (ko) | 스마트 컨트랙트 코드 취약점 분석 장치 및 방법 | |
WO2018236141A1 (ko) | 크래시 리포트 그룹핑 방법, 서버 및 컴퓨터 프로그램 | |
WO2016085272A1 (ko) | 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체 | |
WO2018208032A1 (ko) | 고립된 사용자컴퓨팅부를 갖는 컴퓨터 | |
WO2022097799A1 (ko) | 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same} | |
WO2014185627A1 (ko) | 데이터 프로세싱 시스템 보안 장치와 보안방법 | |
WO2021002724A1 (en) | Electronic apparatus and control method thereof | |
WO2022097798A1 (ko) | 중간언어 기반 코드 변환 방법 및 이를 포함하는 전자 장치 | |
WO2014073747A1 (ko) | 플래시 메모리의 소모 전력 감소 방법 및 그 장치 | |
WO2023229065A1 (ko) | 리버싱 엔진과 cdr 엔진을 활용한 악성 비실행 파일 차단 방법 및 장치 | |
WO2018043885A1 (ko) | 악성코드탐지시스템 및 악성코드 탐지 방법 | |
WO2019177265A1 (ko) | 랜섬웨어 대응을 위한 데이터 처리 방법, 이를 실행시키는 프로그램 및 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록매체 | |
KR102367196B1 (ko) | 중간언어 기반 보안 취약점 분석 방법 및 이를 포함하는 전자 장치 | |
WO2022030796A1 (ko) | 빈타이퍼: 씨++ 프로그램 바이너리 대상의 타입 컨퓨전 버그 탐지 |
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: 20960899 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20960899 Country of ref document: EP Kind code of ref document: A1 |