KR101963752B1 - Apparatus and method for analyzing software vulnerability - Google Patents
Apparatus and method for analyzing software vulnerability Download PDFInfo
- Publication number
- KR101963752B1 KR101963752B1 KR1020180133775A KR20180133775A KR101963752B1 KR 101963752 B1 KR101963752 B1 KR 101963752B1 KR 1020180133775 A KR1020180133775 A KR 1020180133775A KR 20180133775 A KR20180133775 A KR 20180133775A KR 101963752 B1 KR101963752 B1 KR 101963752B1
- Authority
- KR
- South Korea
- Prior art keywords
- execution path
- function
- suspect
- software
- language code
- Prior art date
Links
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
Description
본 발명의 실시예들은 소프트웨어 취약점 분석 기술과 관련된다.Embodiments of the invention relate to software vulnerability analysis techniques.
엄청나게 많은 소프트웨어의 보안 취약점을 전문가가 수동으로 분석하는 것은 불가능하다. 따라서, 소프트웨어에 대한 취약점을 자동으로 분석하기 위한 방법에 대해 많은 진행되고 있다. It is impossible for an expert to manually analyze the vast number of software vulnerabilities. Therefore, there is much progress on methods for automatically analyzing vulnerabilities in software.
그러나, 기존 연구들은 취약점을 100% 탐지하지 못하거나 점검 시간이 오래 걸린다는 단점이 존재하며, 수많은 프로그램 분기문 등으로 인해 발생하는 경로 폭발(path explosion) 문제가 해결되지 않고 있다. However, existing researches have a disadvantage that they do not detect 100% of vulnerability or it takes a long time to check, and the problem of path explosion caused by a lot of program branches is not solved.
본 발명의 실시예들은 소프트웨어 바이너리 파일과 안전하지 않은 함수 정보를 활용하여 소프트웨어 취약점을 분석하기 위한 장치 및 방법을 제공하기 위한 것이다.Embodiments of the present invention are intended to provide an apparatus and method for analyzing software vulnerabilities utilizing software binary files and unsafe function information.
본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 장치는, 소프트웨어 바이너리 파일을 역어셈블(disassemble)하여 상기 소프트웨어 바이너리 파일에 대한 어셈블리어 코드를 생성하는 역어셈블러; 상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하고, 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 정적 분석부; 및 상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하고, 상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 동적 분석부를 포함한다.An apparatus for analyzing a software vulnerability according to an exemplary embodiment of the present invention includes an inverse assembler for disassembling a software binary file to generate an assembly code for the software binary file; Generating a control flow graph for the assembly language code and determining whether the assembly language code includes at least one of the suspect functions included in the predefined suspect function list, part; And determining an optimal execution path for executing the suspect function based on the control flow graph when the suspect function is included in the assembly language code and determining a dynamic symbol for the optimal execution path using the software binary file, And a dynamic analysis unit for performing concurrent execution.
상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함할 수 있다.The suspicious function list may include a function associated with a previously discovered vulnerability.
상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure)에 등록된 취약점과 관련된 함수를 포함할 수 있다.The suspicious function list may include a function associated with a vulnerability registered in CVE (Common Vulnerabilities and Exposure).
상기 동적 분석부는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정할 수 있다.The dynamic analysis unit may determine the shortest execution path from the entry node to the target node including the suspect function as the optimum execution path on the control flow graph.
상기 동적 분석부는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)할 수 있다.The dynamic analysis unit may prun the remaining execution paths excluding the shortest execution path.
상기 동적 분석부는, 상기 나머지 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝할 수 있다.The dynamic analysis unit may generate a avoiding block list including a start memory address of a block corresponding to each node existing on the remaining path and pruning the remaining executing path based on the avoiding block list.
본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 방법은, 소프트웨어 바이너리 파일을 역어셈블(disassemble)하여 상기 소프트웨어 바이너리 파일에 대한 어셈블리어 코드를 생성하는 단계; 상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하는 단계; 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 단계; 상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하는 단계; 및 상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 단계를 포함한다.A software vulnerability analysis method according to an embodiment of the present invention includes disassembling a software binary file to generate an assembly code for the software binary file; Generating a control flow graph for the assembly language code; Determining by the string search whether the assembly language code includes at least one of the suspect functions included in the predefined suspect function list; Determining an optimal execution path for executing the suspect function based on the control flow graph when the suspect function is included in the assembly language code; And performing a dynamic concurrent execution of the optimal execution path using the software binary file.
상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함할 수 있다.The suspicious function list may include a function associated with a previously discovered vulnerability.
상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수를 포함할 수 있다.The suspicious function list may include a function associated with a vulnerability registered in CVE (Common Vulnerabilities and Exposure).
상기 최적 실행 경로를 결정하는 단계는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정할 수 있다.The step of determining the optimal execution path may determine the shortest execution path from the entry node to the target node including the suspect function as the optimum execution path on the control flow graph.
상기 최적 실행 경로를 결정하는 단계는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)하는 단계를 더 포함할 수 있다.The step of determining the optimum execution path may further include pruning the remaining execution paths excluding the shortest execution path.
상기 프루닝하는 단계는, 상기 나머지 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝할 수 있다.The pruning step may include generating a avoiding block list including a start memory address of a block corresponding to each node existing on the remaining path and pruning the remaining executing path based on the avoiding block list have.
본 발명의 실시예들에 따르면, 안전하지 않은 함수 정보를 활용한 문자열 검색을 통해 소프트웨어 바이너리 파일 내에 취약점이 존재할 만한 부분을 식별한 후 식별된 부분을 타겟으로 한 최적 실행 경로에 따라 동적 기호 실행(concolic execution)을 실행하도록 함으로써, 소프트웨어의 소스 코드 없이도 정확하고 효율적인 취약점 점검이 가능하며, 경로 폭발 문제를 해결할 수 있다.According to embodiments of the present invention, a part of a software binary file in which a vulnerability exists may be identified through a string search using unsafe function information, and a dynamic symbol execution concolic execution), it is possible to check for an accurate and efficient vulnerability without software source code, and solve the path explosion problem.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 장치의 구성도
도 2는 본 발명의 일 실시예에 따른 제어 흐름 그래프의 일 예를 도시한 도면
도 3은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 방법의 순서도
도 4는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도1 is a block diagram of a software vulnerability analysis apparatus according to an embodiment of the present invention;
2 is a diagram illustrating an example of a control flow graph according to an embodiment of the present invention;
3 is a flow chart of a software vulnerability analysis method according to an embodiment of the present invention
4 is a block diagram illustrating and illustrating a computing environment including a computing device suitable for use in the exemplary embodiments.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. The following detailed description is provided to provide a comprehensive understanding of the methods, apparatus, and / or systems described herein. However, this is merely an example and the present invention is not limited thereto.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. The following terms are defined in consideration of the functions of the present invention, and may be changed according to the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification. The terms used in the detailed description are intended only to describe embodiments of the invention and should in no way be limiting. Unless specifically stated otherwise, the singular form of a term includes plural forms of meaning. In this description, the expressions "comprising" or "comprising" are intended to indicate certain features, numbers, steps, operations, elements, parts or combinations thereof, Should not be construed to preclude the presence or possibility of other features, numbers, steps, operations, elements, portions or combinations thereof.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 장치의 구성도이다. 1 is a block diagram of a software vulnerability analysis apparatus according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 장치(100)은 역 어셈블러(110), 정적 분석부(120) 및 동적 분석부(130)를 포함한다. Referring to FIG. 1, a software
역어셈블러(110)는 취약점 분석 대상이 소프트웨어 바이너리 파일을 역어셈블(disassemble)하여 해당 바이너리 파일에 대한 어셈블리어 코드를 생성한다. The
정적 분석부(120)는 생성된 어셈블리 코드에 대한 제어 흐름 그래프(Control Flow Graph, CFG)를 생성한다. 이때, 제어 흐름 그래프의 생성은 공지된 다양한 방식을 이용하여 수행될 수 있다.The
한편, 정적 분석부(120)는 문자열 검색을 통해 어셈블리 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단한다.Meanwhile, the
구체적으로, 정적 분석부(120)는 문자열 검색을 통해 어셈블리 코드 내에서 의심 함수 리스트에 포함된 의심 함수를 포함하고 있는 기본 블록(basic block)을 식별할 수 있다.Specifically, the
이때, 의심 함수 리스트는 사전에 발견된 취약점과 관련된 함수들에 대한 리스트를 의미할 수 있다. 구체적으로, 본 발명의 일 실시예에 따르면, 의심 함수 리스트는 예를 들어, CVE(Common Vulnerabilities and Exposure)에 등록된 취약점 과 관련된 함수를 포함할 수 있다.In this case, the suspicious function list may refer to a list of functions related to the previously found vulnerability. Specifically, according to an embodiment of the present invention, the suspicious function list may include a function associated with a vulnerability registered in, for example, CVE (Common Vulnerabilities and Exposure).
구체적인 예로, 의심 함수 리스트는 strcpy(), memcpy(), strcat(), getwd(), gets(), fscanf(), scanf(), realpath(), sprint(), fprintf(), snprintf(), wcscpy(), wcxcat(), wmemcpy(), sscanf(), vscanf(), vfscanf(), vsscanf(), wscanf(), fwscanf(), swscanf(), vwscanf(), vfwscanf(), ip_cmsg_recv_checksum 등과 같은 함수들을 포함할 수 있다. 한편, 의심 함수 리스트는 상술한 예 외에도 사전 발견된 취약점과 관련된 다양한 함수들을 포함할 수 있다. As a concrete example, the suspicion function list is a list of suspicious functions, such as strcpy, memcpy, strcat, getwd, gets, fscanf, scanf, realpath, sprint, fprintf, (), vwscanf (), vfwscanf (), ip_cmsg_recv_checksum (), wcscpy (), wcscpy (), wcxcat (), wmemcpy (), sscanf (), vscanf And so on. Meanwhile, the suspicious function list may include various functions related to the previously discovered vulnerability, in addition to the examples described above.
동적 분석부(130)는 어셈블리어 코드에서 하나 이상의 의심 함수가 검색된 경우, 제어 흐름 그래프에 기초하여 각 의심 함수에 대한 최적 실행 경로를 결정한다. The
구체적으로, 동적 분석부(130)는 제어 흐름 그래프 상에서 엔트리(entry) 노드로부터 의심 함수를 포함하는 블록에 해당하는 타겟(target) 노드까지의 최단 실행 경로를 해당 의심 함수에 대한 최적 실행 경로로 결정할 수 있다. 이때, 최단 실행 경로는 예를 들어, 다익스트라(dijkstra) 알고리즘을 이용하여 결정될 수 있으나, 이 외에도 공지된 다양한 기술을 이용하여 결정될 수 있다.Specifically, the
한편, 본 발명의 일 실시예에 따르면, 동적 분석부(130)는 최적 실행 경로가 결정된 경우, 최적 실행 경로를 제외한 나머지 실행 경로들을 프루닝(pruning)할 수 있다.Meanwhile, according to an embodiment of the present invention, when the optimal execution path is determined, the
구체적으로, 도 2는 본 발명의 일 실시예에 따른 제어 흐름 그래프의 일 예를 도시한 도면이다.Specifically, FIG. 2 illustrates an example of a control flow graph according to an embodiment of the present invention.
도 2에 도시된 제어 흐름 그래프(200)에서 사각형으로 표시된 부분은 노드를 나타내며, 각 노드는 어셈블리 코드에 포함된 기본 블록을 나타낸다. 또한, 각 노드 사이의 화살표는 실행 경로를 나타내며, 사선(/)으로 표시된 화살표는 프루닝된 실행 경로를 나타낸다.In the
한편, 'bug' 노드(240)에 해당하는 블록에서 의심 함수를 포함하고 있는 것으로 가정하면, 동적 분석부(130)는 제어 흐름 그래프 상에서 엔트리 노드인 'main() start' 노드(210)로부터 타겟 노드인 'bug' 노드(240)까지의 모든 실행 경로 중 최단 실행 경로를 최적 실행 경로로 결정할 수 있다. 구체적으로, 도시된 예에서, 최적 실행 경로는 'main() start' 노드(210) =>'file open' 노드(220)=>'check handle' 노드(230)=>'bug' 노드(240)로 이루어진 실행 경로이다.In the meantime, if it is assumed that the block corresponding to the 'bug'
한편, 동적 분석부(130)는 최적 실행 경로 상에 있는 각 노드에 대응되는 블록의 시작 메모리 주소를 필수 블록 리스트에 포함시키고, 나머지 노드들에 대응되는 기본 블록의 시작 메모리 주소를 회피 블록 리스트에 포함시킴으로써 최적 실행 경로를 제외한 나머지 실행 경로를 프루닝 시킬 수 있다.Meanwhile, the
한편, 최적 실행 경로가 결정된 경우, 동적 분석부(130)는 소프트웨어 바이너리 파일을 이용하여 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행한다.On the other hand, when the optimal execution path is determined, the
이때, 동적 기호 실행은 실제 수행(concrete execution)과 기호 실행(symbolic execution)을 모두 이용하여 경로 제약조건(path constraint)을 해결하기 위한 기술이다. At this time, dynamic symbol execution is a technique for solving a path constraint by using both concrete execution and symbolic execution.
구체적으로, 동적 분석부(130)는 회피 블록 리스트에 포함된 블록으로의 실행 흐름을 배제하고, 필수 블록 리스트에 포함된 블록으로 실행 흐름이 진행되도록 입력 값 조건을 결정할 수 있으며, 이를 이용하여 최적 실행 경로에 대한 동적 기호 실행이 수행되도록 할 수 있다. Specifically, the
도 3은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분석 방법의 순서도이다.3 is a flowchart of a software vulnerability analysis method according to an embodiment of the present invention.
도 3에 도시된 방법은 예를 들어, 도 1에 도시된 소프트웨어 취약점 분석 장치(100)에 의해 수행될 수 있다.The method shown in FIG. 3 can be performed, for example, by the software
도 3을 참조하면, 우선, 소프트웨어 취약점 분석 장치(100)는 취약점 분석 대상인 소프트웨어 바이너리 파일을 역어셈블하여 상기 소프트웨어 바이너리 파일에 대한 어셈블리어 코드를 생성한다(310).Referring to FIG. 3, first, the software
이후, 소프트웨어 취약점 분석 장치(100)는 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성한다(320). Thereafter, the software
이후, 소프트웨어 취약점 분석 장치(100)는 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단한다(330).Thereafter, the software
이때, 의심 함수 리스트는 예를 들어, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수와 같이 사전에 발견된 취약점과 관련된 함수를 포함할 수 있다. At this time, the suspicious function list may include a function associated with a previously discovered vulnerability, for example, a function related to a vulnerability registered in CVE (Common Vulnerabilities and Exposure).
한편, 어셈블리어 코드에 의심 함수가 포함되어 있는 경우, 소프트웨어 취약점 분석 장치(100)는 제어 흐름 그래프에 기초하여 검색된 의심 함수를 실행하기 위한 최적 실행 경로를 결정한다(340). On the other hand, when the suspect function is included in the assembly language code, the software
이때, 본 발명의 일 실시예에 따르면, 소프트웨어 취약점 분석 장치(100)는 제어 흐름 그래프 상에서 엔트리 노드로부터 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정할 수 있다. At this time, according to an embodiment of the present invention, the software
또한, 본 발명의 일 실시예에 따르면, 소프트웨어 취약점 분석 장치(100)는 최단 실행 경로가 결정된 경우, 제외한 나머지 실행 경로를 프루닝(pruning)할 수 있다. 구체적으로, 소프트웨어 취약점 분석 장치(100)는 최적 실행 경로를 제외한 나머지 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 생성된 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝할 수 있다.In addition, according to an embodiment of the present invention, the software
이후, 소프트웨어 취약점 분석 장치(100)는 소프트웨어 바이너리 파일을 이용하여 최적 실행 경로에 대한 동적 기호 실행 실행(concolic execution)을 수행한다(350).Thereafter, the software
한편, 도 3에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.In the flowchart shown in FIG. 3, although the method is described by dividing the method into a plurality of steps, at least some of the steps may be carried out in sequence, combined with other steps, performed together, omitted, , Or one or more steps not shown may be added.
도 4는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 않은 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.4 is a block diagram illustrating and illustrating a computing environment including a computing device suitable for use in the exemplary embodiments. In the illustrated embodiment, each of the components may have different functions and capabilities than those described below, and may include additional components in addition to those not described below.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 소프트웨어 취약점 분석 장치(100)에 포함되는 하나 이상의 컴포넌트일 수 있다.The illustrated
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.The
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.The computer-
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.The
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, I will understand. Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by equivalents to the appended claims, as well as the appended claims.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
100: 소프트웨어 취약점 분석 장치
110: 역어셈블러
120: 정적 분석부
130: 동적 분석부10: Computing environment
12: computing device
14: Processor
16: Computer readable storage medium
18: Communication bus
20: Program
22: I / O interface
24: input / output device
26: Network communication interface
100: software vulnerability analysis device
110: disassembler
120: static analysis section
130: Dynamic Analysis Unit
Claims (12)
상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하고, 문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 정적 분석부; 및
상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하고, 상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 동적 분석부를 포함하며,
상기 동적 분석부는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정하는 소프트웨어 취약점 분석 장치.
An inverse assembler to disassemble the software binary file to generate an assembly language code for the software binary file;
Generating a control flow graph for the assembly language code and determining whether the assembly language code includes at least one of the suspect functions included in the predefined suspect function list, part; And
Determining an optimal execution path for executing the suspect function based on the control flow graph when the suspect function is included in the assembly language code and performing dynamic symbol execution for the optimal execution path using the software binary file and a dynamic analysis unit for performing concolic execution,
Wherein the dynamic analysis unit determines the shortest execution path from the entry node to the target node including the suspect function as the optimum execution path on the control flow graph.
상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 장치.
The method according to claim 1,
Wherein the suspicious function list includes a function associated with a previously discovered vulnerability.
상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 장치.
The method of claim 2,
Wherein the suspicious function list includes a function related to a vulnerability registered in CVE (Common Vulnerabilities and Exposure).
상기 동적 분석부는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)하는 소프트웨어 취약점 분석 장치.
The method according to claim 1,
And the dynamic analysis unit pruning remaining execution paths excluding the shortest execution path.
상기 동적 분석부는, 상기 나머지 실행 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝하는 소프트웨어 취약점 분석 장치.
The method of claim 5,
Wherein the dynamic analysis unit generates a avoidance block list including a start memory address of a block corresponding to each node existing on the remaining execution path and generates a software vulnerability to prune the remaining execution path based on the avoidance block list Analysis device.
상기 어셈블리어 코드에 대한 제어 흐름 그래프(control flow graph)를 생성하는 단계;
문자열 검색을 통해 상기 어셈블리어 코드가 사전 정의된 의심 함수 리스트에 포함된 의심 함수들 중 적어도 하나를 포함하고 있는지 여부를 판단하는 단계;
상기 어셈블리어 코드에 상기 의심 함수가 포함되어 있는 경우, 상기 제어 흐름 그래프에 기초하여 상기 의심 함수를 실행하기 위한 최적 실행 경로를 결정하는 단계; 및
상기 소프트웨어 바이너리 파일을 이용하여 상기 최적 실행 경로에 대한 동적 기호 실행(concolic execution)을 수행하는 단계를 포함하며,
상기 최적 실행 경로를 결정하는 단계는, 상기 제어 흐름 그래프 상에서 엔트리 노드로부터 상기 의심 함수를 포함하는 타겟 노드까지의 최단 실행 경로를 상기 최적 실행 경로로 결정하는 소프트웨어 취약점 분석 방법.
Disassembling the software binary file to generate an assembly language code for the software binary file;
Generating a control flow graph for the assembly language code;
Determining by the string search whether the assembly language code includes at least one of the suspect functions included in the predefined suspect function list;
Determining an optimal execution path for executing the suspect function based on the control flow graph when the suspect function is included in the assembly language code; And
Performing a dynamic concurrent execution of the optimal execution path using the software binary file,
Wherein the determining of the optimal execution path determines the shortest execution path from the entry node to the target node including the suspect function as the optimum execution path on the control flow graph.
상기 의심 함수 리스트는, 사전에 발견된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 방법.
The method of claim 7,
Wherein the suspect function list includes a function associated with a previously discovered vulnerability.
상기 의심 함수 리스트는, CVE(Common Vulnerabilities and Exposure) 에 등록된 취약점과 관련된 함수를 포함하는 소프트웨어 취약점 분석 방법.
The method of claim 8,
Wherein the suspect function list includes a function related to a vulnerability registered in CVE (Common Vulnerabilities and Exposure).
상기 최적 실행 경로를 결정하는 단계는, 상기 최단 실행 경로를 제외한 나머지 실행 경로를 프루닝(pruning)하는 단계를 더 포함하는 소프트웨어 취약점 분석 방법.
The method of claim 7,
Wherein determining the optimal execution path further comprises pruning the remaining execution paths excluding the shortest execution path.
상기 프루닝하는 단계는, 상기 나머지 실행 경로 상에 존재하는 각 노드에 대응되는 블록의 시작 메모리 주소를 포함하는 회피 블록 리스트를 생성하고, 상기 회피 블록 리스트에 기초하여 상기 나머지 실행 경로를 프루닝하는 소프트웨어 취약점 분석 방법. The method of claim 11,
The pruning step may include generating a avoidance block list including a start memory address of a block corresponding to each node existing on the remaining execution path, and pruning the remaining execution path based on the avoiding block list Software vulnerability analysis method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180133775A KR101963752B1 (en) | 2018-11-02 | 2018-11-02 | Apparatus and method for analyzing software vulnerability |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180133775A KR101963752B1 (en) | 2018-11-02 | 2018-11-02 | Apparatus and method for analyzing software vulnerability |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101963752B1 true KR101963752B1 (en) | 2019-03-29 |
Family
ID=65898832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180133775A KR101963752B1 (en) | 2018-11-02 | 2018-11-02 | Apparatus and method for analyzing software vulnerability |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101963752B1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102035246B1 (en) * | 2019-05-24 | 2019-10-22 | 세종대학교산학협력단 | Apparatus and method for analyzing software vulnerability using backward pathfinding |
KR20210062438A (en) * | 2019-11-21 | 2021-05-31 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
KR102304861B1 (en) * | 2021-03-30 | 2021-09-23 | 세종대학교산학협력단 | Apparatus and method for detecting firmware vulnerabiliry based on hybrid fuzzing |
EP3989081A4 (en) * | 2019-09-24 | 2023-06-21 | Jingdong Technology Information Technology Co., Ltd. | Method and device for publishing smart contract |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101674895B1 (en) * | 2015-11-30 | 2016-11-11 | 인하대학교 산학협력단 | Java Security Analysis Device Based On Java Method Call Graph |
KR101796369B1 (en) | 2016-01-22 | 2017-12-01 | 김동완 | Apparatus, method and system of reverse engineering collaboration for software analsis |
KR20180010053A (en) * | 2016-07-20 | 2018-01-30 | 주식회사 이븐스타 | Extraction system and method of risk code for vulnerability analysis |
KR20180060497A (en) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | Apparatus and method for analyzing embeded software vulnerability based on binary code |
-
2018
- 2018-11-02 KR KR1020180133775A patent/KR101963752B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101674895B1 (en) * | 2015-11-30 | 2016-11-11 | 인하대학교 산학협력단 | Java Security Analysis Device Based On Java Method Call Graph |
KR101796369B1 (en) | 2016-01-22 | 2017-12-01 | 김동완 | Apparatus, method and system of reverse engineering collaboration for software analsis |
KR20180010053A (en) * | 2016-07-20 | 2018-01-30 | 주식회사 이븐스타 | Extraction system and method of risk code for vulnerability analysis |
KR20180060497A (en) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | Apparatus and method for analyzing embeded software vulnerability based on binary code |
Non-Patent Citations (1)
Title |
---|
강상용 외 2인, ‘동적 기호 실행을 이용한 윈도우 시스템 콜 Use-After-Free 취약점 자동 탐지 방법’, 정보보호학회논문지, 한국정보보호학회, 2017.08, pp.803-810* * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102035246B1 (en) * | 2019-05-24 | 2019-10-22 | 세종대학교산학협력단 | Apparatus and method for analyzing software vulnerability using backward pathfinding |
EP3989081A4 (en) * | 2019-09-24 | 2023-06-21 | Jingdong Technology Information Technology Co., Ltd. | Method and device for publishing smart contract |
KR20210062438A (en) * | 2019-11-21 | 2021-05-31 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
KR102319403B1 (en) * | 2019-11-21 | 2021-10-29 | 국방과학연구소 | Computer apparatus and binary program execution speed measure method of computer apparatus |
KR102304861B1 (en) * | 2021-03-30 | 2021-09-23 | 세종대학교산학협력단 | Apparatus and method for detecting firmware vulnerabiliry based on hybrid fuzzing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101963752B1 (en) | Apparatus and method for analyzing software vulnerability | |
US11436337B2 (en) | System and method for application security profiling | |
US11216256B2 (en) | Determining based on static compiler analysis that execution of compiler code would result in unacceptable program behavior | |
US9454659B1 (en) | Software vulnerabilities detection system and methods | |
US11514172B2 (en) | System and method for information flow analysis of application code | |
US10630714B2 (en) | Method, system, and computer program product for automatically mitigating vulnerabilities in source code | |
US9824214B2 (en) | High performance software vulnerabilities detection system and methods | |
WO2017049800A1 (en) | Method and apparatus for detecting loophole code in application | |
US7860842B2 (en) | Mechanism to detect and analyze SQL injection threats | |
Alhuzali et al. | Chainsaw: Chained automated workflow-based exploit generation | |
US11650905B2 (en) | Testing source code changes | |
US10318739B2 (en) | Computing optimal fix locations for security vulnerabilities in computer-readable code | |
US10133560B2 (en) | Link time program optimization in presence of a linker script | |
US8671397B2 (en) | Selective data flow analysis of bounded regions of computer software applications | |
US9645800B2 (en) | System and method for facilitating static analysis of software applications | |
US10599852B2 (en) | High performance software vulnerabilities detection system and methods | |
US9742804B2 (en) | Computer network defense system | |
Weiss et al. | Annotary: A concolic execution system for developing secure smart contracts | |
KR102035246B1 (en) | Apparatus and method for analyzing software vulnerability using backward pathfinding | |
Takata et al. | Minespider: Extracting urls from environment-dependent drive-by download attacks | |
Aidee et al. | Vulnerability assessment on ethereum based smart contract applications | |
Elsayed et al. | IFCaaS: information flow control as a service for cloud security | |
US11392686B2 (en) | Detecting stack cookie utilization in a binary software component using binary static analysis | |
US10002253B2 (en) | Execution of test inputs with applications in computer security assessment | |
CN106911686B (en) | WebShell detection method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |