KR20200080541A - Apparatus and method for detecting vulnerability of software - Google Patents

Apparatus and method for detecting vulnerability of software Download PDF

Info

Publication number
KR20200080541A
KR20200080541A KR1020180170099A KR20180170099A KR20200080541A KR 20200080541 A KR20200080541 A KR 20200080541A KR 1020180170099 A KR1020180170099 A KR 1020180170099A KR 20180170099 A KR20180170099 A KR 20180170099A KR 20200080541 A KR20200080541 A KR 20200080541A
Authority
KR
South Korea
Prior art keywords
software
program path
input
test input
seed
Prior art date
Application number
KR1020180170099A
Other languages
Korean (ko)
Other versions
KR102190727B1 (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 KR1020180170099A priority Critical patent/KR102190727B1/en
Publication of KR20200080541A publication Critical patent/KR20200080541A/en
Application granted granted Critical
Publication of KR102190727B1 publication Critical patent/KR102190727B1/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The present invention relates to an apparatus for detecting the vulnerability of software based on a program path and to a method thereof. The method for detecting the vulnerability of software comprises the steps of: randomly selecting one seed from a seed pool; generating a test input by applying a preset attack rule with respect to the selected seed; inputting the test input into target software; determining whether a new program path of the software has been searched by the test input; and adding the test input to the seed pool when the new program path is searched.

Description

프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법{APPARATUS AND METHOD FOR DETECTING VULNERABILITY OF SOFTWARE}Apparatus and method for detecting software vulnerability based on program path{APPARATUS AND METHOD FOR DETECTING VULNERABILITY OF SOFTWARE}

본원은 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for detecting a software vulnerability based on a program path.

소프트웨어가 의도대로 동작하지 않는 버그(Bug)들 중에 이를 악용하면 정보를 유출하거나 데이터가 변경되는 등의 피해를 주는 버그가 있을 수 있고, 이렇게 악용 가능한 버그를 소프트웨어 취약점(Vulnerability)라 부르며, 취약점을 이용한 공격에는 대표적으로 메모리를 덮어씌워 원하는 코드를 실행시키는 'Buffer Overflow' 공격, 'SQL 인젝션' 및 '크로스 사이트 스크립팅' 등이 존재할 수 있다.Among the bugs in which the software does not operate as intended, there may be a bug that causes damage such as information leakage or data modification, and this exploitable bug is called a software vulnerability, Attacks used may include'Buffer Overflow' attacks,'SQL injection', and'Cross Site Scripting', which typically execute the desired code by overwriting the memory.

일반적으로 소프트웨어의 취약점을 검출하기 위한 퍼징(Fuzzing)기법은 유효한, 예상치 않은, 비정상적인 또는 무작위 데이터를 소프트웨어에 전달하여 에러를 유도하는 방법을 일컫는다. 이러한 퍼징 기법은 테스트 입력을 생성하기 위하여 사용하는 정보의 종류에 따라 mutation기반, grammar기반, 블랙박스 퍼징, 화이트박스 퍼징 등으로 나뉠 수 있다.In general, a fuzzing technique for detecting a vulnerability in software refers to a method of inducing errors by passing valid, unexpected, abnormal or random data to the software. These purging techniques can be divided into mutation-based, grammar-based, black-box purging, and white-box purging depending on the type of information used to generate test input.

특히나 IoT(Internet of Things, 사물 인터넷)기술이 점차 발전함에 따라, 새로운 IoT 서비스를 제공하기 위한 소프트웨어 또는 라이브러리들이 개발되고 있으며, 이러한 소프트웨어 또는 라이브러리에 대한 취약점 분석도 필수적이다. 특히나, IIoT(Industrial Internet of Things, 산업분야 사물 인터넷) 환경에서 사용되는 소프트웨어 제품에서 취약점이 존재할 경우, 원격에서 취약점을 이용한 공격을 통해 물리적 피해가 발생할 수 있기 때문에 정확한 취약점 검출 방법이 요구된다.In particular, as the Internet of Things (IoT) technology gradually develops, software or libraries for providing new IoT services are being developed, and vulnerability analysis of these software or libraries is also essential. In particular, if a vulnerability exists in a software product used in an IIoT (Industrial Internet of Things) environment, an accurate vulnerability detection method is required because physical damage may occur through an attack using the vulnerability remotely.

하지만, 이러한 IoT 기기에서 사용되기 위한 소프트웨어 및 라이브러리는 소스 코드가 공개되지 않는 경우가 많아, 효율적인 White Box기반 테스트가 불가능한 실정이다. However, software and libraries for use in such IoT devices are often not available, so efficient white box-based testing is impossible.

또한, 기존의 Black Box 기반 취약점 분석 방법의 경우에도, 대상 소프트웨어의 소스 코드 정보를 활용할 수 없기 때문에 방대한 양의 테스트 케이스가 요구되므로 효율성이 떨어지는 한계가 있다. In addition, even in the case of the existing black box-based vulnerability analysis method, since the source code information of the target software cannot be utilized, a vast amount of test cases are required, so the efficiency is limited.

본원의 배경이 되는 기술은 한국특허공개공보 제 10-1857289호에 개시되어 있다.The background technology of the present application is disclosed in Korean Patent Publication No. 10-1857289.

본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 시드를 기반으로 테스트 입력을 생성하고, 단순히 테스트를 진행하는데 그치지 않고 테스트 과정에서 일부 요소들을 모니터링 하여 대상 소프트웨어의 다른 코드 영역을 탐색한 것으로 예측되는 경우 해당 테스트 입력을 새롭게 시드로 추가하는 시드 확장 기법을 활용한 퍼징 기법으로 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법을 제공하는 것을 목적으로 한다.The present application is intended to solve the above-mentioned problems of the prior art, and generates a test input based on a seed, and predicts that other elements of the target software are searched by monitoring some elements in the test process, not just performing a test. The purpose is to provide a device and method for detecting software vulnerability based on a program path as a fuzzing technique using a seed extension technique that adds the corresponding test input as a new seed.

다만, 본원의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들도 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.However, the technical problems to be achieved by the embodiments of the present application are not limited to the technical problems as described above, and other technical problems may exist.

상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은, 시드풀로부터 하나의 시드를 임의로 선정하는 단계, 상기 선정된 시드에 대해 기 설정된 공격 규칙을 적용하여 테스트 입력을 생성하는 단계, 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계, 상기 테스트 입력에 의해 소프트웨어의 새로운 프로그램 경로가 탐색되었는지 여부를 판단하는 단계 및 새로운 프로그램 경로가 탐색되었을 경우, 상기 테스트 입력을 상기 시드풀에 추가하는 단계를 포함할 수 있다.As a technical means for achieving the above technical problem, a software vulnerability detection method based on a program path according to an embodiment of the present application comprises: randomly selecting one seed from a seed pool, and a predetermined attack on the selected seed Generating a test input by applying a rule, inputting the test input into a target software, determining whether a new program path of software has been searched by the test input, and when a new program path has been searched, the And adding a test input to the seedpool.

또한, 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은, 상기 선정된 시드를 이용하여 테스트 입력을 생성할 수 있는지 여부를 판단하는 단계를 더 포함할 수 있다.In addition, the software vulnerability detection method based on the program path may further include determining whether a test input can be generated using the selected seed.

또한, 상기 시드는 대상 소프트웨어의 정상입력 데이터 또는 비정상입력 데이터일 수 있다.Further, the seed may be normal input data or abnormal input data of the target software.

또한, 상기 기 설정된 공격규칙은, 무작위의 비트 연산, 경계값(border values)의 적용 및 필드 크기 변경 중 적어도 하나일 수 있다.Further, the preset attack rule may be at least one of random bit operation, application of border values, and field size change.

또한, 상기 새로운 프로그램 경로가 탐색되었는지 여부를 판단하는 단계는, 선행된 테스트 입력을 대상 소프트웨어에 입력하는 단계에 의해 실행된 바 없는 상기 대상 소프트웨어에 포함된 새로운 소스코드 영역이 실행되었는지 여부를 판단하는 것일 수 있다.Further, the step of determining whether the new program path has been searched may include determining whether a new source code region included in the target software has not been executed by inputting a preceding test input to the target software. May be

또한, 상기 새로운 소스코드 영역이 실행되었는지 여부를 판단하는 것은, 대상 소프트웨어의 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 수행될 수 있다.In addition, determining whether the new source code area has been executed analyzes at least one of code coverage change amount, input/output response time change, output value change, memory utilization amount, and other system information of the target software. Can be done by

또한, 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은, 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계 후, 크래시를 검출하는 단계를 더 포함할 수 있다.In addition, the software vulnerability detection method based on the program path may further include detecting a crash after inputting the test input to the target software.

또한, 상기 크래시를 검출하는 단계는 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계로 인해 대상 소프트웨어에서 크래시가 발생한 경우, 해당 테스트 입력을 로그로 저장하는 것일 수 있다.In addition, when the crash occurs in the target software due to the step of inputting the test input to the target software, the detecting of the crash may be to store the corresponding test input as a log.

한편, 상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치는, 대상 소프트웨어의 정상입력 또는 비정상입력인 시드에 대한 정보를 저장하는 제1저장부, 상기 제1저장부로부터 시드 정보를 수신하여 상기 시드 정보를 기반으로 새로운 테스트 입력을 생성하는 입력생성부, 상기 테스트 입력을 대상 소프트웨어에 입력하고 대상 소프트웨어의 응답을 분석하는 테스트부 및 상기 테스트 입력에 의해 대상 소프트웨어의 새로운 프로그램 경로가 탐색되었는지를 탐지하는 프로그램 경로 탐지부를 포함할 수 있다.On the other hand, as a technical means for achieving the above technical problem, the software vulnerability detection device based on the program path according to an embodiment of the present application, the first storage for storing information about the seed of the normal or abnormal input of the target software An input generating unit for receiving a seed information from the first storage unit and generating a new test input based on the seed information, a test unit for inputting the test input to the target software and analyzing the response of the target software, and the test It may include a program path detection unit for detecting whether a new program path of the target software is searched by input.

또한, 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치는, 상기 테스트부가 소프트웨어의 응답을 분석하는 과정에서 크래시가 발생한 경우, 해당 테스트 입력에 대한 정보를 로그 형태로 저장하는 제 2저장부를 더 포함할 수 있다.In addition, the software vulnerability detection apparatus based on the program path may further include a second storage unit that stores information about the corresponding test input in a log form when a crash occurs in the process of analyzing the response of the software by the test unit.

또한, 상기 프로그램 경로 탐지부는, 상기 테스트 입력에 따른 소프트웨어의 응답에 관하여, 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 상기 대상 소프트웨어의 새로운 프로그램 경로가 탐색되었는지를 탐지할 수 있다.In addition, the program path detection unit, with respect to the response of the software according to the test input, the code coverage (Code Coverage) change amount, the change in the input and output response time, the change in the output value, memory By analyzing at least one of utilization amount and other system information, it is possible to detect whether a new program path of the target software has been searched.

상술한 과제 해결 수단은 단지 예시적인 것으로서, 본원을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 추가적인 실시예가 존재할 수 있다.The above-described problem solving means are merely exemplary and should not be construed as limiting the present application. In addition to the exemplary embodiments described above, additional embodiments may exist in the drawings and detailed description of the invention.

전술한 본원의 과제 해결 수단에 의하면, 본원에 따른 소프트웨어 취약점 검출 장치 및 방법은, 프로그램 경로 탐색 여부에 따라 시드가 확장되기 때문에 사용자가 초기 시드를 잘못 생성한 경우에도 뛰어난 취약점 검출 성능을 가질 수 있다.According to the above-described problem solving means of the present application, the software vulnerability detection apparatus and method according to the present application can have excellent vulnerability detection performance even when the user incorrectly generates the initial seed because the seed is expanded according to whether or not the program path is searched. .

전술한 본원의 과제 해결 수단에 의하면, 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법은, 소스 코드 정보에 접근 가능한 White Box 테스트 방식과 연계하여 Code Coverage의 변화량을 통해 각 테스트 입력에 의해 대상 소프트웨어의 프로그램 경로가 변화했는지 여부를 판단할 수 있다.According to the above-described problem solving means of the present application, the software vulnerability detection device and method based on the program path, the program of the target software by each test input through the change amount of the code coverage in connection with the white box test method accessible to source code information It can be determined whether the route has changed.

전술한 본원의 과제 해결 수단에 의하면, 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치 및 방법은, 소스 코드 정보를 활용할 수 없는 Black Box 테스트 방식에 있어서도, 입출력 응답시간의 차이, 출력값의 변화 및 기타 시스템 정보 중 적어도 하나의 정보를 활용하여 각 테스트 입력에 의해 대상 소프트웨어의 프로그램 경로가 변화했는지 여부를 판단할 수 있어 기존Black Box 기반 테스트의 한계점을 극복할 수 있다.According to the above-described problem solving means of the present application, the software vulnerability detection apparatus and method based on the program path, among black box test methods that cannot utilize source code information, among input/output response time differences, output value changes, and other system information By using at least one piece of information, it is possible to determine whether the program path of the target software has been changed by each test input, thereby overcoming the limitations of the existing black box-based test.

도 1은 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치의 개략적인 블록도이다.
도 2는 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법에 대한 동작흐름도이다.
도 3은 본원의 일 실시예에 따른 선정된 시드를 이용하여 테스트 입력을 생성할 수 있는지 여부를 판단하는 단계에 대한 동작흐름도이다.
도 4는 본원의 일 실시예에 따른 크래시를 검출 하는 단계에 대한 동작흐름도이다.
도 5는 본원의 일 실시예에 따른 프로그램 경로 탐지부의 동작을 설명하기 위하여 도시한 도면이다.
1 is a schematic block diagram of a software vulnerability detection apparatus based on a program path according to an embodiment of the present application.
2 is an operation flow diagram of a software vulnerability detection method based on a program path according to an embodiment of the present application.
3 is an operation flow chart for determining whether it is possible to generate a test input using a selected seed according to an embodiment of the present application.
4 is an operation flow chart for detecting a crash according to an embodiment of the present application.
5 is a diagram illustrating an operation of a program path detection unit according to an embodiment of the present application.

아래에서는 첨부한 도면을 참조하여 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 실시예를 상세히 설명한다. 그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present application will be described in detail with reference to the accompanying drawings so that those skilled in the art to which the present application pertains may easily practice. However, the present application may be implemented in various different forms and is not limited to the embodiments described herein. In addition, in order to clearly describe the present application in the drawings, parts irrelevant to the description are omitted, and like reference numerals are assigned to similar parts throughout the specification.

본원 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. Throughout this specification, when a part is "connected" to another part, this includes not only "directly connected" but also "electrically connected" with another element in between. do.

본원 명세서 전체에서, 어떤 부재가 다른 부재 "상에", "상부에", "상단에", "하에", "하부에", "하단에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.Throughout this specification, when one member is positioned on another member “on”, “on top”, “top”, “bottom”, “bottom”, “bottom”, it means that one member is on another member This includes cases where there is another member between the two members as well as when in contact.

본원 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.Throughout the present specification, when a part “includes” a certain component, it means that the component may further include other components, not to exclude other components, unless specifically stated to the contrary.

본원은 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for detecting a software vulnerability based on a program path.

도1은 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)의 개략적인 블록도이다.1 is a schematic block diagram of a software vulnerability detection apparatus 100 based on a program path according to an embodiment of the present application.

한편, 프로그램 경로에 기반한 소프트웨어 취약점 검출 창치(100)는 서버, 데스크탑 PC, 노트북, 스마트폰, 태블릿PC 및 기타 중앙처리장치를 포함하는 산업용장비 등에 탑재되어, 각 장치에서 동작하는 소프트웨어의 취약성을 검출할 수 있다.Meanwhile, the software vulnerability detection window 100 based on the program path is mounted on industrial equipment including a server, a desktop PC, a laptop, a smart phone, a tablet PC, and other central processing devices to detect the vulnerability of software operating on each device. can do.

도1을 참조하면, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)는, 제1저장부(110), 입력생성부(120), 테스트부(130), 프로그램 경로 탐지부(140) 및 제2저장부(150)를 포함할 수 있다.Referring to Figure 1, the software vulnerability detection apparatus 100 based on the program path according to an embodiment of the present application, the first storage unit 110, the input generation unit 120, the test unit 130, the program path detection The unit 140 and the second storage unit 150 may be included.

도1을 참조하면, 제1저장부(110)는 대상 소프트웨어의 정상입력 또는 비정상입력인 시드에 대한 정보를 저장할 수 있으며, 시드풀은 하나 이상의 시드로 이루어진 시드의 집합을 의미한다.Referring to FIG. 1, the first storage unit 110 may store information about a seed that is a normal input or an abnormal input of the target software, and the seed pool refers to a set of seeds consisting of one or more seeds.

본원의 일 실시예에 따르면, 제1저장부(110)의 초기 시드풀 정보는 사용자에 의해 정의될 수 있으며, 상기 시드는 대상 소프트웨어의 종류에 따라 패킷, 파일 등의 다양한 형태를 가질 수 있다.According to one embodiment of the present application, the initial seed pool information of the first storage unit 110 may be defined by a user, and the seed may have various forms, such as packets and files, according to the type of target software.

본원의 일 실시예에 따르면, 제1저장부(110)가 프로그램 경로 탐지부(140)로부터 시드 추가 명령(54)을 수신한 경우, 해당 테스트 입력에 대한 정보가 새로운 시드 정보로서 제1저장부(110)에 추가 될 수 있다. 달리 말해, 제1저장부(110)에 저장된 시드의 수는 가변적일 수 있다.According to an embodiment of the present disclosure, when the first storage unit 110 receives the seed addition command 54 from the program path detection unit 140, the information on the corresponding test input is the first storage unit as new seed information. It can be added to 110. In other words, the number of seeds stored in the first storage unit 110 may be variable.

또한, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)는 제1저장부(110)에 저장된 모든 시드가 테스트 입력으로 변환 되어 소프트웨어에 입력되는 테스트 과정을 마친 경우를 취약점 검출의 종료 조건으로 할 수 있다.In addition, the software vulnerability detection apparatus 100 based on the program path according to an embodiment of the present application detects a vulnerability when all the seeds stored in the first storage unit 110 are converted into test inputs to complete a test process input to the software. It can be made as a termination condition.

또한, 입력생성부(120)는 제1저장부(110)로부터 시드 정보를 수신하여 상기 시드 정보를 기반으로 새로운 테스트 입력을 생성할 수 있다.Also, the input generating unit 120 may receive seed information from the first storage unit 110 and generate a new test input based on the seed information.

본원의 일 실시예에 따르면, 입력생성부(120)는 제1저장부(110)의 시드 중 테스트 된 적이 없는 시드 정보만을 선별하여 수신할 수 있다.According to one embodiment of the present application, the input generation unit 120 may select and receive only the seed information that has not been tested among the seeds of the first storage unit 110.

본원의 일 실시예에 따르면, 입력생성부(120)는 시드 정보를 기반으로 테스트 입력을 생성하는 단계에 앞서 상기 선정된 시드를 이용하여 테스트 입력을 생성할 수 있는지 여부를 판단하는 단계를 수행할 수 있다.According to an embodiment of the present application, the input generating unit 120 performs a step of determining whether a test input can be generated using the selected seed prior to the step of generating a test input based on the seed information. Can.

본원의 일 실시예에 따르면, 입력생성부(120)는 상기 선정된 시드에 기 설정된 공격 규칙을 적어도 하나 이상 적용한 테스트 입력 후보군을 생성하고, 해당 테스트 입력 후보군 전부가 기존의 취약점 검출 과정에서 테스트 입력으로 사용된 적이 있는지를 판단할 수 있다.According to one embodiment of the present application, the input generation unit 120 generates a test input candidate group to which at least one preset attack rule is applied to the selected seed, and all of the test input candidate groups are input to the test in the existing vulnerability detection process Can be used to determine if it has been used.

본원의 일 실시예에 따르면, 상기 새로운 테스트 입력을 생성할 수 있는지를 판단한 결과, 시드 정보에 의한 테스트 입력 후보군 모두가 대상 소프트웨어에 입력된 기록이 있는 경우, 해당 시드는 테스트 입력을 생성하는데 사용되지 않고, 이 경우 입력생성부(120)는 제1수신부(110)로부터 다른 시드 정보를 수신할 수 있다.According to one embodiment of the present application, as a result of determining whether the new test input can be generated, if there is a record that all the test input candidate groups based on the seed information are input to the target software, the corresponding seed is not used to generate the test input In this case, in this case, the input generating unit 120 may receive other seed information from the first receiving unit 110.

반대로, 상기 새로운 테스트 입력을 생성할 수 있는지를 판단한 결과, 시드 정보에 의한 테스트 입력 후보군 중 대상 소프트웨어에 입력된 기록이 없는 테스트 입력 후보가 존재하는 경우, 상기 대상 소프트웨어에 입력된 기록이 없는 테스트 입력 후보를 테스트 입력으로 확정하고, 상기 테스트 입력에 대한 정보를 테스트부(130)로 전송할 수 있다.Conversely, as a result of determining whether the new test input can be generated, if there is a test input candidate without a record input to the target software among test input candidate groups based on seed information, a test input without a record input to the target software The candidate may be determined as a test input, and information on the test input may be transmitted to the test unit 130.

본원의 일 실시예에 따르면, 상기 기 설정된 공격규칙은, 무작위의 비트 연산, 경계값(border values)의 적용 및 필드 크기 변경 중 적어도 하나일 수 있다.According to one embodiment of the present application, the preset attack rule may be at least one of random bit operation, application of border values, and field size change.

본원의 일 실시예에 따르면, 상기 기 설정된 공격규칙은 다양한 경험적 방법(Heuristic Method)에 의해 사용자가 직접 작성할 수 있다.According to one embodiment of the present application, the preset attack rule can be directly written by the user by various heuristic methods.

다만, 공격규칙(Attack grammar) 중 무작위의 비트 연산, 경계값(border values)의 적용 및 필드 크기 변경은 이해를 돕기 위한 예시적 기재일 뿐, 다른 입력 데이터에 대한 변형의 실시예가 본 사상에 적용되는 것을 제한하거나 한정하는 것으로 해석되어서는 안될 것이다.However, random bit operations among attack grammars, application of border values, and field size changes are only illustrative examples to help understanding, and examples of modifications to other input data are applied to this idea. It should not be construed as limiting or limiting what is to be done.

또한, 테스트부(130)는 입력생성부(120)로부터 생성되어 전송된 테스트 입력을 대상 소프트웨어에 입력하고 대상 소프트웨어의 응답을 분석할 수 있다.In addition, the test unit 130 may input the test input generated and transmitted from the input generation unit 120 to the target software and analyze the response of the target software.

본원의 일 실시예에 따르면, 상기 대상 소프트웨어의 응답에는 정상적인 출력값을 출력하는 반응 외에도 충돌이나 빌트인 코드 검증의 실패, 잠재적인 메모리 누수 발견 등과 같은 예외 상황이 포함될 수 있다.According to an embodiment of the present application, the response of the target software may include an exception situation such as a collision, a failure of built-in code verification, a potential memory leak discovery, etc. in addition to a response that outputs a normal output value.

또한, 프로그램 경로 탐지부(140)는 테스트부(130)의 동작과 병렬적으로 테스트 입력에 의해 대상 소프트웨어의 새로운 프로그램 경로가 탐색되었는지를 탐지할 수 있다.In addition, the program path detection unit 140 may detect whether a new program path of the target software has been searched by a test input in parallel with the operation of the test unit 130.

도5는 본원의 일 실시예에 따른 프로그램 경로 탐지부의 동작(140)을 설명하기 위하여 도시한 도면이다.5 is a diagram for explaining the operation 140 of the program path detection unit according to an embodiment of the present application.

도5를 참조하면, 프로그램 경로 탐지부(140)는 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 새로운 소스코드 영역이 실행된 것으로 판단될 경우 상기 제1저장부에 시드 추가 명령(54)을 전송할 수 있다.Referring to FIG. 5, the program path detection unit 140 includes a code coverage change amount, an input/output response time change, an output value change, and a memory. When it is determined that the new source code area has been executed by analyzing at least one of the utilization amount and other system information, a seed addition command 54 may be transmitted to the first storage unit.

도5를 참조하면, 대상 소프트웨어에 인가되는 테스트 입력(51)에 대응되는 프로그램 경로 탐지부(140)의 분석 결과 기존의 테스트에서 일반적으로 실행된 소스코드 영역(52)만이 실행된 경우에는 시드 추가 명령을 전송하지 않고, 기존의 테스트에서 실행된 것 보다 확장된 소스코드 영역(53)이 실행된 경우에만 시드 추가 명령(54)이 전송될 수 있다. Referring to FIG. 5, when the analysis result of the program path detection unit 140 corresponding to the test input 51 applied to the target software is executed, only the source code area 52 generally executed in the existing test is executed. The seed addition command 54 may be transmitted only when the extended source code region 53 is executed than that executed in the existing test without transmitting the command.

본원의 일 실시예에 따르면, 시드 추가 명령(54)은 테스트 입력(51)의 정보가 포함될 수 있다. 다시 말해, 본원의 일 실시예에 따르면, 취약점 검출 장치(100)는 확장된 소스코드 영역(53)을 실행시킨 테스트 입력(51)을 새로운 시드로서 추가할 수 있다.According to one embodiment of the present application, the seed addition command 54 may include information of the test input 51. In other words, according to an embodiment of the present application, the vulnerability detection device 100 may add a test input 51 that has executed the expanded source code area 53 as a new seed.

본원의 일 실시예에 따르면, 소스 코드(Source Code)는 소프트웨어 또는 컴퓨터 프로그램을 프로그래밍 언어로 기술한 글을 의미할 수 있다. 주로 실행 프로그램을 만드는 과정을 입력하는 데 이용되며, 알고리즘을 주고 받는 방식으로도 이용될 수 있다.According to an embodiment of the present application, the source code (Source Code) may refer to a text or a computer program written in a programming language. It is mainly used to input the process of creating an executable program, and can also be used as a method of exchanging algorithms.

본원의 일 실시예에 따르면, 코드 커버리지(Code Coverage)는 소트프웨어 테스트를 진행했을 때 소스 코드 자체가 얼마나 실행되었냐에 관한 수치이다. 달리 말해, 테스트 진행 결과 실행 부분과 미실행 부분을 포함할 수 있으며, 전체 코드 중에 실행 부분이 차지하는 비율을 코드 커버리지로 정의할 수 있다. 결국, 코드 커버리지 값이 특정 테스트 입력에 의해 증가하는 것은 대상 소프트웨어에 포함된 소스 코드가 기존의 테스트에서 보다 많이 실행되었으며, 이에 따라 프로그램 경로가 변화했다는 직접적인 증거가 될 수 있다.According to one embodiment of the present application, code coverage is a number of how much the source code itself was executed when the software test was performed. In other words, as a result of the test, the execution part and the non-execution part may be included, and the percentage of the execution part of the entire code may be defined as code coverage. As a result, the increase in the code coverage value by a specific test input may be a direct proof that the source code included in the target software has been executed more in the existing test, and the program path has changed accordingly.

본원의 일 실시예에 따르면, 코드 커버리지를 활용한 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)는 소스 코드에 대한 직접적인 접근이 가능한 White Box 기반의 퍼징 기법과 연계될 수 있다.According to one embodiment of the present application, the software vulnerability detection apparatus 100 based on a program path utilizing code coverage may be associated with a white box based fuzzing technique capable of direct access to source code.

본원의 일 실시예에 따르면, 입출력 응답시간의 변화는 테스트 입력(51)에 의해 대상 소프트웨어가 출력값을 제공하는데 걸리는 시간으로 정의할 수 있으며, 소스 코드 내에서 각기 다른 역할을 수행하는 두 함수가 내장되어있다고 가정할 때, 두 함수의 실행 시간에는 차이가 있을 수 있으므로 기존의 테스트 입력에 의해 실행된 바 없는 함수가 실행될 경우 입출력 응답시간은 증가할 수 있다.According to one embodiment of the present application, a change in input/output response time may be defined as a time taken by a target software to provide an output value by a test input 51, and two functions that play different roles in the source code are built-in. Assuming that, the execution time of the two functions may be different, so the input/output response time may increase when a function that has not been executed by the existing test input is executed.

본원의 일 실시예에 따르면, 전체 소스 코드 영역에 대하여도 프로그램 경로가 변경될 경우 실행되지 않은 소스 코드 영역이 실행됨에 따라 기존의 테스트 입력에 의한 입출력 응답시간과 차이가 발생할 수 있다.According to one embodiment of the present application, when the program path is changed even for the entire source code area, a difference in input/output response time due to the existing test input may occur as the unexecuted source code area is executed.

본원의 일 실시예에 따르면, 출력값의 변화에 관하여는, 정상적인 상황에서 대상 소프트웨어가 제공하는 출력값과 비교하여 상이한 출력 결과가 도출된 경우, 이를 통해 대상 소프트웨어가 다른 프로그램 경로를 탐색한 것으로 추론할 수 있다. 또한, 출력값의 변화를 용이하게 측정하기 위해서 입력(Input) /출력(Output)을 한 쌍(Pair)으로 검토할 수 있다.According to an exemplary embodiment of the present application, when a different output result is obtained in comparison with an output value provided by the target software in a normal situation, it can be inferred that the target software has searched for a different program path in relation to the change of the output value have. In addition, in order to easily measure the change in the output value, the input / output can be reviewed as a pair.

본원의 일 실시예에 따르면, 상기 정상적인 상황에서 대상 소프트웨어가 제공하는 출력값은 기존 테스트 입력들에 의해 대상 소프트웨어가 제공한 바 있는 출력값들의 집합일 수 있다.According to one embodiment of the present application, the output value provided by the target software in the normal situation may be a set of output values provided by the target software by existing test inputs.

본원의 일 실시예에 따르면, 기타 시스템 정보의 일 예로, Page Reference Bit를 활용할 수 있다. According to an embodiment of the present application, as an example of other system information, a Page Reference Bit may be used.

본원의 일 실시예에 따르면, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보는 소스 코드에 대한 직접적인 접근이 불가능한 Black Box 기반의 퍼징 기법과 연계되어서도, 프로그램 경로의 변화에 대한 간접적인 증거로 기능할 수 있다.According to one embodiment of the present application, a change in input/output response time, a change in output value, memory Utilization and other system information can function as indirect evidence of changes in the program path even in connection with a black box-based fuzzing technique where direct access to source code is not possible.

다만, 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보는 이해를 돕기 위한 예시적 기재일 뿐, 다른 프로그램 경로의 변화를 추론하는데 이용할 수 있는 정보들의 실시예가 본 사상에 적용되는 것을 제한하거나 한정하는 것으로 해석되어서는 안될 것이다.However, the amount of code coverage change, the change in input/output response time, the change in output value, and memory Utilization and other system information are merely illustrative examples for ease of understanding and should not be construed as limiting or limiting the application of the information that can be used to infer changes in other program paths to apply to the present idea.

본원의 일 실시예에 따르면, 시드 추가 명령(54)은 프로그램 경로 탐지부(140)로부터 제1저장부(110)으로 전송되며, 제1저장부(110)에 저장된 현재 시드 정보에 프로그램 경로의 변화를 야기한 테스트 입력(51)을 시드로서 추가하여 이후의 취약점 검출 과정에서 다시 한번 고려될 수 있도록 할 수 있다. According to one embodiment of the present application, the seed addition command 54 is transmitted from the program path detection unit 140 to the first storage unit 110, and the current path information stored in the first storage unit 110 of the program path The test input 51 that caused the change can be added as a seed so that it can be considered once again in a subsequent vulnerability detection process.

보다 구체적으로, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)는 대상 소프트웨어에 포함된 소스 코드 중 기존의 테스트 입력에 의해서는 실행된 적이 없는 영역이 실행된 경우, 해당 테스트 입력(51)을 취약점을 검출할 수 있는 잠재성이 높은 경우로 간주하여, 새로이 시드로 추가함으로써 소프트웨어 취약점 검출 과정에서 시드를 확장할 수 있다.More specifically, the software vulnerability detection device 100 based on the program path according to an embodiment of the present application, when an area that has not been executed by an existing test input among source codes included in the target software is executed, the corresponding test The input 51 is regarded as a case where the potential for detecting a vulnerability is high, and the seed can be extended during the software vulnerability detection process by adding it as a new seed.

결국, 시드가 확장될 수 있기 때문에 사용자가 초기 시드 정보를 적절하지 않게 설정한 경우에도, 취약점 검출이 용이하게 이루어질 수 있으며, 대상 소프트웨어의 소스 코드의 최대한 많은 영역을 고려할 수 있다.As a result, since the seed can be extended, even if the user sets the initial seed information inappropriately, vulnerability detection can be easily performed, and as much as possible of the source code of the target software can be considered.

또한, 제2저장부(150)는, 테스트부(130)가 소프트웨어의 응답을 분석하는 과정에서 크래시가 발생한 경우, 해당 테스트 입력에 대한 정보를 로그 형태로 저장할 수 있다.In addition, when the crash occurs in the process of analyzing the response of the software by the test unit 130, the second storage unit 150 may store information on the corresponding test input in a log form.

본원의 일 실시예에 따르면, 크래시는 충돌이나 빌트인 코드 검증의 실패, 잠재적인 메모리 누수 발견 등과 같은 예외 상황을 포함할 수 있다.According to one embodiment of the present application, a crash may include exceptions such as crashes, failed built-in code verification, and potential memory leak detection.

본원의 일 실시예에 따르면, 제2저장부(150)는 테스트 입력이 대상 소프트웨어에 입력되고 출력값을 제공하는 과정에서 크래시로 표현되는 비정상적인 상황이 발생될 경우, 이를 대상 소프트웨어의 취약점을 검출할 수 있는 잠재성이 높은 경우로 간주하여, 이후의 심층분석을 위한 로그를 생성할 수 있다.According to one embodiment of the present application, the second storage unit 150 may detect a vulnerability in the target software when an abnormal situation expressed as a crash occurs while the test input is input to the target software and provides an output value. Considering that the potential is high, a log can be generated for further analysis.

본원의 일 실시예에 따르면, 상기 로그에는 크래시를 유발한 테스트 입력(51)에 관한 정보 또는 당시 시스템 정보 등이 포함될 수 있다.According to one embodiment of the present application, the log may include information on the test input 51 that caused the crash or system information at the time.

도2는 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법에 대한 동작흐름도이다.2 is an operation flow diagram of a software vulnerability detection method based on a program path according to an embodiment of the present application.

도2에 도시된 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은 앞서 설명된 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치(100)에 대하여 설명된 내용은 도2에도 동일하게 적용될 수 있다.The software vulnerability detection method based on the program path illustrated in FIG. 2 may be performed by the software vulnerability detection apparatus 100 based on the program path described above. Therefore, even if omitted, the description of the software vulnerability detecting apparatus 100 based on the program path can be applied to FIG. 2 as well.

도2를 참조하면, 단계 S210에서, 입력생성부(120)는 제1저장부(110)에 저장된 시드풀로부터 하나의 시드를 임의로 선정할 수 있다.Referring to FIG. 2, in step S210, the input generation unit 120 may randomly select one seed from the seed pool stored in the first storage unit 110.

본원의 일 실시예에 따르면, 상기 시드는 대상 소프트웨어의 정상입력 데이터 또는 비정상입력 데이터일 수 있으며, 시드풀은 하나 이상의 시드로 이루어진 시드의 집합일 수 있다.According to one embodiment of the present application, the seed may be normal input data or abnormal input data of the target software, and the seed pool may be a set of seeds consisting of one or more seeds.

다음으로, 단계 S220에서, 입력생성부(120)는 상기 선정된 시드에 대해 기 설정된 공격 규칙을 적용하여 테스트 입력을 생성할 수 있다.Next, in step S220, the input generator 120 may generate a test input by applying a preset attack rule to the selected seed.

본원의 일 실시예에 따르면, 상기 기 설정된 공격 규칙은 무작위의 비트 연산, 경계값(border values)의 적용 및 필드 크기 변경 중 적어도 하나일 수 있다.According to one embodiment of the present application, the preset attack rule may be at least one of random bit operation, application of border values, and field size change.

본원의 일 실시예에 따르면, 상기 기 설정된 공격규칙은 다양한 경험적 방법(Heuristic Method)에 의해 사용자가 직접 작성할 수 있다.According to one embodiment of the present application, the preset attack rule can be directly written by the user by various heuristic methods.

다음으로, 단계 S230에서, 테스트부(130)는 테스트 입력을 대상 소프트웨어에 입력할 수 있다.Next, in step S230, the test unit 130 may input the test input to the target software.

본원의 일 실시예에 따르면, 상기 테스트 입력의 입력으로 대상 소프트웨어는 정상적인 출력값을 출력하거나 충돌이나 빌트인 코드 검증의 실패, 잠재적인 메모리 누수 발견 등과 같이 비정상적으로 반응할 수 있다.According to one embodiment of the present application, as input of the test input, the target software may output a normal output value or react abnormally, such as a collision, a failure of built-in code verification, and a potential memory leak discovery.

다음으로, 단계 S240에서, 프로그램 경로 탐지부(140)는 테스트 입력에 의해 소프트웨어의 새로운 프로그램 경로가 탐색되었는지 여부를 판단할 수 있다.Next, in step S240, the program path detector 140 may determine whether a new program path of the software has been searched by a test input.

본원의 일 실시예에 따르면, 단계 S240에서, 프로그램 경로 탐지부(140)는 선행된 테스트 입력을 대상 소프트웨어에 입력하는 단계에 의해 실행된 바 없는 상기 대상 소프트웨어에 포함된 새로운 소스코드 영역이 실행되었는지 여부를 판단할 수 있다.According to an embodiment of the present application, in step S240, the program path detection unit 140 has been executed by the step of inputting the preceding test input to the target software, the new source code region included in the target software has not been executed. Can determine whether

본원의 일 실시예에 따르면, 상기 새로운 소스코드 영역이 실행되었는지 여부를 판단하는 것은, 대상 소프트웨어의 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 수행될 수 있다.According to one embodiment of the present application, determining whether the new source code area has been executed is selected from among changes in code coverage of the target software, changes in input/output response time, changes in output values, memory utilization, and other system information. It can be performed by analyzing at least one piece of information.

다음으로, 단계 S250에서, 제1저장부(110)는 프로그램 경로 탐지부(140)의 분석 결과 새로운 프로그램 경로가 탐색된 것으로 분석된 경우, 테스트 입력을 새로운 시드로 하여 상기 시드풀에 추가할 수 있다.Next, in step S250, if the first storage unit 110 is analyzed that a new program path is found as a result of the analysis of the program path detection unit 140, the test input can be added to the seed pool as a new seed. have.

상술한 설명에서, 단계 S210 내지 S250은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.In the above description, steps S210 to S250 may be further divided into additional steps or combined into fewer steps, according to an embodiment of the present application. In addition, some steps may be omitted if necessary, and the order between the steps may be changed.

도3은 본원의 일 실시예에 따른 선정된 시드를 이용하여 테스트 입력을 생성할 수 있는지 여부를 판단하는 단계에 대한 동작흐름도이다.3 is an operation flow chart for determining whether it is possible to generate a test input using a selected seed according to an embodiment of the present application.

도3을 참조하면, 단계 S310에서, 입력생성부(120)는 시드를 선정할 수 있다.Referring to FIG. 3, in step S310, the input generator 120 may select a seed.

다음으로, 단계 S320에서는, 입력생성부(120)에 수신된 시드 정보에 기 설정된 공격 규칙을 적어도 하나 이상 적용한 테스트 입력 후보군을 만들 수 있다.Next, in step S320, a test input candidate group to which at least one preset attack rule is applied to seed information received by the input generator 120 may be created.

다음으로, 단계 S330에서, 입력생성부(120)는 상기 테스트 입력 후보군 전부가 대상 소프트웨어에 테스트 입력으로서 입력된 기록이 있는지 판단할 수 있다.Next, in step S330, the input generator 120 may determine whether all of the test input candidate groups have a record input as a test input to the target software.

다음으로, 단계 S340에서, 입력생성부(120)는 상기 테스트 입력 후보군 중에 대상 소프트웨어에 테스트 입력으로서 입력된 기록이 없는 테스트 입력 후보가 있는 경우, 이를 테스트 입력으로 확정하여 상기 테스트 입력을 테스트부(130)로 전송할 수 있다. Next, in step S340, the input generation unit 120, if there is a test input candidate that has no record input as a test input in the target software among the test input candidate groups, it is determined as a test input to test the test input ( 130).

반대로, 상기 테스트 입력 후보군 전부가 대상 소프트웨어에 테스트 입력으로서 입력된 기록이 있다면, 상기 테스트 입력 후보군 전부는 폐기되며 입력생성부 (120)는 새로운 시드정보를 제1저장부(110)로부터 수신할 수 있다. Conversely, if all of the test input candidate groups have records input as test inputs to the target software, all of the test input candidate groups are discarded and the input generation unit 120 can receive new seed information from the first storage unit 110. have.

상술한 설명에서, 단계 S310 내지 S340은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.In the above description, steps S310 to S340 may be further divided into additional steps, or combined into fewer steps, according to embodiments herein. In addition, some steps may be omitted if necessary, and the order between the steps may be changed.

도4는 본원의 일 실시예에 따른 크래시를 검출하는 단계에 대한 동작흐름도이다4 is an operation flow chart for detecting a crash according to an embodiment of the present application

도4를 참조하면, 본원의 일 실시예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계 후, 크래시(crash)를 검출하는 단계를 더 포함할 수 있다. 상기 크래시를 검출하는 단계는 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계로 인해 대상 소프트웨어에서 크래시가 발생한 경우, 해당 테스트 입력을 로그로 저장하는 것 일 수 있다.Referring to FIG. 4, a method for detecting a software vulnerability based on a program path according to an embodiment of the present application may further include detecting a crash after inputting the test input to the target software. The step of detecting the crash may be to store the corresponding test input as a log when a crash occurs in the target software due to the step of inputting the test input to the target software.

도4를 참조하면, 단계 S410에서, 테스트부(130)는 테스트 입력을 대상 소프트웨어에 입력할 수 있다.Referring to FIG. 4, in step S410, the test unit 130 may input a test input to the target software.

다음으로, 단계 420에서, 제2저장부(150)는 테스트 입력에 의해 대상 소프트웨어에서 크래시가 발생했는가를 판단할 수 있다.Next, in step 420, the second storage unit 150 may determine whether a crash has occurred in the target software by a test input.

다음으로, 단계 430에서, 제2저장부(150)는 크래시가 발생한 경우, 테스트 입력에 대한 정보를 포함하여 심층분석을 위한 로그로 저장할 수 있다.Next, in step 430, when the crash occurs, the second storage unit 150 may include information about the test input and store it as a log for in-depth analysis.

본원의 일 실시예에 따르면, 상기 로그에는 크래시를 유발한 테스트 입력에 관한 정보 또는 당시 시스템 정보 등이 포함될 수 있다.According to one embodiment of the present application, the log may include information on a test input that caused a crash or system information at the time.

상술한 설명에서, 단계 S410 내지 S430은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.In the above description, steps S410 to S430 may be further divided into additional steps, or combined into fewer steps, according to an embodiment of the present application. In addition, some steps may be omitted if necessary, and the order between the steps may be changed.

본원의 일 실시 예에 따른 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), .램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.A software vulnerability detection method based on a program path according to an embodiment of the present application may be implemented in a form of program instructions that can be executed through various computer means and recorded in a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, or the like alone or in combination. The program instructions recorded on the medium may be specially designed and configured for the present invention or may be known and usable by those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and magnetic media such as floptical disks. Includes hardware devices specifically configured to store and execute program instructions such as magneto-optical media, and ROM, .RAM (RAM), flash memory, and the like. Examples of program instructions include high-level language code that can be executed by a computer using an interpreter, etc., as well as machine language codes made by a compiler. The hardware device described above may be configured to operate as one or more software modules to perform the operation of the present invention, and vice versa.

또한, 전술한 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법은 기록 매체에 저장되는 컴퓨터에 의해 실행되는 컴퓨터 프로그램 또는 애플리케이션의 형태로도 구현될 수 있다.In addition, the software vulnerability detection method based on the above-described program path may be implemented in the form of a computer program or application executed by a computer stored in a recording medium.

전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The above description of the present application is for illustrative purposes, and a person having ordinary knowledge in the technical field to which the present application belongs will understand that it is possible to easily change to other specific forms without changing the technical spirit or essential characteristics of the present application. Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive. For example, each component described as a single type may be implemented in a distributed manner, and similarly, components described as distributed may be implemented in a combined form.

본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한*.The scope of the present application is indicated by the following claims rather than the above detailed description, and all changes or modifications derived from the meaning and scope of the claims and equivalent concepts should be interpreted to be included in the scope of the present application* .

100: 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치
110: 제1저장부
120: 입력생성부
130: 테스트부
140: 프로그램 경로 탐지부
150: 제 2저장부
100: software vulnerability detection device based on program path
110: first storage unit
120: input generation unit
130: test unit
140: program path detection unit
150: second storage unit

Claims (10)

프로그램 경로에 기반한 소프트웨어 취약점 검출 방법에 있어서,
시드풀로부터 하나의 시드를 임의로 선정하는 단계;
상기 선정된 시드에 대해 기 설정된 공격 규칙을 적용하여 테스트 입력을 생성하는 단계;
상기 테스트 입력을 대상 소프트웨어에 입력하는 단계;
상기 테스트 입력에 의해 소프트웨어의 새로운 프로그램 경로가 탐색되었는지 여부를 판단하는 단계; 및
새로운 프로그램 경로가 탐색되었을 경우, 상기 테스트 입력을 상기 시드풀에 추가하는 단계,
를 포함하는 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
In the software vulnerability detection method based on the program path,
Randomly selecting one seed from the seed pool;
Generating a test input by applying a preset attack rule to the selected seed;
Inputting the test input into a target software;
Determining whether a new program path of software has been searched by the test input; And
If a new program path is found, adding the test input to the seedpool,
Software vulnerability detection method based on the program path including the.
제1항에 있어서,
상기 선정된 시드를 이용하여 테스트 입력을 생성할 수 있는지 여부를 판단하는 단계,
를 더 포함하는 것인, 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
According to claim 1,
Determining whether a test input can be generated using the selected seed,
The method further comprising, software vulnerability detection method based on the program path.
제 1항에 있어서,
상기 시드는 대상 소프트웨어의 정상입력 데이터 또는 비정상입력 데이터인 것인, 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
According to claim 1,
The seed is normal input data or abnormal input data of the target software, software vulnerability detection method based on the program path.
제 1항에 있어서,
상기 기 설정된 공격규칙은,
무작위의 비트 연산, 경계값(border values)의 적용 및 필드 크기 변경 중 적어도 하나인 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
According to claim 1,
The preset attack rules,
A software vulnerability detection method based on a program path that is at least one of random bit operations, application of border values, and field size changes.
제 1항에 있어서,
상기 새로운 프로그램 경로가 탐색되었는지 여부를 판단하는 단계는,
선행된 테스트 입력을 대상 소프트웨어에 입력하는 단계에 의해 실행된 바 없는 상기 대상 소프트웨어에 포함된 새로운 소스코드 영역이 실행되었는지 여부를 판단하는 것인 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
According to claim 1,
The step of determining whether the new program path has been searched for is
A method of detecting a software vulnerability based on a program path, which determines whether a new source code region included in the target software that has not been executed by inputting the preceding test input to the target software has been executed.
제 5항에 있어서,
상기 새로운 소스코드 영역이 실행되었는지 여부를 판단하는 것은,
대상 소프트웨어의 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 수행되는 것을 특징으로 하는 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
The method of claim 5,
Determining whether the new source code area has been executed is
A method for detecting a software vulnerability based on a program path, characterized in that it is performed by analyzing at least one of a code coverage change amount of a target software, a change in input/output response time, a change in output value, memory utilization, and other system information.
제 1항에 있어서,
상기 테스트 입력을 대상 소프트웨어에 입력하는 단계 후,
크래시를 검출하는 단계를 더 포함하고,
상기 크래시를 검출하는 단계는 상기 테스트 입력을 대상 소프트웨어에 입력하는 단계로 인해 대상 소프트웨어에서 크래시가 발생한 경우, 해당 테스트 입력을 로그로 저장하는 것인 프로그램 경로에 기반한 소프트웨어 취약점 검출 방법.
According to claim 1,
After the step of inputting the test input to the target software,
Further comprising the step of detecting a crash,
The step of detecting the crash is a method for detecting a software vulnerability based on a program path that, when a crash occurs in the target software due to the step of inputting the test input into the target software, stores the corresponding test input as a log.
프로그램 경로에 기반한 소프트웨어 취약점 검출 장치에 있어서,
대상 소프트웨어의 정상입력 또는 비정상입력인 시드에 대한 정보를 저장하는 제1저장부;
상기 제1저장부로부터 시드 정보를 수신하여 상기 시드 정보를 기반으로 새로운 테스트 입력을 생성하는 입력생성부;
상기 테스트 입력을 대상 소프트웨어에 입력하고 대상 소프트웨어의 응답을 분석하는 테스트부; 및
상기 테스트 입력에 의해 대상 소프트웨어의 새로운 프로그램 경로가 탐색되었는지를 탐지하는 프로그램 경로 탐지부,
를 포함하는 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치.
In the software vulnerability detection device based on the program path,
A first storage unit for storing information on a seed that is a normal input or an abnormal input of the target software;
An input generating unit receiving seed information from the first storage unit and generating a new test input based on the seed information;
A test unit that inputs the test input into the target software and analyzes the response of the target software; And
Program path detection unit for detecting whether a new program path of the target software is searched by the test input,
Software vulnerability detection device based on the program path including the.
제8항에 있어서,
상기 테스트부가 소프트웨어의 응답을 분석하는 과정에서 크래시가 발생한 경우, 해당 테스트 입력에 대한 정보를 로그 형태로 저장하는 제2저장부,
를 더 포함하는 것을 특징으로 하는 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치.
The method of claim 8,
If a crash occurs in the process of analyzing the response of the software by the test unit, a second storage unit that stores information on the corresponding test input in a log form,
Software vulnerability detection device based on the program path, characterized in that it further comprises.
제8항에 있어서,
상기 프로그램 경로 탐지부는,
상기 테스트 입력에 따른 소프트웨어의 응답에 관하여, 코드 커버리지(Code Coverage) 변화량, 입출력 응답시간의 변화, 출력값의 변화, 메모리 활용량 및 기타 시스템 정보 중 적어도 하나의 정보를 분석함으로써 상기 대상 소프트웨어의 새로운 프로그램 경로가 탐색되었는지를 탐지하는 것을 특징으로 하는 프로그램 경로에 기반한 소프트웨어 취약점 검출 장치.
The method of claim 8,
The program path detection unit,
Regarding the response of the software according to the test input, a code coverage change amount, a change in input/output response time, a change in output value, memory A software vulnerability detection device based on a program path, characterized in that it detects whether a new program path of the target software has been discovered by analyzing at least one of utilization amount and other system information.
KR1020180170099A 2018-12-27 2018-12-27 Apparatus and method for detecting vulnerability of software KR102190727B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180170099A KR102190727B1 (en) 2018-12-27 2018-12-27 Apparatus and method for detecting vulnerability of software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180170099A KR102190727B1 (en) 2018-12-27 2018-12-27 Apparatus and method for detecting vulnerability of software

Publications (2)

Publication Number Publication Date
KR20200080541A true KR20200080541A (en) 2020-07-07
KR102190727B1 KR102190727B1 (en) 2020-12-14

Family

ID=71603330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180170099A KR102190727B1 (en) 2018-12-27 2018-12-27 Apparatus and method for detecting vulnerability of software

Country Status (1)

Country Link
KR (1) KR102190727B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111935121A (en) * 2020-07-31 2020-11-13 北京天融信网络安全技术有限公司 Vulnerability reporting method and device
KR102209676B1 (en) * 2020-07-20 2021-01-28 세종대학교산학협력단 Apparatus and method for fuzzing firmware
CN112612698A (en) * 2020-12-17 2021-04-06 平安普惠企业管理有限公司 Application program crash test method and related product
KR102304861B1 (en) * 2021-03-30 2021-09-23 세종대학교산학협력단 Apparatus and method for detecting firmware vulnerabiliry based on hybrid fuzzing
KR102323621B1 (en) 2021-05-03 2021-11-05 세종대학교산학협력단 Apparatus and method for fuzzing firmware
KR102353187B1 (en) * 2020-08-14 2022-01-20 국방과학연구소 Method And Apparatus For Scheduling Seed File In Fuzzing

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102635486B1 (en) 2023-01-02 2024-02-07 고려대학교 산학협력단 Apparatus and method for performing fuzzing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090045340A (en) * 2003-06-19 2009-05-07 인터내셔널 비지네스 머신즈 코포레이션 System and method for authenticating software using hidden intermediate keys
KR101640479B1 (en) * 2015-08-28 2016-07-18 (주)엔키소프트 Software vulnerability attack behavior analysis system based on the source code
KR101645019B1 (en) * 2016-01-15 2016-08-02 지티원 주식회사 Rule description language for software vulnerability detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090045340A (en) * 2003-06-19 2009-05-07 인터내셔널 비지네스 머신즈 코포레이션 System and method for authenticating software using hidden intermediate keys
KR101640479B1 (en) * 2015-08-28 2016-07-18 (주)엔키소프트 Software vulnerability attack behavior analysis system based on the source code
WO2017039136A1 (en) * 2015-08-28 2017-03-09 (주)엔키소프트 System for analyzing attack action for vulnerable point of source code-based software
KR101645019B1 (en) * 2016-01-15 2016-08-02 지티원 주식회사 Rule description language for software vulnerability detection

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102209676B1 (en) * 2020-07-20 2021-01-28 세종대학교산학협력단 Apparatus and method for fuzzing firmware
CN111935121A (en) * 2020-07-31 2020-11-13 北京天融信网络安全技术有限公司 Vulnerability reporting method and device
CN111935121B (en) * 2020-07-31 2022-04-26 北京天融信网络安全技术有限公司 Vulnerability reporting method and device
KR102353187B1 (en) * 2020-08-14 2022-01-20 국방과학연구소 Method And Apparatus For Scheduling Seed File In Fuzzing
CN112612698A (en) * 2020-12-17 2021-04-06 平安普惠企业管理有限公司 Application program crash test method and related product
KR102304861B1 (en) * 2021-03-30 2021-09-23 세종대학교산학협력단 Apparatus and method for detecting firmware vulnerabiliry based on hybrid fuzzing
KR102323621B1 (en) 2021-05-03 2021-11-05 세종대학교산학협력단 Apparatus and method for fuzzing firmware

Also Published As

Publication number Publication date
KR102190727B1 (en) 2020-12-14

Similar Documents

Publication Publication Date Title
KR102190727B1 (en) Apparatus and method for detecting vulnerability of software
US11042647B1 (en) Software assurance system for runtime environments
US8381192B1 (en) Software testing using taint analysis and execution path alteration
US10586053B2 (en) Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof
US8943478B2 (en) Fault detection and localization in dynamic software applications
US8578342B2 (en) Fault detection and localization in dynamic software applications requiring user inputs and persistent states
US10019581B2 (en) Identifying stored security vulnerabilities in computer software applications
US20080126867A1 (en) Method and system for selective regression testing
US20110016456A1 (en) Generating additional user inputs for fault detection and localization in dynamic software applications
US11170113B2 (en) Management of security vulnerabilities
US10681076B1 (en) Automated security analysis of software libraries
US20210365555A1 (en) A method and system for detecting and preventing issues in smart contracts based on historical behavior analysis
US8904543B2 (en) Discovery of application vulnerabilities involving multiple execution flows
CA2811617C (en) Commit sensitive tests
KR102273135B1 (en) Apparatus and method for generating test input a software using symbolic execution
Ashouri Etherolic: a practical security analyzer for smart contracts
EP3945441A1 (en) Detecting exploitable paths in application software that uses third-party libraries
CN111858307B (en) Fuzzy test method and equipment
US20230053314A1 (en) Systems and methods for blocking malicious script execution
CN110909349A (en) detection method and system for rebound shell in docker container
CN117034288A (en) Vulnerability detection method and device, storage medium and electronic equipment
KR102097672B1 (en) Program bug development operand decision apparatus and method thereof
Veres An Exploration of Current Techniques in OWASP Vulnerability Detection and Improvement Opportunities
Liu et al. Anatomist: Enhanced Firmware Vulnerability Discovery Based on Program State Abnormality Determination with Whole-System Replay
GB2529842A (en) Generating coverage metrics for black-box testing

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant