KR20190055776A - Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries - Google Patents

Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries Download PDF

Info

Publication number
KR20190055776A
KR20190055776A KR1020180141200A KR20180141200A KR20190055776A KR 20190055776 A KR20190055776 A KR 20190055776A KR 1020180141200 A KR1020180141200 A KR 1020180141200A KR 20180141200 A KR20180141200 A KR 20180141200A KR 20190055776 A KR20190055776 A KR 20190055776A
Authority
KR
South Korea
Prior art keywords
binary
execution
vulnerability
instruction
crash
Prior art date
Application number
KR1020180141200A
Other languages
Korean (ko)
Other versions
KR102090229B1 (en
Inventor
김환국
김태은
오상환
윤수진
전지수
나건배
Original Assignee
한국인터넷진흥원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국인터넷진흥원 filed Critical 한국인터넷진흥원
Priority to KR1020180141200A priority Critical patent/KR102090229B1/en
Publication of KR20190055776A publication Critical patent/KR20190055776A/en
Application granted granted Critical
Publication of KR102090229B1 publication Critical patent/KR102090229B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

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)
  • Debugging And Monitoring (AREA)

Abstract

Provided is an automated method for determining a vulnerability present in a binary and a point which is a cause of the vulnerability. According to an embodiment of the present invention, a method for analyzing a binary vulnerability comprises: a first execution step of recording an execution flow path inducing a crash with respect to a binary and a symbolic constraint of vulnerability related to a suspicious element on the execution flow path by performing a taint analysis through execution of the binary which is a target to be analyzed; and a second execution step of performing a second execution of a symbolic execution method with respect to the execution flow path of the binary, and when an instruction satisfying the symbolic constraint is found, determining that the vulnerability is present in the binary based on a comparison result between the found instruction and the suspicious element.

Description

바이너리에 대한 보안 취약점 및 그 원인 위치의 식별 방법 및 그 장치 {Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries}FIELD OF THE INVENTION [0001] The present invention relates to a method and apparatus for identifying a vulnerability of a binary,

본 발명은 바이너리에 대한 보안 취약점 및 그 원인 위치의 식별 방법 및 그 장치에 관한 것이다. 보다 상세하게는, 실행 바이너리(executable binary)에 존재하는 취약점 및 그 취약점의 원인이 되는 위치를 판정하는 자동화 된 방법에 관한 것이다.The present invention relates to a security vulnerability to a binary and a method and apparatus for identifying the cause of the vulnerability. More particularly, to an automated method of determining a vulnerability in an executable binary and a location that causes the vulnerability.

소프트웨어는 컴파일이 완료된 후의 결과물인 실행 바이너리(이하, '바이너리'라 함)의 형태로 배포된다. 상기 바이너리가 스토리지 장치에서 메모리에 로드 되고, 상기 메모리에서 상기 바이너리의 일부 인스트럭션이 프로세서에 페치(fetch) 됨으로써, 상기 소프트웨어가 실행된다.The software is distributed in the form of executable binary (hereinafter 'binary') which is the result of compilation. The binary is loaded into the memory at the storage device and the software is executed by fetching some instructions of the binary from the memory to the processor.

한편, 상기 바이너리에 대한 분석을 통하여 상기 바이너리에 존재하는 취약점(vulnerability)을 파악하기 위한 다양한 방법론이 제시되고 있다. 상기 취약점은, 예를 들어 버퍼 오버플로우(buffer overflow), 정수 오버플로우(integer overflow), 메모리 익셉션(memory exception), 레이스 컨디션(race condition), 기형 입력(Malformed-input), 기호 링크(symbolic link) 및 널 포인터(null pointer) 등 다양한 유형이 알려져 있다. 상기 취약점으로 인하여 상기 바이너리의 일부 기능이 부적절한 목적으로 무단 수정될 수도 있고, 상기 바이너리가 실행되는 시스템에 보안상 문제를 일으킬 수 있으므로, 보안상 중요한 시스템에서 실행되는 바이너리는 신속하고 정확하게 취약점이 식별되어야 할 것이다.Meanwhile, a variety of methodologies for grasping a vulnerability existing in the binary through the analysis of the binary have been proposed. The vulnerability may include, for example, a buffer overflow, an integer overflow, a memory exception, a race condition, a malformed-input, a symbolic link ) And null pointers are known. Because of the vulnerability, some functions of the binary may be unauthorizedly modified for an improper purpose, and a security problem may be caused in the system in which the binary is executed. Therefore, a binary executed in a security critical system can be quickly and accurately identified something to do.

그런데, 현재는 전문가의 지식에 의존하여 바이너리에 존재하는 취약점 및 그 취약점의 원인 위치를 찾고 있는 실정이다. 따라서, 전문가의 개인적인 역량에 따라 취약점이 발견되지 않을 위험도 존재하고, 취약점 및 그 원인 위치를 신속하게 찾기 어렵다.However, nowadays, depending on the expert's knowledge, we are looking for the vulnerabilities existing in binary and the cause of the vulnerability. Therefore, there is a risk that the vulnerability can not be found according to the personal capacity of the expert, and it is difficult to quickly find the location of the vulnerability and its cause.

따라서, 바이너리에 존재하는 취약점 및 그 취약점의 원인이 되는 부분을 자동화 된 방식으로 찾아내는 기술의 제공이 요청된다.Therefore, it is required to provide a technique for detecting the vulnerabilities existing in the binary and the parts causing the vulnerabilities in an automated manner.

한국등록특허 제10-1530132호Korean Patent No. 10-1530132

본 발명이 해결하고자 하는 기술적 과제는, 바이너리에 대한 공격을 통하여 취약점을 찾는 것이 아니라, 바이너리 자체에 대한 동적 분석을 통하여 상기 바이너리에 내제된 취약점을 자동화 된 방식으로 식별하는 방법 및 그 장치를 제공하는 것이다.SUMMARY OF THE INVENTION The present invention provides a method and apparatus for identifying a vulnerability embedded in a binary through an automatic analysis of a binary itself rather than searching for a vulnerability through an attack on the binary will be.

본 발명이 해결하고자 하는 다른 기술적 과제는, 바이너리에 내제된 취약점을 식별하는데 그치는 것이 아니라, 그 취약점을 야기한 부분까지도 자동화된 방식으로 식별하는 방법 및 그 장치를 제공하는 것이다.Another technical problem to be solved by the present invention is not only to identify a vulnerability imposed on a binary but also to provide a method and apparatus for identifying a part causing the vulnerability in an automated manner.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.The technical objects of the present invention are not limited to the technical matters mentioned above, and other technical subjects not mentioned can be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 바이너리 취약점 분석 방법은, 분석 대상인 바이너리(binary)의 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬(crash)를 유발하는 실행 흐름 경로(execution flow path) 및 상기 실행 흐름 경로 상의 의심 요소(suspicious element)와 관련된 취약점의 기호 제약조건(symbolic constraint)을 기록하는 1차 실행 단계와, 상기 바이너리의 상기 실행 흐름 경로에 대하여 기호 실행(symbolic execution) 방식의 2차 실행을 수행하되, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션과 상기 의심 요소의 비교 결과에 기반하여 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 2차 실행 단계를 포함한다.According to an aspect of the present invention, there is provided a method of analyzing a binary vulnerability according to an embodiment of the present invention, which comprises performing a taint analysis through execution of a binary to be analyzed, And a symbolic constraint of a vulnerability associated with a suspicious element on the execution flow path; and a second execution step of writing the execution flow path of the binary Wherein when the instruction satisfying the symbol constraint condition is found, the vulnerability exists in the binary based on a result of the comparison between the found instruction and the suspect element, And a second execution step of determining that the second execution step is performed.

일 실시예에서, 상기 2차 실행 단계는, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션이 상기 의심 요소와 같은 위치의 것이라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 단계를 포함한다.In one embodiment, the secondary execution step comprises the step of, when an instruction satisfying the symbol constraint condition is found, if the found instruction is at the same location as the suspect element, determining that the vulnerability exists in the binary .

일 실시예에서, 상기 2차 실행 단계는, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션이 상기 의심 요소의 피연산자가 실행된 후에 실행된 인스트럭션이라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 단계를 포함한다.In one embodiment, the secondary execution step includes: when an instruction satisfying the symbol constraint condition is found, if the found instruction is an instruction executed after the execution of the operand of the suspected element, the vulnerability exists in the binary .

일 실시예에서, 상기 2차 실행 단계는, 상기 바이너리의 상기 실행 흐름 경로에 한정하여 상기 2차 실행을 수행하는 단계를 포함한다.In one embodiment, the secondary execution step includes performing the secondary execution only on the execution flow path of the binary.

일 실시예에서, 상기 1차 실행 단계는, 상기 테인트 분석의 결과 출력된 정보를 이용하여 테인트 된 요소를 기록하되, 상기 테인트 된 요소는 테인트 된 피연산자, 테인트 된 메모리 주소 및 테인트 된 레지스터를 포함하는 단계와, 상기 테인트 된 요소 중 적어도 일부를 의심 요소로 결정하는 의심 요소 판정 단계를 포함한다. 이 때, 상기 의심 요소 판정 단계는, 상기 바이너리를 수도 코드(pseudo code)로 변환하는 단계와, 상기 변환 된 바이너리의 수도 코드 중 상기 테인트 된 요소에 대응되는 부분 중에서, 기 저장된 의심 수도 코드 패턴에 매치되는 부분의 테인트 된 요소를 의심 요소로 판정하는 단계를 포함하거나, 상기 테인트 된 요소 중에서, 기 저장된 의심 피연산자 패턴에 매치되는 부분의 테인트 된 요소를 의심 요소로 판정하는 단계를 포함하거나, 상기 테인트 된 요소 중에서, 기 저장된 의심 인스트럭션 패턴에 매치되는 부분의 테인트 된 요소의 인스트럭션을 의심 요소로 판정하는 단계를 포함할 수 있다.In one embodiment, the primary execution step includes recording the tentuated element using information output as a result of the tent analysis, wherein the tentuated element comprises a tentative operand, a tentative memory address, And a suspicious element determination step of determining at least a part of the tentuated elements as a suspected element. At this time, the suspected element determining step may include a step of converting the binary into a pseudo code, and a step of, among the parts corresponding to the tentative element among the converted binary codes, Determining that the tentative element of the portion matched with the previously stored suspected operand pattern is a suspected element, or determining that the tentative element of the portion of the tentuated element that matches the previously stored suspected operand pattern is a suspected element Or determining that the instruction of the tentative element of the portion matched with the previously stored suspicious instruction pattern among the tentuated elements is a suspicious element.

일 실시예에서, 상기 1차 실행 단계는, 상기 바이너리의 실행을 위한 실행 파라미터를 이용하여 상기 제1 차 실행을 수행하는 단계와, 상기 실행 파라미터를 이용하여 상기 테인트 분석을 위한 테인트 소스를 세팅하는 단계를 포함할 수 있다. 이 때, 상기 테인트 소스를 세팅하는 단계는, 상기 바이너리의 디버그 심볼(debug symbol)에 "main"이 존재하지 않는 경우, 상기 제1 차 실행 과정에서 상기 실행 파라미터를 로드 하는 위치를 테인트 소스로 세팅하는 단계를 포함할 수 있다.In one embodiment, the primary execution step includes the steps of: performing the first-order execution using an execution parameter for executing the binary; and executing the first-time execution using the execution parameter, And setting it. In this case, the step of setting the tessellation source may include a step of, when the " main " does not exist in the debug symbol of the binary, As shown in FIG.

일 실시예에서, 상기 바이너리 취약점 분석 방법은 상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 상기 취약점의 원인 위치로 결정하는 취약점 원인 위치 파악 단계를 더 포함할 수 있다.In one embodiment, the binary vulnerability analysis method may further include a step of, when the crash inducing value is not changed according to the tent record according to the tent analysis of the crash inducing value, which is an operand value when forced termination occurs according to the occurrence of the crash, And determining a location of a suspicious element closest to the forcible termination point on the execution flow path as a cause location of the vulnerability.

일 실시예에서, 상기 위치 파악 단계는, 상기 취약점의 원인 위치의 타입을 상기 강제 종료 지점에서 가장 가까운 상기 크래쉬 유발 값의 변화 지점인 제1 타입과, 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치인 제2 타입으로 구별하여 출력하는 단계를 포함할 수 있다.In one embodiment, the locating step further includes a step of determining a type of a cause location of the vulnerability as a first type that is a change point of the crash inducing value closest to the forced end point and a first type that is a position of a suspicious element closest to the forced end point And outputting the first and second types separately.

상기 기술적 과제를 해결하기 위한, 본 발명의 다른 실시예에 따른 바이너리 취약점 분석 방법은, 분석 대상인 바이너리(binary)의 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬(crash)를 유발하는 실행 흐름 경로(execution flow path) 및 상기 실행 흐름 경로 상의 의심 요소(suspicious element)를 기록하는 단계와, 상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 크래쉬 원인 위치로 결정하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method for analyzing a binary vulnerability, comprising: performing a taint analysis through execution of a binary to be analyzed; ) Of a crash inducing value that is an operand value at the time of forced termination according to the occurrence of the crash; and a step of writing a suspicious element on the execution flow path, And determining a location of a suspected element closest to the forcible end point on the execution flow path as a crash cause location when the crash inducing value does not change according to the tent record according to the analysis.

상기 기술적 과제를 해결하기 위한, 본 발명의 다른 실시예에 따른 전자 장치는 프로세서와, 상기 프로세서에서 실행 되는 하나 이상의 인스트럭션 및 하나 이상의 분석 대상 바이너리를 저장하는 메모리를 포함할 수 있다. 이 때, 상기 하나 이상의 인스트럭션은, 상기 분석 대상 바이너리에 실행 현황을 파악하는 코드를 삽입 하여 상기 분석 대상 바이너리를 실행하는 제1 인스트럭션과, 분석 대상인 바이너리의 1차 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬를 유발하는 실행 흐름 경로에 대한 정보를 출력하는 제2 인스트럭션과, 상기 실행 흐름 경로 상의 의심 요소를 판정하고, 상기 의심 요소와 관련된 취약점의 기호 제약조건을 생성하는 제3 인스트럭션과, 상기 바이너리의 상기 실행 흐름 경로에 대하여 기호 실행 방식의 2차 실행을 수행하고, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시 상기 제3 인스트럭션에 통지하는 제4 인스트럭션을 포함할 수 있다. 이 때, 상기 제3 인스트럭션은 상기 제4 인스트럭션의 통지를 제공 받아 상기 기호 제약조건을 만족하는 피연산자 발견 시, 상기 발견된 피연산자와 상기 의심 요소의 비교 결과에 기반하여 상기 바이너리에 상기 취약점이 존재하는 것으로 판정할 수 있다.According to another aspect of the present invention, there is provided an electronic device including a processor, at least one instruction executed in the processor, and a memory storing one or more analysis target binaries. In this case, the one or more instructions may include a first instruction to execute the analysis target binary by inserting a code that grasps the execution status into the analysis target binary, a taint analysis through a first execution of the analysis target binary A second instruction for outputting information about an execution flow path that causes a crash for the binary; a second instruction for determining a suspicious element on the execution flow path and generating a symbol constraint condition of the vulnerability associated with the suspected element; And a fourth instruction for performing a second execution of the symbol execution method with respect to the execution flow path of the binary and notifying the third instruction when an instruction satisfying the symbol constraint condition is detected have. At this time, the third instruction is notified of the fourth instruction, and when the operand satisfying the symbol constraint condition is found, the vulnerability exists in the binary based on the result of the comparison of the found operand and the suspected element .

일 실시예에서, 상기 하나 이상의 인스트럭션은, 상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 상기 취약점의 원인 위치로 결정하는 제5 인스트럭션을 더 포함할 수 있다.In one embodiment, the one or more instructions may include a step of, when the crash inducing value is not changed according to a tent record according to the tent analysis of a crash inducing value, which is an operand value when forced termination occurs according to the occurrence of the crash, And a fifth instruction for determining a location of a suspicious element closest to the forcible termination point on the execution flow path as a cause location of the vulnerability.

도 1은 본 발명의 일 실시 예에 따른 바이너리 취약점 분석 시스템의 구조를 도시한 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 바이너리 취약점 분석 장치의 블록 구성도이다.
도 3은 본 발명의 또 다른 실시 예에 따른 바이너리 취약점 분석 방법의 순서도이다.
도 4는 도 3의 제1 실행 관련 동작을 자세히 설명하기 위한 순서도이다.
도 5는 도 4의 일부 동작을 자세히 설명하기 위한 순서도이다.
도 6은 도 4의 일부 동작을 자세히 설명하기 위한 순서도이다.
도 7은 도 3의 제2 실행 관련 동작을 자세히 설명하기 위한 순서도이다.
도 8은 도 3의 취약점 원인 위치 분석 관련 동작을 자세히 설명하기 위한 순서도이다.
도 9는 본 발명의 또 다른 실시예에 따른 바이너리 취약점 분석 방법의 순서도이다.
도 10은 본 발명의 또 다른 실시예에 따른 바이너리 취약점 분석 장치의 하드웨어 구성도이다.
1 is a block diagram illustrating a binary vulnerability analysis system according to an exemplary embodiment of the present invention.
2 is a block diagram of a binary vulnerability analysis apparatus according to another embodiment of the present invention.
3 is a flowchart of a method for analyzing a binary vulnerability according to another embodiment of the present invention.
4 is a flowchart for explaining the first execution related operation of FIG. 3 in detail.
FIG. 5 is a flowchart for explaining some operations of FIG. 4 in detail.
6 is a flowchart for explaining a part of the operation of FIG.
FIG. 7 is a flowchart for explaining the second execution related operation of FIG. 3 in detail.
FIG. 8 is a flowchart for explaining the operation related to the analysis of the location cause of the vulnerability of FIG. 3 in detail.
9 is a flowchart of a method for analyzing a binary vulnerability according to another embodiment of the present invention.
10 is a hardware block diagram of a binary vulnerability analysis apparatus according to another embodiment of the present invention.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS The advantages and features of the present invention and the manner of achieving them will become apparent with reference to the embodiments described in detail below with reference to the accompanying drawings. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Is provided to fully convey the scope of the invention to those skilled in the art, and the invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout the specification.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.Unless defined otherwise, all terms (including technical and scientific terms) used herein may be used in a sense commonly understood by one of ordinary skill in the art to which this invention belongs. Also, commonly used predefined terms are not ideally or excessively interpreted unless explicitly defined otherwise. The terminology used herein is for the purpose of illustrating embodiments and is not intended to be limiting of the present invention. In the present specification, the singular form includes plural forms unless otherwise specified in the specification.

이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.Some embodiments of the present invention will now be described with reference to the drawings.

도 1은 본 발명의 일 실시 예에 따른 바이너리 취약점 분석 시스템의 구성도이다. 도 1에 도시된 바와 같이, 본 실시예에 따른 시스템은 서버 역할을 하는 바이너리 취약점 분석 장치(100) 및 클라이언트 역할을 하는 하나 이상의 전자 장치(10a, 10b, 10c, 20)를 포함할 수 있다. 상기 클라이언트는, 스마트 폰, 태블릿, 노트북, PC 등의 사용자 단말(10a, 10b, 10c)일 수 있으나, 다른 서비스를 제공하는 서버 장치(20)일 수도 있는 점을 유의한다.1 is a block diagram of a binary vulnerability analysis system according to an embodiment of the present invention. 1, the system according to the present embodiment may include a binary vulnerability analysis apparatus 100 acting as a server and one or more electronic devices 10a, 10b, 10c, 20 serving as clients. Note that the client may be a user terminal 10a, 10b, or 10c of a smart phone, a tablet, a notebook PC, or the like, but may be a server device 20 providing another service.

바이너리 취약점 분석 장치(100) 및 클라이언트 역할을 하는 하나 이상의 전자 장치(10a, 10b, 10c, 20)는 전자 장치로서, 예를 들어 연산 프로세서를 구비한 컴퓨팅 장치일 수 있다.The binary vulnerability analysis apparatus 100 and one or more electronic devices 10a, 10b, 10c, 20 serving as clients may be electronic devices, for example computing devices having a computing processor.

본 실시예에 따른 시스템에서 클라이언트는 분석이 요구되는 바이너리를 서버(100)에 제공하는 동작을 수행한다. 상기 클라이언트는 서버(100)로부터 분석 결과를 제공 받을 수 있다. 서버(100)는 제공 받은 바이너리를 자동화 된 방식으로 분석하여 바이너리에 내제된 취약점을 식별할 수 있다. 일 실시예에서, 서버(100)는 식별된 취약점의 원인이 되는 위치를 식별할 수도 있다. 또한, 일 실시예에서, 서버(100)는 제공 받은 바이너리의 크래쉬(crash)를 유발하는 원인 위치를 식별할 수도 있다.In the system according to the present embodiment, the client performs an operation of providing the server 100 with a binary to be analyzed. The client can receive the analysis result from the server 100. The server 100 may analyze the provided binary in an automated manner to identify the vulnerability imposed on the binary. In one embodiment, the server 100 may identify the location that is causing the identified vulnerability. Further, in one embodiment, the server 100 may identify the cause location that causes a crash of the provided binary.

본 실시예에 따른 서버(100)는 클라이언트에 의하여 바이너리를 제공 받는 것이 아니라, 스스로 분석 대상 바이너리를 수집할 수도 있음을 유의한다.It is noted that the server 100 according to the present embodiment may collect the analysis target binaries by itself, rather than being provided with the binary by the client.

서버(100)는 바이너리에 대한 분석 결과를 클라이언트(10a, 10b, 10c, 20)에 제공하거나, 자체적으로 데이터베이스 화 하여 관리할 수 있다.The server 100 may provide analysis results of the binaries to the clients 10a, 10b, 10c, and 20, or may manage the binaries by themselves.

이하, 도 2를 참조하여 본 발명의 다른 실시예에 따른 바이너리 취약점 분석 장치(100)의 구성 및 동작을 설명한다. 도 2에 도시된 바와 같이, 본 실시예에 따른 바이너리 취약점 분석 장치(100)는 바이너리 실행기(110), 기호 실행기(120), 테인트 분석기(130), 취약점 분류기(140), 의심 요소 DB(160), 취약점 원인 위치 파악기(150) 및 인터페이스(170) 중 적어도 하나를 포함할 수 있다. 인터페이스(170)는 바이너리 취약점 분석 장치(100)에 입력되거나, 바이너리 취약점 분석 장치(100)가 출력되는 것을 중개하는 동작을 수행하는 소프트웨어 또는 하드웨어 모듈을 가리킨다.Hereinafter, the configuration and operation of the binary vulnerability analysis apparatus 100 according to another embodiment of the present invention will be described with reference to FIG. 2, the binary vulnerability analysis apparatus 100 according to the present embodiment includes a binary executor 110, a symbol executor 120, a taint analyzer 130, a vulnerability classifier 140, a suspicious element DB 160, a vulnerability-causing localizer 150, and an interface 170. The interface 170 refers to a software or hardware module that is input to the binary vulnerability analysis apparatus 100 or performs an operation of mediating the output of the binary vulnerability analysis apparatus 100.

바이너리 실행기(110), 기호 실행기(120), 테인트 분석기(130), 취약점 분류기(140), 의심 요소 DB(160) 및 취약점 원인 위치 파악기(150)는 각각 물리적으로 분리된 전용 컴퓨팅 장치로 구성될 수도 있고, 적어도 일부가 소프트웨어 모듈 또는 하드웨어 모듈 부품의 형태로 하나의 컴퓨팅 장치에 함께 구성될 수도 있는 점을 유의한다.The binary executor 110, the symbol executor 120, the taint analyzer 130, the vulnerability classifier 140, the suspicious element DB 160 and the vulnerability locator 150 are physically separated dedicated computing devices Or at least a portion thereof may be configured together in one computing device in the form of a software module or hardware module part.

바이너리 실행기(110)는 분석 대상 바이너리를 제공 받고, 제공된 바이너리 파일을 실행시키는 바이너리 실행 모듈(111) 및 바이너리 코드에 바이너리 현황 정보를 파악하는 코드를 삽입(instrumentation)하는 바이너리 현황 파악 코드 삽입 모듈(112)을 포함한다. The binary executor 110 includes a binary execution module 111 for receiving a binary to be analyzed and executing the provided binary file and a binary status identification code insertion module 112 for instrumenting a code for identifying binary status information in the binary code ).

바이너리 실행 모듈(111)은 상기 제공된 바이너리를 환경에 맞춰 실행시켜준다. 바이너리 실행 모듈(111)은 상기 제공된 바이너리와 함께 제공된 실행 파라미터를 이용하여 상기 제공된 바이너리를 실행시킬 수 있다. 상기 실행 파라미터는 크래쉬(crash)를 유발하는 것으로 확인 된 것으로서, 바이너리의 실행 시 바이너리 내부 로직에 유입되는 데이터이다. The binary execution module 111 executes the provided binary in accordance with the environment. The binary execution module 111 can execute the provided binary using execution parameters provided with the provided binary. The execution parameter is data which has been confirmed to cause a crash, and which is input to the binary internal logic at the time of execution of the binary.

바이너리 현황 파악 코드 삽입 모듈(112)은 바이너리 제어 및 정보 취득을 위한 'Binary Code Instrumentation' 기능을 제공한다. 상기 바이너리에 삽입되는 코드는, 제공된 바이너리의 실행에 따른 내부 상황을 출력하는 역할을 수행한다.The binary status identification code inserting module 112 provides 'binary code instrumentation' for binary control and information acquisition. The code inserted in the binary serves to output an internal state according to the execution of the provided binary.

테인트 분석기(130)는 어떤 요소로부터 다른 요소들이 영향을 받는지 여부를 파악하여 의심스러운 요소에 의해 오염(Taint, 영향을 받음)이 된 경우를 이용하여 문제의 원인 및 영향력을 파악하는 테인트 분석을 수행한다. 테인트 분석의 방법은 공지된 다양한 기술이 차용될 수 있다. 테인트 분석과 관련하여, 문헌 "http://valgrind.org/docs/newsome2005.pdf", "https://en.wikipedia.org/wiki/Taint_checking" 등 다양한 공지 문헌들이 참조될 수 있다. The taint analyzer 130 determines whether the other factors are influenced by an element and analyzes the cause and influence of the problem using a case where the taint is influenced by a suspicious element . A variety of known techniques can be employed as a method of Tain analysis. In connection with the Taints analysis, various known documents such as "http://valgrind.org/docs/newsome2005.pdf" and "https://en.wikipedia.org/wiki/Taint_checking" can be referred to.

테인트 분석기(130)는 테인트 분석을 수행하는 메인 로직인 테인트 엔진(131) 및 기존의 Taint 방식으로는 탐지 되지 않는 패턴에 대응하기 위하여 적합화 된 방식을 적용하기 위한 테인트 옵티마이저(optimizer)(132)를 포함할 수 있다. 기존 테인트 엔진에서는 어셈블리 코드의 Source(이하, 테인트 소스)와 Destination가 연결된 경우에만 오염되었다고 판단하였다. 테인트 옵티마이저(132)는 오염된 요소를 조건문으로 사용하고 해당 조건문에 의해 영향을 받는 요소도 오염으로 처리하도록 적합화 방식을 적용하기 위한 로직을 수행한다. 상기 적합화 방식에 대한 자세한 설명은 논문 'DTA++: dynamic taint analysis with targeted control-flow propagation'을 참고 한다. 상기 테인트 소스는 상기 분석 대상 바이너리의 실행 파라미터를 로드 하는 부분일 수 있다. 상기 테인트 소스를 세팅하는 방법은 후술한다.The taint analyzer 130 includes a taint engine 131 as a main logic for performing a taint analysis and a taint optimizer 131 for applying a method adapted to a pattern that is not detected by a conventional taint method and an optimizer 132. In the existing taint engine, it was judged that the contamination occurred only when the source of the assembly code (hereinafter referred to as the tent source) and the destination were connected. The Taint optimizer 132 performs logic to apply a conformance scheme to treat contaminated elements as conditionals and also to treat contaminated elements as a conditional statement. For a detailed description of the adaptation scheme, see DTA ++: dynamic taint analysis with targeted control-flow propagation. The taint source may be a portion for loading execution parameters of the analysis target binary. The method of setting the tent source will be described later.

취약점 분류기(140)는 상기 분석 대상 바이너리의 예상 취약점을 판정 한다. 취약점 분류기(140)는 의심 요소 확인 모듈(Suspicious Element Checker)(141), 기호 제약조건 생성기(Symbolic Constraint Generator)(142) 및 취약점 판정 모듈(143)을 포함할 수 있다.The vulnerability classifier 140 determines the expected vulnerability of the analysis target binary. The vulnerability classifier 140 may include a suspicious element checker 141, a symbol constraint generator 142, and a vulnerability determination module 143.

취약점 분류기(140)는 테인트 분석기(130)로부터 상기 분석 대상 바이너리의 테인트 분석 결과를 제공받고, 제공 된 테인트 분석 결과를 재분석하며, 재분석 결과를 이용하여 상기 분석 대상 바이너리의 취약점을 식별하기 위한 2차 실행의 조건을 설정하며, 상기 설정된 조건을 기호 실행기(120)에 제공한다. 즉, 상기 2차 실행은 기호 실행기(120)가 주가 되어 수행된다.The vulnerability classifier 140 receives the taint analysis result of the analysis target binary from the taint analyzer 130, reanalyzes the provided taint analysis result, and identifies the vulnerability of the analysis target binary using the reanalysis result And provides the set conditions to the symbol execution unit 120. The symbol execution unit 120 sets the conditions for the second execution. That is, the second execution is performed mainly by the symbol executor 120.

도 2에 도시된 각각의 요소(110, 120, 130, 140, 150, 160, 170)는, 실제 실행 될 때 상호 연동되면서 동작하기 때문에, 다른 모듈보다 반드시 먼저 실행되어서 종료되거나 후에 실행되는 형태는 아니다. 특히, 취약점 분류기(140)는 일종의 서비스 데몬(daemon)과 유사한 역할을 수행한다.Since each element 110, 120, 130, 140, 150, 160, 170 shown in FIG. 2 operates in cooperation with each other when actually executed, no. In particular, the vulnerability classifier 140 performs a similar role as a kind of service daemon.

의심 요소 확인 모듈(141)은 크래쉬를 유발하는 실행 파라미터의 로드 위치를 이용하여 세팅 된 테인트 소스로부터 테인트 된 요소(피연산자, 메모리 주소, 레지스터 포함)가 기존에 알려진 취약점에 매치 되는지 여부를 판정한다. 구체적으로, 의심 요소 확인 모듈(141)은 악용 가능성이 있는 피연산자(operand) 유무, 피연산자 패턴, 인스트럭션(instruction) 및 수도(Pseudo) 코드 패턴 중 적어도 하나를 기준으로 테인트 된 요소가 의심 요소인지 여부를 판정한다. 수도 코드는 분석 대상 바이너리의 어셈블리 언어를 수도 코드로 변환 가능할 경우 분석된다. 의심 요소 확인 모듈(141)은 의심 요소 DB(160)로부터 기존에 알려진 취약점에 대한 정보를 얻을 수 있다.The suspicious element checking module 141 judges whether or not the element (including the operand, the memory address, and the register) tied to the previously known vulnerability from the settable source is set using the load position of the execution parameter causing the crash do. Concretely, the suspicious element identifying module 141 determines whether the element to be touched based on at least one of the presence or absence of an operable operand, an operand pattern, an instruction, and a pseudo code pattern is a suspicious element . The numeric code is parsed when the assembly language of the analyzed binary can be converted to a numeric code. The suspicious element confirming module 141 can obtain information on the previously known vulnerabilities from the suspicious element DB 160. [

기호 제약조건 생성기(142)는 의심 요소 확인 모듈(141)에 의하여 판정된 의심 요소에 대응되는 취약점을 파악할 수 있는 기호 제약조건(symbolic constraint)을 설정하여 기호 실행기(120)에 제공한다. 상기 기호 제약조건은 기호 실행(symbolic execution)의 실행 대상 실행 흐름 경로(execution flow path)에 조건식을 부여하는 것이다.The symbol constraint generator 142 sets a symbolic constraint that can identify a vulnerability corresponding to a suspicious element determined by the suspicious element determination module 141 and provides the symbol constraint to the symbol executor 120. The symbol constraint condition is to give a conditional expression to an execution flow path to be executed for symbolic execution.

기호 실행기(120)는 상기 분석 대상 바이너리를 기호 실행한다. 기호 실행이란 바이너리에서 쓰이는 값을 특정 값(concrete value)이 아닌 기호(symbol)로 대체하여 실행하는 것을 가리킨다. 이는, 수식에서 미지수를 이용하여 수식을 전개하는 것과 비슷하다. 기호 실행 엔진(121)은 바이너리 실행 과정에서 기호로 값 들을 대체한다. 따라서, 상기 분석 대상 바이너리에 포함된 조건문(conditional statement) 등에서 기호에 따른 분기 조건이 파악된다. SOLVER(122)는 특정 실행 흐름 경로에 따른 기호의 값을 구한다.The symbol execution unit 120 performs symbol execution on the analysis target binary. Symbol execution refers to executing a binary value by replacing it with a symbol rather than a concrete value. This is similar to developing a formula using unknowns in formulas. Symbol execution engine 121 replaces values by symbol in the binary execution process. Therefore, the branch condition according to the preference in the conditional statement included in the analyzed binary is grasped. SOLVER 122 obtains the value of a symbol according to a particular execution flow path.

간단한 바이너리가 아니라면, 기호 실행기(120)가 상기 바이너리의 모든 가능한 실행 흐름 경로에 대하여 그 기호의 값을 구하는 것은 상당한 컴퓨팅 자원을 요구한다. 본 실시예의 바이너리 취약점 분석 장치(100)는 분석 대상 바이너리의 모든 가능한 실행 흐름 경로를 확인할 필요는 없다. 크래쉬가 발생하는 실행 파라미터에 따른 실행 흐름 경로를 확인하기만 하면 된다. 그리고, 이러한 실행 흐름 경로는 테인트 분석기(130)의 테인트 기록이 가리킨다. 따라서, 기호 실행기(120)는 테인트 기록이 가리키는 실행 흐름 경로에 한하여 기호 실행을 수행하고, 그 기호 실행 과정에서, 취약점 분류기(140)가 제공하는 기호 제약조건을 만족하는 인스트럭션이 발견되는지 확인한다. 상기 기호 제약조건을 만족하는 인스트럭션이 발견되면, 기호 실행기(120)는 취약점 분류기(140)에 이를 통지한다. 취약점 분류기(140)의 취약점 판정 모듈(143)은 기호 실행기(120)로부터 상기 통지를 제공 받고, 분석 대상 바이너리에 상기 취약점이 존재하는지 여부를 판정한다.Unless it is a simple binary, symbol starter 120 requires significant computing resources to obtain the value of that symbol for all possible execution flow paths of the binary. The binary vulnerability analysis apparatus 100 of this embodiment does not need to check all possible execution flow paths of the analysis target binary. All you need to do is check the execution flow path according to the execution parameter that causes the crash. This execution flow path is indicated by the timestamp of the timestamp analyzer 130. Therefore, the symbol executor 120 performs symbol execution only for the execution flow path indicated by the text record, and checks whether an instruction satisfying the symbol constraint condition provided by the vulnerability classifier 140 is found in the symbol execution process . If an instruction satisfying the symbol constraint is found, the symbol executor 120 notifies the vulnerability classifier 140 of the instruction. The vulnerability determination module 143 of the vulnerability classifier 140 receives the notification from the preference executor 120 and determines whether or not the vulnerability exists in the analysis target binary.

이하, 취약점 판정의 순차적 과정에 대하여 상세히 설명한다.Hereinafter, the sequential process of determining the vulnerability will be described in detail.

분석 대상 바이너리에 크래쉬를 유발하는 실행 파라미터를 입력하면, 제1 실행 흐름 경로로 실행이 이뤄지는 점을 상기 테인트 기록을 통하여 확인할 수 있고, 상기 제1 실행 흐름 경로에 존재하는 제1 의심 요소가 의심 요소 확인 모듈(141)에 의하여 확인된다. 의심 요소 확인 모듈(141)은 의심 요소 DB(160)의 기 알려진 취약점 관련 정보를 참조한다. The method according to claim 1, wherein, when an execution parameter for causing a crash to be analyzed is inputted to the analysis target binary, it can be confirmed through execution of the first execution flow path that the first execution flow path exists, Is confirmed by the element confirmation module 141. [ The suspicious element confirming module 141 refers to the known vulnerability related information of the suspicious element DB 160. [

상기 제1 의심 요소에 대응되는 취약점 역시 의심 요소 DB(160)에 매칭되어 저장되어 있다. 상기 제1 의심 요소의 취약점이 버퍼 오버플로우인 것으로 가정하면, 기호 제약조건 생성기(142)가 상기 제1 실행 흐름 경로에서 버퍼 오버플로우가 발생되는 기호 제약조건을 생성한다.The vulnerability corresponding to the first suspect element is also stored in the suspect element DB 160. Assuming that the vulnerability of the first suspect element is a buffer overflow, the symbol constraint generator 142 generates a symbol constraint that causes a buffer overflow in the first execution flow path.

그 후, 기호 실행기(120)는 상기 제1 실행 흐름 경로에 따른 기호 실행을 실행하되, 상기 기호 제약조건이 만족되는 피연산자가 발견되면, 취약점 판정 모듈(143)에 이를 통지한다.Thereafter, the symbol execution unit 120 executes the symbol execution according to the first execution flow path, and notifies the vulnerability determination module 143 of the operand whose symbol constraint condition is satisfied.

버퍼 오버플로우가 발생되는 기호 제약조건을 만족시키는 인스트럭션이 발견되었다는 것은, 상기 분석 대상 바이너리에 버퍼 오버플로우의 취약점이 존재할 개연성이 존재한다는 것이다. 취약점 판정 모듈(143)은 상기 기호 제약조건을 만족하는 인스트럭션과 상기 제1 의심 요소 간의 비교를 통하여, 상기 분석 대상 바이너리에 버퍼 오버플로우의 취약점이 존재하는지 여부를 최종 판정한다.The fact that an instruction satisfying a symbol constraint that causes a buffer overflow is found means that there is a possibility that a buffer overflow vulnerability exists in the analysis target binary. The vulnerability determination module 143 finally determines whether a buffer overflow vulnerability exists in the analysis target binary through comparison between the instruction satisfying the symbol constraint condition and the first suspect element.

예를 들어, 취약점 판정 모듈(143)은 상기 기호 제약조건을 만족하는 인스트럭션과 상기 제1 의심 요소가 같은 위치의 것인 경우, 상기 분석 대상 바이너리에 버퍼 오버플로우의 취약점이 존재하는지 여부를 최종 판정할 수 있다. 또한, 예를 들어, 취약점 판정 모듈(143)은 상기 기호 제약조건을 만족하는 인스트럭션이 상기 제1 의심 요소가 실행 된 후의 것인 경우, 상기 분석 대상 바이너리에 버퍼 오버플로우의 취약점이 존재하는지 여부를 최종 판정할 수 있다.For example, when the instruction satisfying the symbol constraint condition and the first suspect element are at the same position, the vulnerability determination module 143 determines whether or not a vulnerability of the buffer overflow exists in the analysis target binary can do. In addition, for example, if the instruction satisfying the symbol constraint condition is one after the first suspect element is executed, the vulnerability determination module 143 determines whether or not a vulnerability of the buffer overflow exists in the analysis target binary A final determination can be made.

취약점 원인 위치 파악기(150)는 취약점의 원인 위치를 파악한다. 취약점 원인 위치 파악기(150)는 테인트 분석기(130)에 의한 테인트 분석과 기호 실행기(120)에 의한 기호 실행이 종료되면 해당 결과를 가지고 취약점의 위치를 파악한다.The location detector 150 detects the cause of the vulnerability. When the location analyzer 150 analyzes the taint by the taint analyzer 130 and terminates the execution of the symbol by the symbol executor 120, the location detector 150 identifies the location of the vulnerability.

취약점 분류기(140)는 분석 대상 바이너리에 포함된 것으로 판정된 취약점에 대한 정보를 인터페이스(170)를 통해 출력할 수 있다.The vulnerability classifier 140 may output information on the vulnerability determined to be included in the analysis target binary through the interface 170. [

예를 들어, 취약점 원인 위치 파악기(150)는 크래쉬가 발생된 위치와 관련된 테인트 피연산자를 파악하고 상기 테인트 피연산자의 값이 상기 크래쉬를 유발한 값(테인트 분석을 위한 1차 실행에서 크래쉬 발생으로 강제 종료될 때의 피연산자, 레지스터 등의 값)으로 변화하는 시점을 상기 취약점의 위치로 파악한다. For example, the vulnerability locator 150 may determine a tenned operand associated with a location where a crash occurred and determine whether the value of the tenned operand is greater than the value that caused the crash A value of an operand, a register, or the like at the time of the forced termination due to the occurrence) as the location of the vulnerability.

또한, 예를 들어, 취약점 원인 위치 파악기(150)는 상기 크래쉬를 유발한 값의 파악이 안 되거나, 상기 크래쉬를 유발한 값의 변화가 포착되지 않는 경우에는 상기 크래쉬에 의한 상기 크래쉬 발생 시의 실행 흐름 경로 상에서 강제 종료 위치로부터 가장 가까운 의심 요소(의심 요소 확인 모듈(141)에 의하여 식별된)의 위치를 상기 취약점의 원인 위치로 파악할 수도 있다. 취약점 원인 위치 파악기(150)는 파악된 결과, 즉 취약점 원인 위치 관련 정보를 인터페이스(170)를 통해 출력할 수 있다.In addition, for example, when the value causing the crash is not grasped or a change in the value causing the crash is not captured, the location locator 150 of the vulnerability causes the occurrence of the crash The location of the suspect element (identified by the suspect element identification module 141) closest to the forced termination position on the execution flow path may be identified as the cause of the vulnerability. The vulnerability-causing location detector 150 can output the detected result, that is, the location-related information that is the cause of the vulnerability through the interface 170. [

다음으로, 도 3 내지 도 8을 참조하여, 본 발명의 다른 실시예에 따른 바이너리 취약점 분석 방법을 설명한다. 본 실시예에 따른 바이너리 취약점 분석 방법은 전자 장치에 의하여 수행될 수 있다. 상기 전자 장치는, 예를 들어 컴퓨팅 장치일 수 있다. 상기 컴퓨팅 장치는, 예를 들어 도 1 내지 도 2를 참조하여 설명한 바이너리 취약점 분석 장치일 수 있다. 상기 바이너리 취약점 분석 방법에 도 1 내지 도 2를 참조하여 설명한 바이너리 취약점 분석 장치의 동작이 적어도 일부 포함될 수 있음을 유의한다. 따라서, 이하 설명되는 바이너리 취약점 분석 방법에 대한 설명에서 별도의 개시가 없더라도, 도 1 내지 도 2를 참조하여 설명한 바이너리 취약점 분석 장치의 동작이 상기 바이너리 취약점 분석 방법에 포함될 수 있다. 또한, 이하 상기 방법에 대한 설명에서, 동작의 주체에 대한 기재가 존재하지 않는 경우, 상기 주체는 상기 바이너리 취약점 분석 장치로 해석될 수 있다.Next, a method of analyzing a binary vulnerability according to another embodiment of the present invention will be described with reference to FIGS. 3 to 8. FIG. The binary vulnerability analysis method according to this embodiment can be performed by an electronic device. The electronic device may be, for example, a computing device. The computing device may be, for example, the binary vulnerability analysis apparatus described with reference to FIGS. It should be noted that at least a part of the operation of the binary vulnerability analysis apparatus described with reference to FIGS. 1 and 2 may be included in the binary vulnerability analysis method. Therefore, the operation of the binary vulnerability analysis apparatus described with reference to FIGS. 1 and 2 can be included in the binary vulnerability analysis method even if there is no separate disclosure in the description of the binary vulnerability analysis method described below. Further, in the following description of the method, when there is no description of the subject of operation, the subject may be interpreted as the binary vulnerability analysis apparatus.

먼저, 도 3을 참조하여, 본 실시예에 따른 전체적인 동작을 개괄적으로 설명한다.First, overall operation according to the present embodiment will be outlined with reference to FIG.

단계 S100에서, 분석 대상인 바이너리를 1차 실행한다. 이 때, 상기 바이너리에 대한 실행 파라미터로서, 상기 바이너리에 크래쉬를 야기한 실행 파라미터가 입력된다. 이 때, 상기 실행 파라미터를 테인트 소스로 하는 테인트 분석의 결과인 테인트 기록 및 상기 실행의 실행 흐름 경로 상에 존재하는 것으로 판정된 의심 요소가 출력된다. 또한, 상기 의심 요소에 대응되는 취약점에 대한 기호 제약조건이 출력된다. 상기 1차 실행은 도 2의 바이너리 실행기(110), 테인트 분석기(130) 및 취약점 분류기(140)에 의하여 수행될 수 있을 것이다. 이 동작에 대하여는 도 4 내지 도 6을 참조하여 자세히 후술한다.In step S100, the binary to be analyzed is first executed. At this time, as an execution parameter for the binary, an execution parameter causing a crash to the binary is inputted. At this time, a tent record, which is the result of the tent analysis using the execution parameter as a tent source, and a suspected element that is determined to exist on the execution flow path of the execution are output. Also, a symbol constraint condition for a vulnerability corresponding to the suspected element is output. The primary execution may be performed by the binary executor 110, the taint analyzer 130 and the vulnerability classifier 140 of FIG. This operation will be described in detail later with reference to FIG. 4 to FIG.

단계 S200에서, 상기 바이너리를 2차 실행하되, 상기 1차 실행에서 출력된 테인트 기록을 이용하여 상기 1차 실행의 실행 흐름 경로에 한정하여 기호 실행한다. 또한, 상기 기호 실행의 과정에서, 상기 1차 실행에서 출력된 기호 제약조건을 만족하는 인스트럭션이 발견되는 경우, 상기 인스트럭션과 상기 1차 실행에서 출력된 의심 요소 간의 비교 결과에 기반하여 상기 바이너리에 상기 기호 제약조건을 만족하는 인스트럭션이 발견된 취약점이 존재하는지 여부를 최종 판정한다. 상기 1차 실행은 도 2의 바이너리 실행기(110), 기호 실행기(120) 및 취약점 분류기(140)에 의하여 수행될 수 있을 것이다. 이 동작에 대하여는 도 7을 참조하여 자세히 후술한다.In step S200, the binary is executed secondarily, and the execution is limited to the execution flow path of the primary execution using the tape record output in the primary execution. In addition, in the course of execution of the symbol, when an instruction satisfying the symbol constraint condition output from the primary execution is found, the binary is added to the binary based on the comparison result between the instruction and the suspect element output from the primary execution Finally, a determination is made as to whether there is a vulnerability in which an instruction satisfying the symbol constraint is found. The primary execution may be performed by the binary executor 110, the symbol executor 120 and the vulnerability classifier 140 of FIG. This operation will be described later in detail with reference to FIG.

단계 S300에서, 상기 1차 실행의 결과 및 상기 2차 실행의 결과 중 적어도 하나를 이용하여, 취약점의 원인 위치를 결정한다. 이 동작에 대하여는 도 8을 참조하여 자세히 후술한다.In step S300, the cause location of the vulnerability is determined using at least one of the result of the primary execution and the result of the secondary execution. This operation will be described later in detail with reference to FIG.

다음으로, 도 4를 참조하여 S100 단계를 보다 상세히 설명한다.Next, step S100 will be described in more detail with reference to FIG.

단계 S101에서, 분석 대상인 바이너리를 상기 바이너리의 크래쉬를 유발하는 실행 파라미터를 이용하여 실행시킨다. 이 때, 테인트 분석을 수행하기 위하여 테인트 소스를 세팅한다(S103). 상기 테인트 소스가 상기 바이너리의 실행 과정에서 다른 피연산자 등에 테인트 되는 과정이 추적되고, 그 결과는 테인트 기록으로서 기록되거나 출력될 것이다. 이하, 테인트 소스의 세팅 동작을 도 5를 참조하여 설명한다.In step S101, the binary to be analyzed is executed using an execution parameter that causes a crash of the binary. At this time, a taint source is set to perform the taint analysis (S103). The process of the tent source being touched on another operand or the like in the execution of the binary is tracked, and the result will be recorded or output as a tent record. Hereinafter, the setting operation of the tread source will be described with reference to Fig.

본 실시예에서, 테인트 소스의 세팅은 분석 대상인 바이너리의 디버그 심볼(debug symbol)에 "main" 심볼이 존재하는지 여부에 따라 달라진다. 즉, 상기 바이너리의 디버그 심볼에 "main"이 존재하는 경우(S1030), 테인트 소스는 "main" 심볼에 대응 되는 인스트럭션들 중 실행 파라미터를 불러오는(즉, load 하는) 인스트럭션의 위치(즉, 주소)로 세팅된다(S1032).In this embodiment, the setting of the taint source depends on whether or not the " main " symbol exists in the debug symbol of the binary to be analyzed. That is, if there is " main " in the debug symbol of the binary (S1030), the taint source searches for the location of the instruction (that is, (S1032).

즉, 상기 바이너리의 디버그 심볼에 "main"이 존재하지 않는 경우(S1030), 상기 바이너리의 어느 부분에서 실행 파라미터를 불러올지 상기 바이너리의 실제 실행 전에는 알기 어렵다. 따라서, 이 경우에는 상기 바이너리의 실행 과정에서, 최초로 외부 값을 불러오는 인스트럭션의 위치를 상기 테인트 소스로 세팅한다(S1034). 최초로 외부 값을 불러온다면, 그 외부 값이 바로 실행 파라미터일 가능성이 높기 때문이다. 다시 도 4로 돌아가서 설명한다.That is, when "main" does not exist in the debug symbol of the binary (S1030), it is difficult to know in which part of the binary the execution parameter is to be called before the actual execution of the binary. Accordingly, in this case, in the execution process of the binary, the location of the instruction to first fetch the external value is set to the tread source (S1034). If an external value is first loaded, it is likely that the external value is the immediate execution parameter. Referring back to FIG.

단계 S105에서, 상기 바이너리의 인스트럭션을 순서대로 하나씩 실행하면서, 실행된 인스트럭션에 포함된 피연산자가 이전 실행된 피연산자로부터 테인트 되는지 여부를 확인한다(S107). 실행된 피연산자가 테인트 되는 경우에 한하여 분석 대상이 된다. 따라서, 테인트 된 피연산자 또는 레지스터와 그 관련 인스트럭션의 메모리 주소를 기록한다(S109). 이러한 기록의 결과, 테인트 소스로부터의 테인트 기록이 아래의 표 1과 같이 생성된다.In step S105, it is determined whether the operand contained in the executed instruction is tentatively executed from the previously executed operand, while executing the instructions of the binary one by one in order (S107). It is subject to analysis only when the executed operand is tied. Thus, the memory address of the tenned operand or register and its associated instruction is recorded (S109). As a result of this recording, a tent record from a tent source is generated as shown in Table 1 below.

Figure pat00001
Figure pat00001

단계 S111에서, 테인트 된 피연산자를 포함하는 인스트럭션 각각에 대하여는 의심 요소에 해당하는지 여부를 판정한다. 이 과정은, 예를 들어 의심 요소 확인 모듈(141)에 의하여 수행될 수 있다. 이하, 도 6을 참조하여 의심 요소 해당 여부 판정 과정에 대하여 자세히 설명한다.In step S111, it is determined whether or not the instruction including the tenned operand is a suspect element. This process can be performed, for example, by the suspicious element identifying module 141. Hereinafter, the process for determining whether a suspect element is present will be described in detail with reference to FIG.

단계 S1110에서, 의심 인스트럭션 패턴, 의심 피연산자 패턴 및 의심 수도(pseudo) 코드 패턴 중 적어도 하나를 의심 요소 DB에서 불러온다. 상기 의심 요소 DB에는 각각의 취약점 타입 별로 사전에 파악된 의심 인스트럭션 패턴, 의심 피연산자 패턴, 의심 수도 코드 패턴이 매칭되어 저장되어 있다.In step S1110, at least one of the suspicious instruction pattern, the suspected operand pattern, and the suspicious pseudo code pattern is loaded from the suspect element DB. The suspect element DB stores suspicious instruction patterns, suspect operand patterns, and suspiciousness code patterns previously stored for each vulnerability type.

단계 S1111에서, 상기 바이너리가 수도 코드로 변환 가능한지 확인한다. 변환이 가능할 경우 상기 바이너리를 수도 코드로 변환한다(S1112). 다음으로, 단계 S1113에서, 테인트 된 피연산자를 포함하는 인스트럭션에 대응되는 부분이 상기 의심 수도 코드 패턴과 일치하는지 판정되고, 일치하는 것으로 판정된 경우, 의심 수도 코드 패턴에 일치하는 부분을 의심 요소로 기록한다(S1114).In step S1111, it is confirmed whether or not the binary can be converted into a numerical code. If the conversion is possible, the binary is converted into a numerical code (S1112). Next, in step S1113, it is determined whether or not the portion corresponding to the instruction including the tenned operand coincides with the suspect degree code pattern. If it is determined that the portion matches the suspect degree code pattern, (S1114).

단계 S1115에서, 테인트 된 피연산자에 대응되는 부분이 상기 의심 피연산자 패턴과 일치하는지 판정되고, 일치하는 것으로 판정된 경우, 의심 피연산자 패턴에 일치하는 부분을 의심 요소로 기록한다(S1116).In step S1115, it is determined whether the portion corresponding to the tenninal operand matches the suspected operand pattern. If it is determined that the portion matches the suspected operand pattern, a portion matching the suspected operand pattern is recorded as a suspected element (S1116).

단계 S1117에서, 테인트 된 피연산자에 대응되는 인스트럭션이 상기 의심 인스트럭션 패턴과 일치하는지 판정되고, 일치하는 것으로 판정된 경우, 테인트 된 피연산자에 대응되는 인스트럭션을 의심 요소로 기록한다(S1118). 의심 인스트럭션 패턴은, 예를 들어 "mov ecx, A"와 같은 인스트럭션에 있어서 A가 기 지정된 한계치를 초과하는 것일 수 있다. ecx 레지스터는 인덱스 조회에 많이 사용되는 레지스터인데, 그 인덱스 값으로 일반적이지 않은 큰 값이 입력되는 것은 문제 될 수 있는 인스트럭션이 될 것이다.In step S1117, it is determined whether the instruction corresponding to the tenninal operand matches the suspicious instruction pattern. If it is determined that the instruction matches, the instruction corresponding to the tenninal operand is recorded as a suspect element (S1118). The suspect instruction pattern may be such that, for example, in instructions such as " mov ecx, A ", A exceeds a predefined limit. The ecx register is a register that is often used for index lookups, and entering an unusual large value into the index value will be a problematic instruction.

단계 S1119에서, 테인트 된 요소 중 아직 검사가 수행되어야 하는 부분이 있다면 그 부분으로 이동하고, 테인트 된 요소를 모두 검사 했다면 의심 요소 체크 동작이 종료된다.In step S1119, if there is a part to be inspected among the tainted elements, the suspicious element checking operation is terminated if all the tentuated elements have been inspected.

다시 도 4로 돌아와서 설명한다. 테인트 된 피연산자를 포함하는 인스트럭션을 포함하는 일련의 인스트럭션이 의심 요소인 것으로 단계 S111에서 판정된 경우, 상기 의심 요소를 기록하고, 상기 의심 요소에 관련된 취약점을 상기 의심 요소 DB에서 조회한다(S113). 상기 바이너리 전체적으로 복수개의 의심 요소가 확인 될 수 있고, 의심 요소, 의심 요소의 위치(즉, 메모리 주소) 및 관련 취약점이 매치 되어 기록된다. 아래의 표 2는 의심 요소의 기록 예시이다.Returning back to FIG. If it is determined in step S111 that the instruction including the instruction including the tenned operand is a suspicious element, the suspect element is recorded, and the suspect element DB inquires a vulnerability related to the suspect element (S113) . A plurality of suspected elements can be identified for the entire binary, and the locations of suspected elements, suspected elements (i.e., memory addresses) and associated vulnerabilities are matched and recorded. Table 2 below is an example of a record of suspected elements.

의심 요소Suspicious Factor 의심 요소 위치Suspicious Element Location 관련 취약점Related Vulnerabilities strcpystrcpy 0x400x020x400x02 Buffer OverflowBuffer Overflow Call mallocCall malloc 0x400c5e0x400c5e Memory ExceptionMemory Exception

단계 S115에서, 상기 기록된 의심 요소의 기호 제약조건(symbolic constraint가 조회되고 기록된다.In step S115, the symbolic constraint of the recorded suspect element is retrieved and recorded.

일 실시예에서, 상기 기호 제약조건은 상기 기록된 의심 요소의 관련 취약점과 일대일 대응하는 것일 수 있다. 예를 들어, 상기 기록된 의심 요소의 관련 취약점이 Null Pointer 오류인 경우, 그 기호 제약조건은 아래와 같다.In one embodiment, the symbol constraint may be a one-to-one correspondence with the associated vulnerability of the recorded suspect element. For example, if the related vulnerability of the recorded suspect element is a Null Pointer error, the symbol constraint is as follows.

pc>higher_boundary_binary|pc<higher_boundary_binary&last_memory==nullpc> higher_boundary_binary | pc <higher_boundary_binary & last_memory == null

상기 기호 제약조건은 pc값이 바이너리 실행 가능 영역의 밖을 가리키고, 마지막으로 접근한 메모리가 null 값인 것을 의미한다.The symbol constraint means that the pc value points outside the binary executable area, and the last memory accessed is null.

다른 실시예에서, 상기 기호 제약조건은 상기 기록된 의심 요소의 관련 취약점과 상기 기록된 의심 요소 및 상기 기록된 의심 요소의 위치에 따른 실행 흐름 경로를 모두 고려하여 생성되는 것일 수도 있다.In another embodiment, the symbol constraint may be generated in consideration of both the related vulnerability of the recorded suspect element and the execution flow path depending on the recorded suspect element and the location of the recorded suspect element.

단계 S117에서, 상기 바이너리에 대하여 더 이상 실행할 인스트럭션이 존재하지 않는 경우, 기록된 의심 요소 및 기호 제약조건에 대한 데이터를 출력한다.In step S117, if there is no instruction to be executed for the binary, the data for the recorded suspect element and the symbol constraint condition is output.

다음으로, 도 7을 참조하여 단계 S200의 2차 실행 단계를 상세히 설명한다.Next, the secondary execution step of step S200 will be described in detail with reference to FIG.

단계 S201에서 분석 대상 바이너리 및 실행 파라미터를 제공받고, 단계 S203에서 1차 실행의 결과 출력된 의심 요소 별 기호 제약조건을 기호 실행기에 설정한다. 즉, 복수의 기호 제약조건이 병렬적으로 기호 실행기에 설정될 수 있다.The binary to be analyzed and the execution parameters are received in step S201, and the symbol constraint condition for each suspect element, which is output as a result of the first execution in step S203, is set in the symbol execution unit. That is, a plurality of symbol constraint conditions can be set to the symbol executor in parallel.

단계 S205에서 인스트럭션을 하나씩 기호 실행한다. 이미 설명한 바와 같이, 기호 실행 과정에서, 상기 분석 대상 바이너리의 모든 가능한 실행 흐름 경로를 확인할 필요는 없다. 따라서, 1차 실행의 결과로 출력된 테인트 기록이 가리키는 실행 흐름 경로에 한하여 기호 실행을 수행하고, 그 기호 실행 과정에서, 상기 설정된 기호 제약조건을 만족하는 인스트럭션이 발견되는지 확인할 수 있다.The instructions are executed one by one in step S205. As described above, in the symbol execution process, it is not necessary to check all possible execution flow paths of the analysis target binary. Therefore, it is possible to perform the symbol execution only for the execution flow path indicated by the tent record outputted as the result of the primary execution, and to confirm whether the instruction satisfying the set symbol constraint condition is found in the symbol execution process.

기호 실행 과정에서, 설정된 기호 제약조건들 중 하나를 만족하는 인스트럭션이 발견되면(S207), 상기 발견된 인스트럭션과 기록된 의심 요소 간의 비교 결과에 기반하여 분석 대상 바이너리에 존재하는 취약점을 판정한다(S207). 일 실시예에서, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 피연산자가 상기 의심 요소와 같은 위치의 것이라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정할 수 있다. 다른 실시예에서, 상기 발견된 인스트럭션이 상기 의심 요소가 실행된 후에 실행된 피연산자라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정할 수 있다.If an instruction satisfying one of the set symbol constraints is found in the execution of the symbol (S207), a vulnerability existing in the analysis target binary is determined based on the comparison result between the found instruction and the written suspect element (S207 ). In one embodiment, upon discovery of an instruction satisfying the symbol constraint, if the found operand is of the same location as the suspect element, it may be determined that the vulnerability exists in the binary. In another embodiment, if the found instruction is an operand executed after the suspect element is executed, it may be determined that the vulnerability exists in the binary.

단계 S211에서, 상기 바이너리에 대하여 더 이상 실행할 인스트럭션이 존재하지 않는 경우, 상기 바이너리에 존재하는 것으로 판정된 취약점에 대한 정보를 출력하고, 2차 실행 과정을 종료한다.In step S211, when there is no more instruction to be executed for the binary, information about the vulnerability determined to exist in the binary is output and the secondary execution process is terminated.

다음으로, 도 8을 참조하여 취약점 원인 위치 식별 단계를 상세히 설명한다.Next, referring to FIG. 8, the location identifying step causing the vulnerability will be described in detail.

단계 S301에서, 1차 실행 과정에서 크래쉬로 인한 강제 종료 위치(즉, 강제 종료된 인스트럭션의 메모리 주소)에서 크래쉬를 유발한 값을 조회한다. 이때 테인트 분석 중에 강제 종료되는 경우에 기록된 값을 이용할 수 있다.In step S301, a value causing a crash in the forced termination position due to a crash in the primary execution process (that is, the memory address of the forcibly terminated instruction) is inquired. At this time, the recorded value can be used in the case of forced termination during the taint analysis.

단계 S303에서, 상기 테인트 분석에 의하여 생성된 테인트 기록을 실행 역순으로 재정렬한다. 그 결과, 크래쉬 유발 값이 재정렬된 테인트 기록의 맨 앞에 위치할 것이다. 본 동작은 반드시 필요한 동작은 아니나 조회 과정에서 편리하게 크래쉬 유발 값의 변화 추이를 확인할 수 있도록 한다. In step S303, the tent records generated by the tent analysis are rearranged in the reverse order of execution. As a result, the crash trigger value will be placed at the front of the reordered taint record. This operation is not necessarily required but it is possible to confirm the change of the crush induced value conveniently in the inquiry process.

단계 S305에서, 크래쉬 유발값의 변화 추이를 추적한다. 상기 크래쉬 유발 값의 변화가 확인 된 경우(S307), 취약점의 원인 위치는 상기 재정렬 된 테인트 기록 상 상기 크래쉬 유발 값이 최초로 변화된 위치로 세팅된다(S309).In step S305, the change of the crash inducing value is tracked. If the change of the crash inducing value is confirmed (S307), the cause of the vulnerability is set to the position where the crash inducing value is initially changed on the re-arranged taint recording (S309).

반면에, 상기 크래쉬 유발 값의 변화가 확인되지 않거나, 또는 상기 크래쉬 유발 값을 확인할 수 없는 경우에는, 상기 취약점 원인 위치는 상기 1차 실행 결과에 따른 실행 흐름 경로 상에서 상기 강제 종료 위치에 가장 가까운(즉, 상기 재정렬 된 테인트 기록에서 가장 앞에 위치한) 의심 요소의 위치로 세팅 된다(S311). 이 경우는 크래쉬가 특정 값 때문이 아니라, 상기 의심 요소의 행위 자체에 의하여 발생된 것으로 가정하는 것이다.On the other hand, when the change of the crash inducing value is not confirmed or the crash inducing value can not be confirmed, the position of the cause of the vulnerability is the closest to the forced end position on the execution flow path according to the primary execution result That is, the most distant place in the reordered taint record) (S311). In this case, it is assumed that the crash is caused not by the specific value but by the action of the suspected element itself.

취약점의 원인 위치에 대한 정보가 출력될 때, 의심 원인 파악 방법(1: backward trace(단계 S309에 따른 것), 2: suspicious element location(단계 S311에 따른 것))과, 의심 원인 위치와 관련된 취약점의 종류에 대한 정보가 매치되어 출력될 수 있다.When the information about the cause of the vulnerability is output, the method of identifying the suspected cause (1: backward trace (according to step S309), 2: suspicious element location (according to step S311) Can be matched and output.

예를 들어, 크래쉬 유발 값 변화를 역추적하여 Integer Overflow 취약점의 원인 위치 발견한 경우, 아래의 정보가 출력될 수 있다. 아래의 정보는 순서대로 [의심 원인 파악 방법, 취약점 원인 위치, 취약점 종류]를 가리킨다.For example, if you find the location of the cause of an Integer Overflow vulnerability by backtracking a crash-induced value change, the following information may be output: The information below refers to [how to identify the cause of the suspect, the location of the vulnerability, and the type of vulnerability].

[1, 0x40012b, Integer Overflow][1, 0x40012b, Integer Overflow]

다음으로, 도 9를 참조하여 본 발명의 또 다른 실시예에 따른 바이너리 취약점 분석 방법을 설명한다. 본 실시예에 따른 바이너리 취약점 분석 방법은 크래쉬의 원인 위치에 대한 데이터를 출력한다. 본 실시예에 따른 바이너리 취약점 분석 방법은, 크래쉬의 원인 위치만 판정하는 것으로서, 테인트 분석을 위한 1차 실행 및 상기 테인트 분석에 따른 테인트 기록을 이용한 크래쉬 원인 위치 파악을 포함할 수 있다.Next, a method of analyzing a binary vulnerability according to another embodiment of the present invention will be described with reference to FIG. The binary vulnerability analysis method according to the present embodiment outputs data on the location of the cause of the crash. The method for analyzing binary vulnerability according to the present embodiment may include determining a cause of a crash only by performing a first execution for analyzing a taint and a taint recording according to the taint analysis.

단계 S400에서, 분석 대상인 바이너리(binary)의 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬(crash)를 유발하는 실행 흐름 경로(execution flow path) 및 상기 실행 흐름 경로 상의 의심 요소(suspicious element)를 기록한다. 본 단계의 동작은 도 4를 참조하여 설명된 방법이 일부 적용될 수 있음을 유의한다.In step S400, an execution flow path for performing a taint analysis through execution of a binary to be analyzed and causing a crash to the binary, and an execution flow path for causing a crash to the binary, Record the suspicious element. Note that the operation of this step can be partially applied to the method described with reference to Fig.

단계 S500에서, 상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 크래쉬 원인 위치로 결정한다. 본 단계의 동작은 도 8을 참조하여 설명된 방법이 일부 적용될 수 있음을 유의한다.If the crash inducing value does not change in accordance with the tent record according to the tent analysis of the crash inducing value, which is an operand value at the time of forced termination according to the occurrence of the crash, at step S500, The position of the suspected element closest to the end point is determined as the cause of the crash. Note that the operation of this step can be partially applied to the method described with reference to Fig.

다음으로, 도 10을 참조하여 본 발명의 또 다른 실시예에 따른 바이너리 취약점 분석 장치의 구성 및 동작을 설명한다. 도 10에 도시된 바와 같이, 본 실시예에 따른 취약점 분석 장치(100)는 프로세서(101) 및 메모리(102)를 포함하고, 몇몇 실시예들에서 스토리지(103), 네트워크 인터페이스(105) 및 시스템 버스(104) 중 적어도 하나를 더 포함할 수 있다. 메모리(102)에 로드 되어 저장되는 하나 이상의 인스트럭션은 프로세서(101)를 통하여 실행된다. 본 실시예에 따른 바이너리 취약점 분석 장치(100)는 별도의 설명이 없더라도, 도 1 내지 도 2를 참조하여 설명한 바이너리 취약점 분석 장치 관련 동작 및 도 3 내지 도 9를 참조하여 설명한 바이너리 취약점 분석 방법 관련 동작을 수행할 수 있는 점을 유의한다.Next, the configuration and operation of the binary vulnerability analysis apparatus according to another embodiment of the present invention will be described with reference to FIG. 10, the vulnerability analysis apparatus 100 according to the present embodiment includes a processor 101 and a memory 102, and in some embodiments, a storage 103, a network interface 105, And a bus 104. [0028] One or more instructions loaded and stored in the memory 102 are executed through the processor 101. The binary vulnerability analysis apparatus 100 according to the present embodiment may perform the operations related to the binary vulnerability analysis apparatus described with reference to FIGS. 1 and 2 and the operation related to the binary vulnerability analysis method described with reference to FIGS. Can be performed.

네트워크 인터페이스(105)는 외부 장치로부터 네트워크를 통해 제공 된 분석 대상 바이너리(130a)를 수신하고, 수신된 분석 대상 바이너리(130a)가 스토리지(103)에 저장되도록 할 수 있다.The network interface 105 may receive the analysis target binary 130a provided from the external device via the network and store the received analysis target binary 130a in the storage 103. [

상기 하나 이상의 인스트럭션은, 상기 분석 대상 바이너리에 실행 현황을 파악하는 코드를 삽입 하여 분석 대상 바이너리(130a)를 메모리에 로드(130b)하여 실행하는 바이너리 실행 인스트럭션(110a), 분석 대상인 바이너리의 1차 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬를 유발하는 실행 흐름 경로에 대한 정보를 출력하는 테인트 분석 인스트럭션(130a), 상기 실행 흐름 경로 상의 의심 요소를 판정하고, 상기 의심 요소와 관련된 취약점의 기호 제약조건을 생성하는 취약점 분류 인스트럭션(140a), 및 상기 바이너리의 상기 실행 흐름 경로에 대하여 기호 실행 방식의 2차 실행을 수행하고, 상기 기호 제약조건을 만족하는 인스트럭션 발견 시 상기 제3 인스트럭션에 통지하는 기호 실행 인스트럭션(120a)을 포함할 수 있다.Wherein the one or more instructions include a binary execution instruction (110a) for inserting a code for identifying execution status into the analysis target binary and loading (130b) the analysis target binary (130a) A taint analysis instruction (130a) for performing a taint analysis through the execution flow path (130a) to output information about an execution flow path causing a crash for the binary, a suspicious element on the execution flow path A vulnerability class instruction 140a for generating a symbol constraint of a vulnerability associated with a suspect element, and a second execution of a symbol execution method for the execution flow path of the binary, and when an instruction satisfying the symbol constraint condition is detected And a symbol execution instruction 120a for notifying the third instruction .

일 실시예에서, 취약점 분류 인스트럭션(140a)은 스토리지(103)에 저장된 의심 요소 DB(160)를 이용하여 상기 실행 흐름 경로 상의 의심 요소를 판정한다.In one embodiment, the vulnerability class instruction 140a uses the suspicious element DB 160 stored in the storage 103 to determine a suspect element on the execution flow path.

일 실시예에서, 취약점 분류 인스트럭션(140a)은 상기 제4 인스트럭션의 통지를 제공 받아 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션과 상기 의심 요소의 비교 결과에 기반하여 상기 바이너리에 상기 취약점이 존재하는 것으로 판정할 수 있다.In one embodiment, the vulnerability class instruction 140a may be provided with a notification of the fourth instruction and, upon discovery of an instruction satisfying the symbol constraint condition, It can be determined that a vulnerability exists.

일 실시예에서, 상기 하나 이상의 인스트럭션은 상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 상기 취약점의 원인 위치로 결정하는 취약점 원인 위치 파악 인스트럭션(150a)을 더 포함할 수 있다.In one embodiment, when the crash inducing value is not changed when the at least one instruction follows a timestamp according to the timestamp analysis of a crash inducing value, which is an operand value when forced termination occurs according to the occurrence of the crash, And a location determination instruction 150a for determining a location of a suspicious element closest to the forcible termination point on the execution flow path as a cause location of the vulnerability.

지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.The methods according to the embodiments of the present invention described so far can be performed by the execution of a computer program embodied in computer readable code. The computer program may be transmitted from a first computing device to a second computing device via a network, such as the Internet, and installed in the second computing device, thereby enabling it to be used in the second computing device. The first computing device and the second computing device all include a server device, a physical server belonging to a server pool for cloud services, and a fixed computing device such as a desktop PC.

상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.The computer program may be stored in a recording medium such as a DVD-ROM, a flash memory device, or the like.

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.While the present invention has been described in connection with what is presently considered to be practical exemplary embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, I can understand that. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive.

Claims (14)

컴퓨팅 장치에 의하여 수행되는 방법에 있어서,
분석 대상인 바이너리(binary)의 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬(crash)를 유발하는 실행 흐름 경로(execution flow path) 및 상기 실행 흐름 경로 상의 의심 요소(suspicious element)와 관련된 취약점의 기호 제약조건(symbolic constraint)을 기록하는 1차 실행 단계; 및
상기 바이너리의 상기 실행 흐름 경로에 대하여 기호 실행(symbolic execution) 방식의 2차 실행을 수행하되, 상기 기호 제약조건을 만족하는 인스트럭션(instruction) 발견 시, 상기 발견된 인스트럭션과 상기 의심 요소의 비교 결과에 기반하여 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 2차 실행 단계를 포함하는,
바이너리 취약점 분석 방법.
A method performed by a computing device,
The execution flow path for causing a crash to the binary by performing a taint analysis through execution of a binary to be analyzed and a suspicious element on the execution flow path, a primary execution step of recording a symbolic constraint of a vulnerability associated with an element; And
Performing a second execution of a symbolic execution method on the execution flow path of the binary, when an instruction satisfying the symbol constraint condition is found, a result of comparison between the found instruction and the suspicious element A second execution step of determining that the vulnerability exists in the binary,
How to analyze binary vulnerability.
제1항에 있어서,
상기 2차 실행 단계는,
상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션이 상기 의심 요소와 같은 위치의 것이라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the secondary execution step comprises:
Determining that the vulnerability exists in the binary if the found instruction is at the same location as the suspect element upon discovery of an instruction satisfying the symbol constraint;
How to analyze binary vulnerability.
제1 항에 있어서,
상기 2차 실행 단계는,
상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 피연산자가 상기 의심 요소의 인스트럭션이 실행된 후에 실행된 피연산자라면, 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the secondary execution step comprises:
Determining that the vulnerability is present in the binary if the found operand is an operand executed after the suspect element instruction is executed upon discovery of an instruction satisfying the symbol constraint condition;
How to analyze binary vulnerability.
제1 항에 있어서,
상기 2차 실행 단계는,
상기 바이너리의 상기 실행 흐름 경로에 한정하여 상기 2차 실행을 수행하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the secondary execution step comprises:
Performing the secondary execution only on the execution flow path of the binary,
How to analyze binary vulnerability.
제1 항에 있어서,
상기 1차 실행 단계는,
상기 테인트 분석의 결과 출력된 정보를 이용하여 테인트 된 요소를 기록하되, 상기 테인트 된 요소는 테인트 된 피연산자, 테인트 된 메모리 주소 및 테인트 된 레지스터를 포함하는 단계; 및
상기 테인트 된 요소 중 적어도 일부를 의심 요소로 결정하는 의심 요소 판정 단계를 포함하되,
상기 의심 요소 판정 단계는,
상기 바이너리를 수도 코드(pseudo code)로 변환하는 단계; 및
상기 변환 된 바이너리의 수도 코드 중 상기 테인트 된 요소에 대응되는 부분 중에서, 기 저장된 의심 수도 코드 패턴에 매치되는 부분의 테인트 된 요소를 의심 요소로 판정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the first execution step comprises:
Recording the tennted elements using information output as a result of the tenns analysis, the tennted elements including a tenned operand, a tennted memory address, and a tennted register; And
And a suspicious element determination step of determining at least a part of the tentiated elements as a suspected element,
The suspected element determining step includes:
Converting the binary into pseudo code; And
Judging a tentative element of a portion of the converted binary number code corresponding to the tentative element that matches the previously stored suspect tentative code pattern as a suspicious element;
How to analyze binary vulnerability.
제1 항에 있어서,
상기 1차 실행 단계는,
상기 테인트 분석의 결과 출력된 정보를 이용하여 테인트 된 요소를 기록하되, 상기 테인트 된 요소는 테인트 된 피연산자, 테인트 된 메모리 주소 및 테인트 된 레지스터를 포함하는 단계; 및
상기 테인트 된 요소 중 일부를 의심 요소로 결정하는 의심 요소 판정 단계를 포함하되,
상기 의심 요소 판정 단계는,
상기 테인트 된 요소 중에서, 기 저장된 의심 피연산자 패턴에 매치되는 부분의 테인트 된 요소를 의심 요소로 판정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the first execution step comprises:
Recording the tennted elements using information output as a result of the tenns analysis, the tennted elements including a tenned operand, a tennted memory address, and a tennted register; And
And a suspicious element determination step of determining a part of the tentiated elements as a suspected element,
The suspected element determining step includes:
Determining a tentative element of a portion of the tentative element that matches a previously stored suspected operand pattern as a suspect element.
How to analyze binary vulnerability.
제1 항에 있어서,
상기 1차 실행 단계는,
상기 테인트 분석의 결과 출력된 정보를 이용하여 테인트 된 요소를 기록하되, 상기 테인트 된 요소는 테인트 된 피연산자, 테인트 된 메모리 주소 및 테인트 된 레지스터를 포함하는 단계; 및
상기 테인트 된 요소 중 일부를 의심 요소로 결정하는 의심 요소 판정 단계를 포함하되,
상기 의심 요소 판정 단계는,
상기 테인트 된 요소 중에서, 기 저장된 의심 인스트럭션 패턴에 매치되는 부분의 테인트 된 요소의 인스트럭션을 의심 요소로 판정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the first execution step comprises:
Recording the tennted elements using information output as a result of the tenns analysis, the tennted elements including a tenned operand, a tennted memory address, and a tennted register; And
And a suspicious element determination step of determining a part of the tentiated elements as a suspected element,
The suspected element determining step includes:
Determining an instruction of a tentative element of a portion of the tentative element that matches a previously stored suspicious instruction pattern as a suspected element.
How to analyze binary vulnerability.
제1 항에 있어서,
상기 1차 실행 단계는,
상기 바이너리의 실행을 위한 실행 파라미터를 이용하여 상기 제1 차 실행을 수행하는 단계; 및
상기 실행 파라미터를 이용하여 상기 테인트 분석을 위한 테인트 소스를 세팅하는 단계를 포함하되,
상기 테인트 소스를 세팅하는 단계는,
상기 바이너리의 디버그 심볼(debug symbol)에 "main"이 존재하지 않는 경우, 상기 제1 차 실행 과정에서 상기 실행 파라미터를 로드하는 위치를 테인트 소스로 세팅하는 단계를 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
Wherein the first execution step comprises:
Performing the first-order execution using an execution parameter for executing the binary; And
And setting a tent source for the tent analysis using the execution parameter,
Wherein setting the tent source comprises:
Setting a location to load the execution parameter in the first execution step as a tentative source when " main " does not exist in a debug symbol of the binary,
How to analyze binary vulnerability.
제1 항에 있어서,
상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 상기 취약점의 원인 위치로 결정하는 취약점 원인 위치 파악 단계를 더 포함하는,
바이너리 취약점 분석 방법.
The method according to claim 1,
When the crash inducing value does not change according to the tent record according to the tent analysis of the crash inducing value, which is an operand value when the forced termination occurs according to the occurrence of the crash, And a location determination step of determining a location of a nearby suspect element as a location of a cause of the vulnerability,
How to analyze binary vulnerability.
제9 항에 있어서,
상기 위치 파악 단계는,
상기 취약점의 원인 위치의 타입을 상기 강제 종료 지점에서 가장 가까운 상기 크래쉬 유발 값의 변화 지점인 제1 타입과, 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치인 제2 타입으로 구별하여 출력하는 단계를 포함하는,
바이너리 취약점 분석 방법.
10. The method of claim 9,
Wherein the positioning step comprises:
Distinguishing a type of a cause location of the vulnerability from a first type that is a change point of the crash inducing value closest to the forced end point and a second type that is a position of a suspected element closest to the forced end point and outputs the type; Including,
How to analyze binary vulnerability.
컴퓨팅 장치와 결합하여,
제1 내지 제10 항 중 어느 한항의 방법을 실행시키기 위하여,
컴퓨터로 읽을 수 있는 기록 매체에 저장된 소프트웨어.
In combination with the computing device,
11. A method according to any one of claims 1 to 10,
Software stored on computer readable media.
컴퓨팅 장치에 의하여 수행되는 방법에 있어서,
분석 대상인 바이너리(binary)의 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬(crash)를 유발하는 실행 흐름 경로(execution flow path) 및 상기 실행 흐름 경로 상의 의심 요소(suspicious element)를 기록하는 단계; 및
상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 크래쉬 원인 위치로 결정하는 단계를 포함하는,
바이너리 취약점 분석 방법.
A method performed by a computing device,
The execution flow path for causing a crash to the binary by performing a taint analysis through execution of a binary to be analyzed and a suspicious element on the execution flow path, element; And
When the crash inducing value does not change according to the tent record according to the tent analysis of the crash inducing value, which is an operand value when the forced termination occurs according to the occurrence of the crash, Determining a location of a nearby suspect element as a location of a crash origin;
How to analyze binary vulnerability.
프로세서; 및
상기 프로세서에서 실행 되는 하나 이상의 인스트럭션 및 하나 이상의 분석 대상 바이너리를 저장하는 메모리를 포함하되,
상기 하나 이상의 인스트럭션은,
상기 분석 대상 바이너리에 실행 현황을 파악하는 코드를 삽입 하여 상기 분석 대상 바이너리를 실행하는 제1 인스트럭션;
분석 대상인 바이너리의 1차 실행을 통한 테인트 분석(taint analysis)을 수행하여, 상기 바이너리에 대하여 크래쉬를 유발하는 실행 흐름 경로에 대한 정보를 출력하는 제2 인스트럭션;
상기 실행 흐름 경로 상의 의심 요소를 판정하고, 상기 의심 요소와 관련된 취약점의 기호 제약조건을 생성하는 제3 인스트럭션; 및
상기 바이너리의 상기 실행 흐름 경로에 대하여 기호 실행 방식의 2차 실행을 수행하고, 상기 기호 제약조건을 만족하는 피연산자 발견 시 상기 제3 인스트럭션에 통지하는 제4 인스트럭션을 포함하되,
상기 제3 인스트럭션은 상기 제4 인스트럭션의 통지를 제공 받아 상기 기호 제약조건을 만족하는 인스트럭션 발견 시, 상기 발견된 인스트럭션과 상기 의심 요소의 비교 결과에 기반하여 상기 바이너리에 상기 취약점이 존재하는 것으로 판정하는,
전자 장치.
A processor; And
A memory for storing one or more instructions executed on the processor and one or more analyzed binaries,
Wherein the at least one instruction comprises:
A first instruction for inserting a code for grasping an execution state into the analysis target binary and executing the analysis target binary;
A second instruction for performing a taint analysis through a first execution of a binary to be analyzed and outputting information about an execution flow path causing a crash to the binary;
A third instruction for determining a suspected element on the execution flow path and for generating a symbol constraint condition of the vulnerability associated with the suspected element; And
And a fourth instruction for performing a second execution of the symbol execution method on the execution flow path of the binary and notifying the third instruction when an operand satisfying the symbol constraint condition is found,
The third instruction is provided with the notification of the fourth instruction and when the instruction satisfying the symbol constraint condition is found, it is determined that the vulnerability exists in the binary based on a result of the comparison between the found instruction and the suspected element ,
Electronic device.
제13 항에 있어서,
상기 하나 이상의 인스트럭션은,
상기 크래쉬의 발생에 따라 강제 종료될 때의 피연산자 값인 크래쉬 유발 값의 상기 테인트 분석에 따른 테인트 기록에 따를 때 상기 크래쉬 유발 값이 변화되지 않는 경우, 상기 실행 흐름 경로 상의 상기 강제 종료 지점에서 가장 가까운 의심 요소의 위치를 상기 취약점의 원인 위치로 결정하는 제5 인스트럭션을 더 포함하는,
전자 장치.
14. The method of claim 13,
Wherein the at least one instruction comprises:
When the crash inducing value does not change according to the tent record according to the tent analysis of the crash inducing value, which is an operand value when the forced termination occurs according to the occurrence of the crash, Further comprising a fifth instruction to determine a location of a nearby suspect element as a location of the vulnerability.
Electronic device.
KR1020180141200A 2018-11-16 2018-11-16 Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries KR102090229B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180141200A KR102090229B1 (en) 2018-11-16 2018-11-16 Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180141200A KR102090229B1 (en) 2018-11-16 2018-11-16 Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020170152288A Division KR101921052B1 (en) 2017-11-15 2017-11-15 Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries

Publications (2)

Publication Number Publication Date
KR20190055776A true KR20190055776A (en) 2019-05-23
KR102090229B1 KR102090229B1 (en) 2020-03-17

Family

ID=66681270

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180141200A KR102090229B1 (en) 2018-11-16 2018-11-16 Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries

Country Status (1)

Country Link
KR (1) KR102090229B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210144110A (en) 2020-05-21 2021-11-30 삼성에스디에스 주식회사 Method and apparatus for detecting vulnerability of multi-language program
KR102403351B1 (en) 2020-11-17 2022-05-27 한국인터넷진흥원 Method for generating vulnerability identification code of binary, and apparatus implementing the same method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530132B1 (en) 2013-12-10 2015-06-18 한양대학교 산학협력단 Method and apparatus for expanding execution path of binary code using symbolic execution
KR20170096440A (en) * 2016-02-16 2017-08-24 한국인터넷진흥원 Method and apparatus for analysing simility of detecting malignant app

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530132B1 (en) 2013-12-10 2015-06-18 한양대학교 산학협력단 Method and apparatus for expanding execution path of binary code using symbolic execution
KR20170096440A (en) * 2016-02-16 2017-08-24 한국인터넷진흥원 Method and apparatus for analysing simility of detecting malignant app

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김성호 외 1인, "동적오염분석과 SMT 해석기를 이용한 소프트웨어 보안 취약점 분석 연구", KIISE TRANSACTIONS ON COMPUTING PRACTICES, 2015.03. pp.257-262. *
박선녀 외 3인, "심볼릭 실행 기반의 바이너리 코드 취약점 분석 자동화를 위한 도구", 한국정보과학회 학술발표논문집, 2017.06. pp.1917-1919. *

Also Published As

Publication number Publication date
KR102090229B1 (en) 2020-03-17

Similar Documents

Publication Publication Date Title
KR101921052B1 (en) Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries
US20090113550A1 (en) Automatic Filter Generation and Generalization
CN111967017B (en) Method, device, terminal equipment and storage medium for generating dependency relationship
CN112733150B (en) Firmware unknown vulnerability detection method based on vulnerability analysis
US9026612B2 (en) Generating a custom parameter rule based on a comparison of a run-time value to a request URL
CN102867144A (en) Method and device for detecting and removing computer viruses
US10229273B2 (en) Identifying components for static analysis of software applications
KR101696694B1 (en) Method And Apparatus For Analysing Source Code Vulnerability By Using TraceBack
KR20190055776A (en) Method and apparatus for identifying security vulnerability and cause point thereof of executable binaries
KR20180129623A (en) Apparatus for statically analyzing assembly code including assoxiated multi files
KR101228902B1 (en) Cloud Computing-Based System for Supporting Analysis of Malicious Code
US11868465B2 (en) Binary image stack cookie protection
US20240160748A1 (en) Method And System For Data Flow Monitoring To Identify Application Security Vulnerabilities And To Detect And Prevent Attacks
KR102021383B1 (en) Method and apparatus for analyzing program by associating dynamic analysis with static analysis
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
CN111240728A (en) Application program updating method, device, equipment and storage medium
Zhou et al. Non-distinguishable inconsistencies as a deterministic oracle for detecting security bugs
US11593249B2 (en) Scalable points-to analysis via multiple slicing
CN114741700A (en) Public component library vulnerability availability analysis method and device based on symbolic taint analysis
US20120144371A1 (en) Using exception information
Le et al. Hardware trojan detection and functionality determination for soft IPs
US8321844B2 (en) Providing registration of a communication
US11886589B2 (en) Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method
JP2010191580A (en) File management method, system, and program
WO2023201621A1 (en) Private information leak detection method and apparatus, and electronic device

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant