KR102305386B1 - Apparatus and method for fuzzing firmware - Google Patents

Apparatus and method for fuzzing firmware Download PDF

Info

Publication number
KR102305386B1
KR102305386B1 KR1020210078620A KR20210078620A KR102305386B1 KR 102305386 B1 KR102305386 B1 KR 102305386B1 KR 1020210078620 A KR1020210078620 A KR 1020210078620A KR 20210078620 A KR20210078620 A KR 20210078620A KR 102305386 B1 KR102305386 B1 KR 102305386B1
Authority
KR
South Korea
Prior art keywords
firmware
emulation environment
system mode
target process
fuzzing
Prior art date
Application number
KR1020210078620A
Other languages
Korean (ko)
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 KR1020210078620A priority Critical patent/KR102305386B1/en
Application granted granted Critical
Publication of KR102305386B1 publication Critical patent/KR102305386B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

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

Abstract

Disclosed are a firmware fuzzing device and a method thereof. According to one embodiment, the firmware fuzzing device includes: a system mode emulator providing a system mode emulation environment to an Internet-of-Things (IoT) device based on a heuristics technique; a user mode emulator providing a user mode emulation environment to a target process of at least one process for firmware of the device in the system mode emulation environment; and a testing part generating a test case based on a keyword included in the target process, and executing variation-based fuzzing to the target process in the user mode emulation environment using the test case. Therefore, the present invention is capable of executing stable fuzzing by solving interruptions.

Description

펌웨어 퍼징 장치 및 방법{APPARATUS AND METHOD FOR FUZZING FIRMWARE}Firmware purging device and method {APPARATUS AND METHOD FOR FUZZING FIRMWARE}

개시되는 실시예들은 펌웨어(firmware)에 대한 변이 기반 퍼징(fuzzing)을 수행하는 기술과 관련된다.The disclosed embodiments relate to techniques for performing mutation-based fuzzing on firmware.

해가 갈수록 다양한 임베디드 장치들이 일상의 모든 부분에 자리잡고 있다. 임베디드 장치의 수준은 양적, 질적으로 자율 주행, 의료 산업 등 민감한 분야에 적용될 정도로 발전하고 있다. As the years go by, a variety of embedded devices are ubiquitous in every aspect of our daily lives. The level of embedded devices is developing quantitatively and qualitatively enough to be applied to sensitive fields such as autonomous driving and the medical industry.

하지만 임베디드 장치의 발전은 기기의 성능과 개발 성능에 치중된 나머지, 임베디드 장치에 대한 보안은 상대적으로 발전이 더딘 상황이다.However, the development of embedded devices is focused on device performance and development performance, and security for embedded devices is relatively slow.

이 때문에, 임베디드 장치에 내장된 펌웨어는 악의의 공격자에게 있어 쉽게 공격 대상의 타겟이 된다. 이에 대응하여, 일각에서는 임베디드 장치 내부의 펌웨어를 자동으로 테스트하는 여러 연구를 진행하고 있다. 예컨대, 첫째로는 에뮬레이션의 안정성 및 신뢰성 연구가, 둘째로는 이전 소프트웨어에서 성공적이었던 테스팅 기법을 펌웨어에 적용하는 연구가 이루어지고 있다.For this reason, the firmware embedded in the embedded device easily becomes an attack target for a malicious attacker. In response to this, some researchers are conducting various studies to automatically test the firmware inside the embedded device. For example, first, emulation stability and reliability studies are being conducted, and secondly, testing techniques that have been successful in previous software are applied to firmware.

이러한 연구의 성과로서 구현된 FirmAFL은 자동 에뮬레이션 도구와 커버리지 기반 퍼징 도구를 결합하여 에뮬레이션과 퍼징을 자동으로 수행하는 도구로, 증강 프로세스 에뮬레이션을 통해 에뮬레이션의 불안정성과 퍼징 처리량을 개선하였다. 하지만 대부분의 임베디드 장치를 대상으로 한 퍼저와 마찬가지로 FirmAFL 역시 소수의 펌웨어만 호환되는 가공되지 않은 QEMU(Quick EMUlator)를 기반으로 에뮬레이션을 수행하기 때문에 에뮬레이션 성공률이 약 12 %로 매우 낮다. FirmAFL, implemented as a result of this research, is a tool that automatically performs emulation and fuzzing by combining an automatic emulation tool and a coverage-based fuzzing tool, and improved emulation instability and fuzzing throughput through augmented process emulation. However, like the fuzzer targeting most embedded devices, FirmAFL also performs emulation based on a raw Quick EMUlator (QEMU) that is compatible with only a small number of firmware, so the emulation success rate is very low, about 12%.

또한, 펌웨어 프로그램은 웹 어플리케이션을 통해 사용자의 입/출력 통신을 수행한다. 이때, 웹 어플리케이션은 특정 형식을 갖는 패킷 형태로 데이터를 주고받기 때문에 무작위 변이를 통해 입력값을 생성하는 기존 퍼저는 효율성이 떨어질 수 있다. 이를 보완하기 위해서는 프로그램에서 입력 형식을 수동적으로 추출하는 과정이 필요하지만 굉장히 많은 인력과 비용이 요구된다. In addition, the firmware program performs input/output communication of the user through the web application. In this case, since the web application exchanges data in the form of packets having a specific format, the efficiency of the existing fuzzer that generates an input value through random mutation may decrease. In order to compensate for this, a process of manually extracting the input format from the program is required, but it requires a lot of manpower and cost.

이를 해결하기 위해서는 임베디드 장치에 대한 높은 에뮬레이션 성공률, 자동화된 입력 형식 구성으로 퍼저의 효율성을 높이는 시스템이 필요하며, 특히 기존의 소프트웨어에서 프로그램의 키워드 및 분기에서의 입력 값을 획득하기 위해 이용되어 온 기호 실행 기법을 퍼징 기법과 결합하는 방안을 고찰할 필요가 있다.In order to solve this problem, a system that increases the efficiency of the fuzzer with high emulation success rate for embedded devices and automated input format configuration is required. It is necessary to consider how to combine the execution technique with the fuzzing technique.

대한민국 등록특허공보 제10-1972825호(2019.04.22. 등록)Republic of Korea Patent Publication No. 10-1972825 (registered on April 22, 2019)

개시되는 실시예들은 펌웨어(firmware)에 대한 변이 기반 퍼징(fuzzing)을 수행하기 위한 장치 및 방법을 제공하기 위한 것이다.Disclosed embodiments are intended to provide an apparatus and method for performing mutation-based fuzzing on firmware.

일 실시예에 따른 펌웨어 퍼징 장치는 휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things) 기기에 시스템 모드 에뮬레이션 환경을 제공하는 시스템 모드 에뮬레이터; 상기 시스템 모드 에뮬레이션 환경에서 상기 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공하는 사용자 모드 에뮬레이터; 및 상기 대상 프로세스 내 포함된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성하고, 상기 테스트 케이스를 이용하여 상기 사용자 모드 에뮬레이션 환경에서 상기 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행하는 테스팅부를 포함한다. A firmware purge device according to an embodiment includes a system mode emulator that provides a system mode emulation environment to an Internet of Things (IoT) device based on a heuristics technique; a user mode emulator providing a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment; and a testing unit that generates a test case having a specific format based on a keyword included in the target process, and performs mutation-based fuzzing on the target process in the user mode emulation environment using the test case. .

상기 시스템 모드 에뮬레이터는, 상기 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스를 반복 실행하고, 반복 실행하여 획득된 결과 중 상기 시스템 모드 에뮬레이션 환경의 제공에 성공한 케이스에 기초하여 상기 시스템 모드 에뮬레이션 환경을 제공할 수 있다. The system mode emulator repeatedly executes one or more cases causing failure to provide the system mode emulation environment, and based on a case in which provision of the system mode emulation environment is successful among results obtained by repeated execution, the system mode emulation environment can provide

상기 대상 프로세스는, 사용자로부터 입력을 요청하는 프로세스일 수 있다.The target process may be a process that requests input from a user.

상기 특정 형식은, 상기 대상 프로세스의 실행에 사용되는 데이터가 요구하는 형식일 수 있다.The specific format may be a format required by data used for execution of the target process.

상기 특정 형식은, 상기 대상 프로세스에 입력되는 데이터가 요구하는 형식일 수 있다.The specific format may be a format requested by data input to the target process.

일 실시예에 따른 펌웨어 퍼징 장치는 동적 기호 실행(concolic execution)을 통해 분기 조건을 해결하는 키워드를 상기 대상 프로세스에서 검출하는 검출부를 더 포함할 수 있다. The firmware fuzzing apparatus according to an embodiment may further include a detection unit configured to detect, in the target process, a keyword for resolving a branch condition through concolic execution.

일 실시예에 따른 펌웨어 퍼징 방법은 휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things) 기기에 시스템 모드 에뮬레이션 환경을 제공하는 단계; 상기 시스템 모드 에뮬레이션 환경에서 상기 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공하는 단계; 상기 대상 프로세스 내 포함된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성하는 단계; 및 상기 테스트 케이스를 이용하여 상기 사용자 모드 에뮬레이션 환경에서 상기 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행하는 단계를 포함한다. A firmware fuzzing method according to an embodiment includes: providing a system mode emulation environment to an Internet of Things (IoT) device based on a heuristics technique; providing a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment; generating a test case having a specific format based on a keyword included in the target process; and performing mutation-based fuzzing on the target process in the user mode emulation environment using the test case.

상기 시스템 모드 에뮬레이션 환경을 제공하는 단계는, 상기 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스를 반복 실행하고, 반복 실행하여 획득된 결과 중 상기 시스템 모드 에뮬레이션 환경의 제공에 성공한 케이스에 기초하여 상기 시스템 모드 에뮬레이션 환경을 제공할 수 있다. The step of providing the system mode emulation environment may include repeatedly executing one or more cases causing failure to provide the system mode emulation environment, and based on a case in which the provision of the system mode emulation environment is successful among results obtained by repeated execution. The system mode emulation environment may be provided.

상기 대상 프로세스는, 사용자로부터 입력을 요청하는 프로세스일 수 있다. The target process may be a process that requests input from a user.

상기 특정 형식은, 상기 대상 프로세스의 실행에 사용되는 데이터가 요구하는 형식일 수 있다. The specific format may be a format required by data used for execution of the target process.

상기 특정 형식은, 상기 대상 프로세스에 입력되는 데이터가 요구하는 형식일 수 있다. The specific format may be a format requested by data input to the target process.

일 실시예에 따른 펌웨어 퍼징 방법은 상기 퍼징을 실행하는 단계 이전에, 동적 기호 실행(concolic execution)을 통해 분기 조건을 해결하는 키워드를 상기 대상 프로세스에서 검출하는 단계를 더 포함할 수 있다. The firmware fuzzing method according to an embodiment may further include detecting, in the target process, a keyword for resolving a branch condition through concolic execution before executing the fuzzing.

개시되는 실시예들에 따르면, 시스템 모드 에뮬레이터와 사용자 모드 에뮬레이터를 복합적으로 사용함으로써 호환성과 동시에 처리 속도가 향상시킬 수 있다. According to the disclosed embodiments, compatibility and processing speed can be improved at the same time by using a system mode emulator and a user mode emulator in combination.

개시되는 실시예들에 따르면, 대상 프로세스에 사용되는 데이터가 요구하는 입력 형식에 기초하여 생성된 테스트 케이스를 통해 퍼징을 수행함으로써, 퍼징의 효율성 제고할 수 있다. According to the disclosed embodiments, fuzzing efficiency may be improved by performing fuzzing through a test case generated based on an input format required by data used in a target process.

개시되는 실시예들에 따르면, 퍼징 수행 시 테스팅부가 해결할 수 없는 인터럽트(interrupt)를 제2 테스팅부를 통해 해결함으로써 안정적인 퍼징을 수행할 수 있다. According to the disclosed embodiments, stable fuzzing can be performed by resolving an interrupt that the testing unit cannot resolve through the second testing unit when performing fuzzing.

도 1은 일 실시예에 따른 펌웨어 퍼징 장치의 블록도
도 2는 추가적인 실시예에 따른 펌웨어 퍼징 장치를 설명하기 위한 흐름도
도 3은 일 실시예에 따른 펌웨어 퍼징 방법을 설명하기 위한 흐름도
도 4는 추가적인 실시예에 따른 펌웨어 퍼징 방법을 설명하기 위한 흐름도
도 5는 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
1 is a block diagram of a firmware purge device according to an embodiment;
2 is a flowchart illustrating a firmware purge device according to an additional embodiment;
3 is a flowchart illustrating a firmware purge method according to an embodiment;
4 is a flowchart illustrating a firmware purge method according to an additional embodiment;
5 is a block diagram illustrating and explaining a computing environment including a computing device according to an embodiment;

이하, 도면을 참조하여 일 실시예의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, a specific embodiment of one embodiment will be described with reference to the drawings. The following detailed description is provided to provide a comprehensive understanding of the methods, apparatus, and/or systems described herein. However, this is merely an example and the present invention is not limited thereto.

일 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 일 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 일 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 성분들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 성분, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.In describing the embodiments, if it is determined that the detailed description of the known technology related to the present invention may unnecessarily obscure the gist of the embodiment, the detailed description thereof will be omitted. In addition, the terms to be described later are terms defined in consideration of functions in the present invention, which may vary according to intentions or customs of users and operators. Therefore, the definition should be made based on the content throughout this specification. The terminology used in the detailed description is for the purpose of describing one embodiment only, and should in no way be limiting. Unless explicitly used otherwise, expressions in the singular include the meaning of the plural. In this description, expressions such as “comprising” or “comprising” are intended to refer to certain elements, numbers, steps, acts, elements, some or a combination thereof, one or more other than those described. It should not be construed to exclude the presence or possibility of other components, numbers, steps, acts, elements, or any part or combination thereof.

이하의 설명에 있어서, 신호 또는 정보의 "전송", "통신", "송신", "수신" 기타 이와 유사한 의미의 용어는 일 구성요소에서 다른 구성요소로 신호 또는 정보가 직접 전달되는 것뿐만이 아니라 다른 구성요소를 거쳐 전달되는 것도 포함한다.In the following description, the terms "transmission", "communication", "transmission", "reception" and other similar meanings of signals or information are not only directly transmitted from one component to another component, but also signal or information This includes passing through other components.

특히 신호 또는 정보를 일 구성요소로 "전송" 또는 "송신"한다는 것은 그 신호 또는 정보의 최종 목적지를 지시하는 것이고 직접적인 목적지를 의미하는 것이 아니다. 이는 신호 또는 정보의 "수신"에 있어서도 동일하다. 또한 본 명세서에 있어서, 2 이상의 데이터 또는 정보가 "관련"된다는 것은 하나의 데이터(또는 정보)를 획득하면, 그에 기초하여 다른 데이터(또는 정보)의 적어도 일부를 획득할 수 있음을 의미한다.In particular, "transmitting" or "transmitting" a signal or information to a component indicates the final destination of the signal or information and does not imply a direct destination. The same is true for "reception" of signals or information. In addition, in this specification, when two or more data or information are "related", it means that when one data (or information) is acquired, at least a part of other data (or information) can be acquired based thereon.

또한, 제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다.Also, terms such as first and second may be used to describe various components, but the components should not be limited by the terms. The above terms may be used for the purpose of distinguishing one component from another.

예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 명명될 수 있다.For example, without departing from the scope of the present invention, a first component may be referred to as a second component, and similarly, a second component may also be referred to as a first component.

도 1은 일 실시예에 따른 펌웨어 퍼징 장치(100)의 블록도이다.1 is a block diagram of a firmware purge device 100 according to an embodiment.

도 1을 참조하면, 일 실시예에 따른 펌웨어 퍼징 장치(100)는 시스템 모드 에뮬레이터(110), 사용자 모드 에뮬레이터(120) 및 테스팅부(130)를 포함한다.Referring to FIG. 1 , the firmware purge apparatus 100 according to an embodiment includes a system mode emulator 110 , a user mode emulator 120 , and a testing unit 130 .

이때, 시스템 모드 에뮬레이터(110), 사용자 모드 에뮬레이터(120) 및 테스팅부(130)은 각각 물리적으로 구분된 하나 이상의 장치를 이용하여 구현되거나, 하나 이상의 하드웨어 프로세서 또는 하나 이상의 하드웨어 프로세서 및 소프트웨어의 결합에 의해 구현될 수 있으며, 도시된 예와 달리 구체적 동작에 있어 명확히 구분되지 않을 수 있다.At this time, the system mode emulator 110, the user mode emulator 120, and the testing unit 130 are implemented using one or more physically separated devices, or one or more hardware processors or one or more hardware processors and software in combination. may be implemented, and unlike the illustrated example, specific operations may not be clearly distinguished.

시스템 모드 에뮬레이터(110)는 휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things)(이하, IoT) 기기에 시스템 모드 에뮬레이션 환경을 제공한다. The system mode emulator 110 provides a system mode emulation environment to an Internet of Things (IoT) (hereinafter referred to as IoT) device based on a heuristics technique.

여기서, 시스템 모드 에뮬레이션 환경이란, IoT 기기와 관련된 시스템 전체에 대한 에뮬레이팅(emulating)을 수행할 수 있는 환경을 의미한다.Here, the system mode emulation environment means an environment capable of emulating the entire system related to the IoT device.

또한, 휴리스틱 기법이란, 경험에 기초하여 최적의 해답을 얻는 기법으로, 경험 기반의 귀납적 추론 기법에 해당한다. In addition, the heuristic technique is a technique for obtaining an optimal solution based on experience, and corresponds to an experience-based inductive reasoning technique.

구체적으로, 시스템 모드 에뮬레이터(110)는 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스를 반복 실행하고, 반복 실행된 결과 중 시스템 모드 에뮬레이션 환경의 제공에 성공한 케이스에 기초하여 시스템 모드 에뮬레이션 환경을 제공함으로써, 휴리스틱 기법에 기초하여 시스템 모드 에뮬레이션 환경을 제공할 수 있다. Specifically, the system mode emulator 110 repeatedly executes one or more cases that cause failure to provide the system mode emulation environment, and creates a system mode emulation environment based on a case where the provision of the system mode emulation environment is successful among the repeatedly executed results. By providing, it is possible to provide a system mode emulation environment based on a heuristic technique.

이때, 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스는 예를 들어, 시스템 모드 에뮬레이터(110)가 펌웨어의 네트워크 서비스를 규정하지 못해 펌웨어에 대해 시스템 모드 에뮬레이션 환경의 제공에 실패하는 케이스를 포함할 수 있다.At this time, one or more cases that cause the failure to provide the system mode emulation environment include, for example, a case in which the system mode emulator 110 fails to provide a system mode emulation environment for the firmware because the network service of the firmware is not defined. can do.

또 다른 예로, 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스는, 시스템 모드 에뮬레이터(110)가 주변 장치에 대해 시스템 모드 에뮬레이션 환경의 제공에 실패하는 케이스를 포함할 수 있다.As another example, the one or more cases causing the failure to provide the system mode emulation environment may include a case in which the system mode emulator 110 fails to provide the system mode emulation environment to the peripheral device.

또 다른 예로, 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스는, 시스템 모드 에뮬레이터(110)가 지원할 수 없는 커널(kernel) 또는 부트 로더(boot loader)로 인해 시스템 모드 에뮬레이션 환경의 제공을 실패하는 케이스를 포함할 수 있다.As another example, one or more cases causing the failure to provide the system mode emulation environment fail to provide the system mode emulation environment due to a kernel or boot loader that the system mode emulator 110 cannot support. It may include cases where

사용자 모드 에뮬레이터(120)는 시스템 모드 에뮬레이션 환경에서 IoT 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공한다.The user mode emulator 120 provides a user mode emulation environment to a target process among one or more processes for firmware of the IoT device in the system mode emulation environment.

여기서, 사용자 모드 에뮬레이션 환경이란, 대상 프로세스에 대한 에뮬레이팅을 수행할 수 있는 환경을 의미한다. Here, the user mode emulation environment means an environment in which emulation of a target process can be performed.

이때, 대상 프로세스란, 펌웨어를 실행함에 따라 발생되는 하나 이상의 프로세스 중 퍼징 수행의 타겟이 되는 프로세스를 의미한다.In this case, the target process refers to a process that is a target of performing fuzzing among one or more processes generated as the firmware is executed.

일 실시예에 따르면, 대상 프로세스는 사용자로부터 입력을 요청하는 프로세스일 수 있다. 예를 들어, 대상 프로세스는 웹 어플리케이션을 통해 사용자의 입력을 요청하는 프로세스일 수 있다. According to an embodiment, the target process may be a process that requests input from a user. For example, the target process may be a process that requests a user's input through a web application.

테스팅부(130)는 대상 프로세스 내 포함된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성하고, 테스트 케이스를 이용하여 사용자 모드 에뮬레이션 환경에서 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행한다.The testing unit 130 generates a test case having a specific format based on a keyword included in the target process, and performs mutation-based fuzzing on the target process in the user mode emulation environment using the test case.

이하의 실시예에서 변이 기반 퍼징이란, 퍼징 수행 시 기 마련된 시드 파일(seed file)을 변형하여 테스트 케이스를 생성하는 퍼징 기법을 지칭한다.In the following embodiments, mutation-based fuzzing refers to a fuzzing technique that generates a test case by modifying a seed file prepared when fuzzing is performed.

일 실시예에 따르면, 특정 형식이란, 대상 프로세스에 실행에 사용되는 데이터가 요구하는 형식일 수 있다. 구체적으로, 대상 프로세스에 실행에 사용되는 데이터는 대상 프로세스에 입력에 사용되는 데이터에 포함할 수 있다. According to an embodiment, the specific format may be a format required by data used for execution in a target process. Specifically, data used for execution in the target process may be included in data used for input to the target process.

예를 들어, 펌웨어가 웹 애플리케이션을 통해 사용자의 입력을 요청할 때 웹 애플리케이션의 입력에 사용되는 데이터가 특정 형식을 갖는 패킷을 구성하는 경우, 테스팅부(130)는 대상 프로세스로부터 해당 패킷 형식을 갖춘 테스트 케이스를 생성할 수 있다.For example, when the firmware requests user input through the web application, when data used for input of the web application constitutes a packet having a specific format, the testing unit 130 performs a test with the corresponding packet format from the target process. You can create a case.

도 2는 추가적인 실시예에 따른 펌웨어 퍼징 장치(100)를 설명하기 위한 흐름도이다.2 is a flowchart illustrating the firmware purge apparatus 100 according to an additional embodiment.

도 2를 참조하면, 추가적인 실시예에 따른 펌웨어 퍼징 장치(100)는 검출부(140)를 더 포함할 수 있다.Referring to FIG. 2 , the apparatus 100 for purging firmware according to an additional embodiment may further include a detection unit 140 .

다만, 도 2에 도시된 예에서 시스템 모드 에뮬레이터(110), 사용자 모드 에뮬레이터(120) 및 테스팅부(130)는 도 1에 도시된 구성과 동일한 구성이므로, 이에 대한 중복되는 설명은 생략하도록 한다.However, in the example shown in FIG. 2 , the system mode emulator 110 , the user mode emulator 120 , and the testing unit 130 have the same configuration as the configuration shown in FIG. 1 , and thus a redundant description thereof will be omitted.

검출부(140)는 동적 기호 실행(concolic execution)을 통해 대상 프로세스에서 분기 조건을 해결하는 키워드를 검출한다.The detection unit 140 detects a keyword that resolves a branch condition in a target process through concolic execution.

이하의 실시예들에서, 동적 기호 실행이란, 실제 수행(concrete execution)과 기호 실행(symbolic execution)을 모두 이용하여 경로 제약조건(path constraint)을 해결하는 기법으로, 동적 기호 실행은 동적 분석 및 정적 분석 기법을 결합하여 테스트 케이스를 자동으로 생성한다. In the following embodiments, dynamic symbol execution is a technique for solving path constraints using both concrete execution and symbolic execution, and dynamic symbol execution includes dynamic analysis and static Combine analysis techniques to automatically generate test cases.

구체적으로, 검출부(140)는 동적 기호 실행을 통해 테스트 케이스 생성 대상이 되는 프로세스와 초기의 테스트 케이스를 제공받아 초기 테스트 케이스를 실행한다. 이후, 실행된 프로그램의 경로를 분석하여 분기문에서 어떠한 조건이 수행되었는지를 나타내는 경로 분기 조건식을 생성한다. Specifically, the detection unit 140 executes the initial test case by receiving the process and the initial test case as a test case generation target through dynamic symbol execution. Thereafter, the path of the executed program is analyzed to generate a path branching conditional expression indicating what condition is executed in the branching statement.

이때, 검출부(140)는 프로세스의 모든 실행 경로를 테스트하거나, 사용자가 지정한 종료 조건을 만족하면, 생성된 경로 분기 조건식을 분석함으로써 분기 조건을 해결하는 키워드를 추출할 수 있다.In this case, the detection unit 140 may extract a keyword that resolves the branch condition by testing all execution paths of the process or by analyzing the generated path branch condition expression when a user-specified termination condition is satisfied.

추가적인 실시예에 따르면, 펌웨어 퍼징 장치(100)는 제2 테스팅부(미도시)를 포함함으로써, 테스팅부(130)에서 실행되는 퍼징의 안정성을 보완시킬 수 있다. According to an additional embodiment, the firmware purging apparatus 100 may include a second testing unit (not shown), thereby supplementing the stability of the fuzzing performed by the testing unit 130 .

일 실시예에 따르면, 제2 테스팅부(미도시)는 퍼징의 실행 중 기 설정된 이벤트가 발생된 경우, 발생된 이벤트를 해결하기 위한 동작을 시스템 모드 에뮬레이션 환경에서 수행할 수 있다. According to an embodiment, when a preset event occurs during the execution of fuzzing, the second testing unit (not shown) may perform an operation for resolving the generated event in the system mode emulation environment.

일 실시예에 따르면, 제2 테스팅부(미도시)는 퍼징이 실행되는 도중 페이지 폴트(page fault)가 발생하는 경우, 페이지 폴트를 해결하기 위한 동작으로 페이지 폴트를 유발한 명령어를 실행하여 페이지 폴트를 처리할 수 있다.According to an embodiment, when a page fault occurs while fuzzing is being executed, the second testing unit (not shown) executes a command that caused the page fault as an operation for resolving the page fault to cause the page fault. can be processed

다른 실시예에 따르면, 제2 테스팅부(미도시)는 기 설정된 이벤트가 발생되는 경우로서, 퍼징이 실행되는 도중 하드웨어 의존성 함수의 실행이 요구되는 경우, 사전 생성된 라이브러리(library)를 이용하여 하드웨어 의존성 함수를 처리할 수 있다.According to another embodiment, the second testing unit (not shown) is a case in which a preset event is generated, and when execution of a hardware-dependent function is required while fuzzing is executed, hardware using a pre-created library (library) is used. Dependency functions can be handled.

여기서, 하드웨어 의존성 함수는 IoT 기기가 IoT 기기의 주변 기기로 접근을 가능하게 하는 함수를 의미한다.Here, the hardware-dependent function refers to a function that enables an IoT device to access a peripheral device of the IoT device.

예를 들어, IoT 기기가 주변 기기인 NVRAM 장치로부터 config 파일을 읽는 함수를 nvram_get()라고 가정하면, 이때 하드웨어 의존 함수는 nvram_get()일 수 있다. For example, assuming that the function for the IoT device to read the config file from the NVRAM device, which is a peripheral device, is nvram_get(), in this case, the hardware-dependent function may be nvram_get().

다시 말해, 테스팅부(130)가 퍼징을 수행하는 도중 nvram_get() 함수의 실행이 요구되는 경우, 제2 테스팅부(미도시)는 라이브러리를 이용하여 nvram_get() 함수를 처리할 수 있다.In other words, when the execution of the nvram_get() function is required while the testing unit 130 is performing fuzzing, the second testing unit (not shown) may process the nvram_get() function using a library.

이때, 라이브러리란, 하드웨어 의존성 함수의 결과를 참(true)으로 반환할 수 있도록 함수나 데이터들을 미리 만들어 모아 놓은 집합체이다.In this case, the library is an aggregate in which functions or data are prepared in advance so that the result of the hardware-dependent function can be returned as true.

즉, 제2 테스팅부(미도시)는 nvram_get() 함수의 실행이 요구될 때 라이브러리를 통해 nvram_get() 함수의 결과 값을 참으로 반환함에 따라 NVRAM 장치로 접근하지 않으면서도 nvram_get() 함수를 처리할 수 있다. That is, the second testing unit (not shown) processes the nvram_get() function without accessing the NVRAM device as the result value of the nvram_get() function is returned as true through the library when the execution of the nvram_get() function is requested. can do.

이를 통해, 제2 테스팅부(미도시)는 주변 장치에 대해 에뮬레이션을 수행할 수 없는 에뮬레이터의 한계를 해결할 수 있다.Through this, the second testing unit (not shown) can solve the limitation of the emulator in which emulation cannot be performed on the peripheral device.

이때, 테스팅부(130)는 기 설정된 이벤트가 발생한 경우, 퍼징의 실행을 중단하고, 동작의 수행 결과에 기초하여 퍼징의 재개 여부를 결정할 수 있다. In this case, when a preset event occurs, the testing unit 130 may stop the execution of the fuzzing and determine whether to resume the fuzzing based on the result of the operation.

구체적으로, 제2 테스팅부(미도시)의 동작의 수행 결과가 기 설정된 이벤트 해결에 성공에 해당하는 경우, 테스팅부(130)는 퍼징의 재개를 결정할 수 있다. Specifically, when the result of performing the operation of the second testing unit (not shown) corresponds to success in resolving a preset event, the testing unit 130 may determine to resume fuzzing.

도 3은 일 실시예에 따른 펌웨어 퍼징 방법을 설명하기 위한 흐름도이다.3 is a flowchart illustrating a firmware purge method according to an embodiment.

예시적으로, 도 3에 도시된 방법은 도 1에서 도시된 펌웨어 퍼징 장치(100)에 의해 수행될 수 있다. For example, the method shown in FIG. 3 may be performed by the firmware purge device 100 shown in FIG. 1 .

도 3을 참조하면, 펌웨어 퍼징 장치(100)는 휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things) 기기에 시스템 모드 에뮬레이션 환경을 제공한다(310).Referring to FIG. 3 , the firmware fuzzing device 100 provides a system mode emulation environment to an Internet of Things (IoT) device based on a heuristic ( 310 ).

이후, 펌웨어 퍼징 장치(100)는 시스템 모드 에뮬레이션 환경에서 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공한다(320).Thereafter, the firmware purge apparatus 100 provides a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment ( 320 ).

이후, 펌웨어 퍼징 장치(100)는 대상 프로세스 내 포함된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성한다(330).Thereafter, the firmware fuzzing apparatus 100 generates a test case having a specific format based on the keyword included in the target process ( 330 ).

이후, 펌웨어 퍼징 장치(100)는 테스트 케이스를 이용하여 사용자 모드 에뮬레이션 환경에서 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행한다(340).Thereafter, the firmware fuzzing apparatus 100 performs mutation-based fuzzing on the target process in the user mode emulation environment using the test case ( 340 ).

이후, 펌웨어 퍼징 장치(100)는 펌웨어에 대한 퍼징 종료 조건이 만족되었는지 여부를 판단한다(350).Thereafter, the firmware purging apparatus 100 determines whether a fuzzing termination condition for the firmware is satisfied ( S350 ).

이때, 펌웨어 퍼징 장치(100)는 펌웨어에 대한 퍼징 종료 조건이 만족되지 않았다고 판단된 경우, 퍼징 종료 조건이 만족될 때까지 단계 330 및 340을 반복 수행한다.In this case, when it is determined that the fuzzing end condition for the firmware is not satisfied, the firmware purge apparatus 100 repeatedly performs steps 330 and 340 until the fuzzing end condition is satisfied.

한편, 퍼징 종료 조건은 예를 들어, 퍼징이 실행된 횟수일 수 있으나 실시예에 따라 다양하게 설정될 수 있다.Meanwhile, the purging termination condition may be, for example, the number of times the purging has been performed, but may be variously set according to an embodiment.

도 4는 추가적인 실시예에 따른 펌웨어 퍼징 방법을 설명하기 위한 흐름도이다. 4 is a flowchart illustrating a firmware purge method according to an additional embodiment.

예시적으로, 도 4에 도시된 방법은 도 2에서 도시된 펌웨어 퍼징 장치(100)에 의해 수행될 수 있다. For example, the method shown in FIG. 4 may be performed by the firmware purge device 100 shown in FIG. 2 .

도 4를 참조하면, 펌웨어 퍼징 장치(100)는 휴리스틱 기법에 기초하여 사물 인터넷 기기에 시스템 모드 에뮬레이션 환경을 제공한다(410).Referring to FIG. 4 , the firmware fuzzing apparatus 100 provides a system mode emulation environment to the IoT device based on a heuristic ( 410 ).

이후, 펌웨어 퍼징 장치(100)는 시스템 모드 에뮬레이션 환경에서 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공한다(420).Thereafter, the firmware purge device 100 provides a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment ( 420 ).

이후, 펌웨어 퍼징 장치(100)는 동적 기호 실행(concolic execution)을 통해 대상 프로세스에서 분기 조건을 해결하는 키워드를 검출한다(430).Thereafter, the firmware fuzzing apparatus 100 detects a keyword that resolves a branch condition in the target process through concolic execution ( 430 ).

이후, 펌웨어 퍼징 장치(100)는 검출된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성한다(440).Thereafter, the firmware fuzzing apparatus 100 generates a test case having a specific format based on the detected keyword ( 440 ).

이후, 펌웨어 퍼징 장치(100)는 테스트 케이스를 이용하여 사용자 모드 에뮬레이션 환경에서 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행한다(450).Thereafter, the firmware fuzzing apparatus 100 performs mutation-based fuzzing on the target process in the user mode emulation environment using the test case ( 450 ).

이후, 펌웨어 퍼징 장치(100)는 펌웨어에 대한 퍼징 종료 조건이 만족되었는지 여부를 판단한다(460).Thereafter, the firmware purging apparatus 100 determines whether a fuzzing termination condition for the firmware is satisfied ( 460 ).

이때, 펌웨어 퍼징 장치(100)는 펌웨어에 대한 퍼징 종료 조건이 만족되지 않았다고 판단된 경우, 퍼징 종료 조건이 만족될 때까지 단계 430 및 460을 반복 수행한다.In this case, when it is determined that the fuzzing end condition for the firmware is not satisfied, the firmware purge apparatus 100 repeatedly performs steps 430 and 460 until the fuzzing end condition is satisfied.

한편, 퍼징 종료 조건은 예를 들어, 퍼징이 실행된 횟수일 수 있으나 실시예에 따라 다양하게 설정될 수 있다.Meanwhile, the purging termination condition may be, for example, the number of times the purging has been performed, but may be variously set according to an embodiment.

또한, 도 3 및 도 4에 도시된 실시예는 복수 개의 단계로 나누어 기재되었으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다. In addition, although the embodiment shown in FIGS. 3 and 4 has been described as being divided into a plurality of steps, at least some of the steps are performed in a different order, performed together in combination with other steps, omitted, or divided into detailed steps. Alternatively, one or more steps not shown may be added and performed.

도 5는 일 실시예에 따른 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다.5 is a block diagram illustrating and describing a computing environment 10 including a computing device according to an embodiment.

도 5는 일 실시예에 따르면 컴퓨팅 장치(12)를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 않은 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.5 is a block diagram illustrating and describing a computing environment 10 including a computing device 12 according to an embodiment. In the illustrated embodiment, each component may have different functions and capabilities other than those described below, and may include additional components other than those not described below.

도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 펌웨어 퍼징 장치(100)에 포함된 하나 이상의 컴포넌트일 수 있다.The illustrated computing environment 10 includes a computing device 12 . In one embodiment, computing device 12 may be one or more components included in firmware fuzzing device 100 .

컴퓨팅 장치(12)는 적어도 하나의 프로그램(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로그램(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로그램(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로그램(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.Computing device 12 includes at least one program 14 , computer readable storage medium 16 , and communication bus 18 . Program 14 may cause computing device 12 to operate in accordance with the exemplary embodiments discussed above. For example, program 14 may execute one or more programs stored in computer-readable storage medium 16 . The one or more programs may include one or more computer-executable instructions that, when executed by the program 14, configure the computing device 12 to perform operations in accordance with the exemplary embodiment. can be

컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로그램(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.Computer-readable storage medium 16 is configured to store computer-executable instructions or program code, program data, and/or other suitable form of information. The program 20 stored in the computer readable storage medium 16 includes a set of instructions executable by the program 14 . In one embodiment, computer-readable storage medium 16 includes memory (volatile memory, such as random access memory, non-volatile memory, or a suitable combination thereof), one or more magnetic disk storage devices, optical disk storage devices, flash It may be memory devices, other forms of storage medium accessed by computing device 12 and capable of storing desired information, or a suitable combination thereof.

통신 버스(18)는 프로그램(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.Communication bus 18 interconnects various other components of computing device 12 , including program 14 and computer readable storage medium 16 .

컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.Computing device 12 may also include one or more input/output interfaces 22 and one or more network communication interfaces 26 that provide interfaces for one or more input/output devices 24 . The input/output interface 22 and the network communication interface 26 are coupled to the communication bus 18 . Input/output device 24 may be coupled to other components of computing device 12 via input/output interface 22 . Exemplary input/output device 24 may include a pointing device (such as a mouse or trackpad), a keyboard, a touch input device (such as a touchpad or touchscreen), a voice or sound input device, various types of sensor devices, and/or imaging devices. input devices and/or output devices such as display devices, printers, speakers and/or network cards. The exemplary input/output device 24 may be included in the computing device 12 as a component constituting the computing device 12 , and may be connected to the computing device 12 as a separate device distinct from the computing device 12 . may be

이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 청구범위뿐만 아니라 이 청구범위와 균등한 것들에 의해 정해져야 한다.Although the present invention has been described in detail through representative embodiments above, those of ordinary skill in the art to which the present invention pertains can make various modifications to the above-described embodiments without departing from the scope of the present invention. will understand Therefore, the scope of the present invention should not be limited to the described embodiments, but should be defined by the following claims as well as the claims and equivalents.

10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로그램
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
100: 펌웨어 퍼징 장치
110: 시스템 모드 에뮬레이터
120: 사용자 모드 에뮬레이터
130: 테스팅부
140: 검출부
10: Computing Environment
12: computing device
14: Program
16: computer readable storage medium
18: communication bus
20: Program
22: input/output interface
24: input/output device
26: network communication interface
100: firmware purge device
110: system mode emulator
120: user mode emulator
130: testing unit
140: detection unit

Claims (12)

휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things) 기기에 시스템 모드 에뮬레이션 환경을 제공하는 시스템 모드 에뮬레이터;
상기 시스템 모드 에뮬레이션 환경에서 상기 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공하는 사용자 모드 에뮬레이터;
동적 기호 실행(concolic execution)을 통해 분기 조건을 해결하는 키워드를 상기 대상 프로세스에서 검출하는 검출부; 및
상기 검출된 키워드에 기초하여 특정 형식을 갖춘 테스트 케이스를 생성하고, 상기 테스트 케이스를 이용하여 상기 사용자 모드 에뮬레이션 환경에서 상기 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행하는 테스팅부를 포함하는, 펌웨어 퍼징 장치.
a system mode emulator that provides a system mode emulation environment to an Internet of Things (IoT) device based on a heuristics technique;
a user mode emulator providing a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment;
a detection unit for detecting, in the target process, a keyword for resolving a branch condition through dynamic symbolic execution; and
A firmware fuzzing device comprising: a testing unit that generates a test case having a specific format based on the detected keyword and performs mutation-based fuzzing on the target process in the user mode emulation environment using the test case .
청구항 1에 있어서,
상기 시스템 모드 에뮬레이터는,
상기 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스를 반복 실행하고, 반복 실행하여 획득된 결과 중 상기 시스템 모드 에뮬레이션 환경의 제공에 성공한 케이스에 기초하여 상기 시스템 모드 에뮬레이션 환경을 제공하는, 펌웨어 퍼징 장치.
The method according to claim 1,
The system mode emulator is
Firmware purge that repeatedly executes one or more cases that cause failure to provide the system mode emulation environment, and provides the system mode emulation environment based on a case in which the system mode emulation environment succeeds in providing the system mode emulation environment among the results obtained by repeated execution Device.
청구항 1에 있어서,
상기 대상 프로세스는,
사용자로부터 입력을 요청하는 프로세스인, 펌웨어 퍼징 장치.
The method according to claim 1,
The target process is
A firmware purge device, a process that requests input from a user.
청구항 1에 있어서,
상기 특정 형식은,
상기 대상 프로세스의 실행에 사용되는 데이터가 요구하는 형식인, 펌웨어 퍼징 장치.
The method according to claim 1,
The specific format is
A firmware purge device, in a format required for data used for execution of the target process.
청구항 1에 있어서,
상기 특정 형식은,
상기 대상 프로세스에 입력되는 데이터가 요구하는 형식인, 펌웨어 퍼징 장치.
The method according to claim 1,
The specific format is
The format required for data input to the target process, firmware purge device.
삭제delete 휴리스틱(heuristics) 기법에 기초하여 사물 인터넷(IoT; Internet of Things) 기기에 시스템 모드 에뮬레이션 환경을 제공하는 단계;
상기 시스템 모드 에뮬레이션 환경에서 상기 기기의 펌웨어에 대한 하나 이상의 프로세스 중 대상 프로세스에 사용자 모드 에뮬레이션 환경을 제공하는 단계;
동적 기호 실행(concolic execution)을 통해 분기 조건을 해결하는 키워드를 상기 대상 프로세스에서 검출하는 단계;
상기 검출된 키워드를 이용하여 특정 형식을 갖춘 테스트 케이스를 생성하는 단계; 및
상기 테스트 케이스를 이용하여 상기 사용자 모드 에뮬레이션 환경에서 상기 대상 프로세스에 변이 기반 퍼징(fuzzing)을 실행하는 단계를 포함하는, 펌웨어 퍼징 방법.
providing a system mode emulation environment to an Internet of Things (IoT) device based on a heuristics technique;
providing a user mode emulation environment to a target process among one or more processes for firmware of the device in the system mode emulation environment;
detecting, in the target process, a keyword that resolves a branch condition through dynamic symbolic execution;
generating a test case having a specific format by using the detected keyword; and
and performing mutation-based fuzzing on the target process in the user mode emulation environment using the test case.
청구항 7에 있어서,
상기 시스템 모드 에뮬레이션 환경을 제공하는 단계는,
상기 시스템 모드 에뮬레이션 환경의 제공 실패를 유발하는 하나 이상의 케이스를 반복 실행하고, 반복 실행하여 획득된 결과 중 상기 시스템 모드 에뮬레이션 환경의 제공에 성공한 케이스에 기초하여 상기 시스템 모드 에뮬레이션 환경을 제공하는, 펌웨어 퍼징 방법.
8. The method of claim 7,
The step of providing the system mode emulation environment,
Firmware purge that repeatedly executes one or more cases that cause failure to provide the system mode emulation environment, and provides the system mode emulation environment based on a case in which the system mode emulation environment succeeds in providing the system mode emulation environment among the results obtained by repeated execution Way.
청구항 7에 있어서,
상기 대상 프로세스는,
사용자로부터 입력을 요청하는 프로세스인, 펌웨어 퍼징 방법.
8. The method of claim 7,
The target process is
A method of fuzzing firmware, a process that requests input from a user.
청구항 7에 있어서,
상기 특정 형식은,
상기 대상 프로세스의 실행에 사용되는 데이터가 요구하는 형식인, 펌웨어 퍼징 방법.
8. The method of claim 7,
The specific format is
A method for purging firmware, wherein data used for execution of the target process is in a required format.
청구항 7에 있어서,
상기 특정 형식은,
상기 대상 프로세스에 입력되는 데이터가 요구하는 형식인, 펌웨어 퍼징 방법.
8. The method of claim 7,
The specific format is
A method for purging firmware, in a format required for data input to the target process.
삭제delete
KR1020210078620A 2021-06-17 2021-06-17 Apparatus and method for fuzzing firmware KR102305386B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210078620A KR102305386B1 (en) 2021-06-17 2021-06-17 Apparatus and method for fuzzing firmware

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210078620A KR102305386B1 (en) 2021-06-17 2021-06-17 Apparatus and method for fuzzing firmware

Publications (1)

Publication Number Publication Date
KR102305386B1 true KR102305386B1 (en) 2021-09-24

Family

ID=77914571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210078620A KR102305386B1 (en) 2021-06-17 2021-06-17 Apparatus and method for fuzzing firmware

Country Status (1)

Country Link
KR (1) KR102305386B1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017076412A (en) * 2016-11-21 2017-04-20 インテル・コーポレーション Test, verification, and program and method of debug architecture
KR101972825B1 (en) 2019-01-18 2019-04-30 한국과학기술원 Method and apparatus for automatically analyzing vulnerable point of embedded appliance by using hybrid analysis technology, and computer program for executing the method
JP2019091411A (en) * 2017-10-18 2019-06-13 エーオー カスペルスキー ラボAO Kaspersky Lab System and method for managing computing resources for detection of malicious files based on machine learning model
JP2019220141A (en) * 2018-06-18 2019-12-26 富士通株式会社 Branch Coverage Guided Symbolic Execution for Hybrid Fuzz Testing of Software Binaries
KR102209676B1 (en) * 2020-07-20 2021-01-28 세종대학교산학협력단 Apparatus and method for fuzzing firmware

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017076412A (en) * 2016-11-21 2017-04-20 インテル・コーポレーション Test, verification, and program and method of debug architecture
JP2019091411A (en) * 2017-10-18 2019-06-13 エーオー カスペルスキー ラボAO Kaspersky Lab System and method for managing computing resources for detection of malicious files based on machine learning model
JP2019220141A (en) * 2018-06-18 2019-12-26 富士通株式会社 Branch Coverage Guided Symbolic Execution for Hybrid Fuzz Testing of Software Binaries
KR101972825B1 (en) 2019-01-18 2019-04-30 한국과학기술원 Method and apparatus for automatically analyzing vulnerable point of embedded appliance by using hybrid analysis technology, and computer program for executing the method
KR102209676B1 (en) * 2020-07-20 2021-01-28 세종대학교산학협력단 Apparatus and method for fuzzing firmware

Similar Documents

Publication Publication Date Title
US11042645B2 (en) Auto-remediation workflow for computer security testing utilizing pre-existing security controls
US20050108562A1 (en) Technique for detecting executable malicious code using a combination of static and dynamic analyses
US8910291B2 (en) Black-box testing of web applications with client-side code evaluation
US9684786B2 (en) Monitoring an application in a process virtual machine
US9507933B2 (en) Program execution apparatus and program analysis apparatus
US9900324B1 (en) System to discover and analyze evasive malware
US9684492B2 (en) Automatic determination of compiler configuration
US10983803B2 (en) Annotating dynamic libraries for multi-OS applications
WO2022180702A1 (en) Analysis function addition device, analysis function addition program, and analysis function addition method
US20140137084A1 (en) Security analysis using relational abstraction of data structures
US10310956B2 (en) Techniques for web service black box testing
US9569335B1 (en) Exploiting software compiler outputs for release-independent remote code vulnerability analysis
WO2014158417A1 (en) Virtual environment having harvard architecture
KR102304861B1 (en) Apparatus and method for detecting firmware vulnerabiliry based on hybrid fuzzing
Kim et al. {FuzzOrigin}: Detecting {UXSS} vulnerabilities in browsers through origin fuzzing
US9672015B2 (en) Automatic determination of compiler configuration
Peng et al. {GLeeFuzz}: Fuzzing {WebGL} Through Error Message Guided Mutation
KR20120078017A (en) Cloud computing-based system for supporting analysis of malicious code and analyst terminal using the same
CN113821297B (en) Emulator and emulation method
KR20200056647A (en) Method and apparatus for monitoring security velnerabile firmware
KR102305386B1 (en) Apparatus and method for fuzzing firmware
EP3506136B1 (en) Detecting stack cookie utilization in a binary software component using binary static analysis
KR102323621B1 (en) Apparatus and method for fuzzing firmware
US9672020B2 (en) Selectively loading precompiled header(s) and/or portion(s) thereof
WO2023067665A1 (en) Analysis function addition method, analysis function addition device, and analysis function addition program

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant