KR102635486B1 - Apparatus and method for performing fuzzing - Google Patents

Apparatus and method for performing fuzzing Download PDF

Info

Publication number
KR102635486B1
KR102635486B1 KR1020230000143A KR20230000143A KR102635486B1 KR 102635486 B1 KR102635486 B1 KR 102635486B1 KR 1020230000143 A KR1020230000143 A KR 1020230000143A KR 20230000143 A KR20230000143 A KR 20230000143A KR 102635486 B1 KR102635486 B1 KR 102635486B1
Authority
KR
South Korea
Prior art keywords
port
state
packet
predetermined
field
Prior art date
Application number
KR1020230000143A
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 KR1020230000143A priority Critical patent/KR102635486B1/en
Application granted granted Critical
Publication of KR102635486B1 publication Critical patent/KR102635486B1/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 개시의 몇몇 실시예에 따라 프로세서를 포함하는 컴퓨팅 장치에서 퍼징(fuzzing)을 수행하기 위한 방법으로서, 디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하는 단계; 상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계; 상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하는 단계; 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계; 및 상기 제 1 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계;를 포함할 수 있다.A method for performing fuzzing in a computing device including a processor according to some embodiments of the present disclosure, wherein the method is based on whether pairing is required for each of at least one port included in the device. selecting a first port from among at least one port; In order to enter the first port into a predetermined first state, transmitting to the first port a first state transition packet in which a command corresponding to the predetermined first state is mapped; determining a first current state of the first port based on a first response packet to the first state transition packet received from the first port; When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. steps; and performing a fuzzing test of the first port using the first test packet.

Description

퍼징을 수행하기 위한 방법 및 장치{APPARATUS AND METHOD FOR PERFORMING FUZZING}Method and apparatus for performing fuzzing {APPARATUS AND METHOD FOR PERFORMING FUZZING}

본 개시내용은 퍼징 수행하기 위한 방법 및 장치에 관한 것으로, 보다 구체적으로 디바이스의 포트에 대한 퍼징을 수행하기 위한 방법 및 장치에 관한 것이다.The present disclosure relates to a method and apparatus for performing fuzzing, and more specifically, to a method and apparatus for performing fuzzing on a port of a device.

블루투스(Bluetooth)란 디지털 통신 기기(예를 들어, 스마트 폰, 태블릿 PC 등)를 위한 개인 근거리 무선 통신 산업 표준이다. 블루투스는 ISM 대역에 포함되는 2.4GHz를 이용하며 최대 100m 거리를 둔 기기 간의 정보를 교환하는데 사용될 수 있다.Bluetooth is an industry standard for personal short-range wireless communication for digital communication devices (e.g., smart phones, tablet PCs, etc.). Bluetooth uses 2.4GHz, which is included in the ISM band, and can be used to exchange information between devices up to 100m away.

블루투스는 Bluetooth Special Interest Group(SIG)를 통해 관리되며 블루투스 기기로 인증을 받기 위해서는 SIG에서 제정한 블루투스 표준 규격에 만족해야 한다. 전기통신, 컴퓨터, 네트워크, 가전 관련 기기를 제조하는 기업들은 SIG에서 공개한 블루투스 문서를 참조해 블루투스 프로토콜 스택을 구현할 수 있다.Bluetooth is managed through the Bluetooth Special Interest Group (SIG), and in order to be certified as a Bluetooth device, it must meet the Bluetooth standards established by the SIG. Companies that manufacture telecommunication, computer, network, and home appliance-related devices can implement the Bluetooth protocol stack by referring to the Bluetooth document released by SIG.

블루투스를 사용하는 장치는 블루투스 프로토콜 스택의 취약점을 효과적으로 탐지하기 위해 퍼징(fuzzing)을 활용할 수 있다. Devices that use Bluetooth can utilize fuzzing to effectively detect vulnerabilities in the Bluetooth protocol stack.

퍼징이란 소프트웨어에서 알지 못하지만 발생할 수 있는 취약점을 찾기 위해 무작위의 값을 주입하여 비정상적 행동을 출력하는지 검증하는 기법일 수 있다. 따라서, 블루투스를 사용하는 장치는 블루투스 프로토콜 스택에서 발생될 수 있는 문제점을 획득하기 위해 퍼징 테스트를 사용할 수 있다.Fuzzing can be a technique to verify whether abnormal behavior is output by injecting random values to find unknown but possible vulnerabilities in software. Therefore, a device using Bluetooth can use a fuzzing test to detect problems that may occur in the Bluetooth protocol stack.

대한민국 등록특허 10-2190727(2020.12.08. 등록)Republic of Korea registered patent 10-2190727 (registered on December 8, 2020)

본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 디바이스의 포트에 대한 퍼징을 수행하기 위함이다.This disclosure was made in response to the above-described background technology, and is intended to perform fuzzing on a port of a device.

본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present disclosure are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the description below.

전술한 바와 같은 과제를 해결하기 위한 본 개시의 몇몇 실시예에 따라, 프로세서를 포함하는 컴퓨팅 장치에서 퍼징(fuzzing)을 수행하기 위한 방법으로서, 디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하는 단계; 상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계; 상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하는 단계; 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계; 및 상기 제 1 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계;를 포함할 수 있다.According to some embodiments of the present disclosure for solving the problems described above, a method for performing fuzzing in a computing device including a processor, pairing each of at least one port included in the device. selecting a first port from among the at least one port based on whether pairing is required; In order to enter the first port into a predetermined first state, transmitting to the first port a first state transition packet in which a command corresponding to the predetermined first state is mapped; determining a first current state of the first port based on a first response packet to the first state transition packet received from the first port; When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. steps; and performing a fuzzing test of the first port using the first test packet.

대안적으로, 상기 제 1 포트를 선택하는 단계는, 상기 적어도 하나의 포트 중에서 상기 페어링을 요구하고, 그리고 상기 페어링의 요구를 무시하고 통신이 가능한 상기 제 1 포트를 선택하는 단계;를 포함할 수 있다.Alternatively, selecting the first port may include requesting the pairing from among the at least one port, and selecting the first port capable of communication while ignoring the pairing request. there is.

대안적으로, 상기 제 1 포트를 선택하는 단계는, 상기 적어도 하나의 포트 중에서 상기 페어링을 요구하지 않는 상기 제 1 포트를 선택하는 단계;를 포함할 수 있다.Alternatively, selecting the first port may include selecting the first port that does not require pairing from among the at least one port.

대안적으로, 상기 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계 이전에, 작업(job)에 기초하여 상기 디바이스의 통신 프로토콜에 따라 사전 결정된 복수의 상태들을 복수의 그룹들로 분류하는 단계; 및 상기 복수의 그룹들 각각에 대응되는 명령어를 매핑시키는 단계;를 포함할 수 있다.Alternatively, before transmitting the first state transition packet to the first port, classifying a plurality of states into a plurality of groups based on a job and according to a communication protocol of the device. ; and mapping a command corresponding to each of the plurality of groups.

대안적으로, 상기 명령어에 포함된 적어도 하나의 필드는, 고정되어 변경 불가능한 데이터를 포함하는 고정 필드(fixed field); 다른 필드에 종속된 데이터를 포함하는 종속 필드(dependent field); 및 변형 가능한 데이터를 포함하는 변형 필드(mutable field);를 포함할 수 있다.Alternatively, the at least one field included in the instruction may be a fixed field containing data that is fixed and cannot be changed; a dependent field containing data that is dependent on another field; and a mutable field containing mutable data.

대안적으로, 상기 변형 필드는, 상기 디바이스의 통신 채널 또는 포트 중 적어도 하나와 관련된 데이터를 포함하는 핵심 필드(core field); 및 응용 소프트웨어와 관련된 데이터를 포함하는 응용 필드(application field);를 포함할 수 있다.Alternatively, the modification field may include: a core field containing data related to at least one of a communication channel or port of the device; and an application field containing data related to application software.

대안적으로, 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 상기 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계는, 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 명령어에 포함된 핵심 필드를 변형시킨 상기 제 1 테스트 패킷을 생성하는 단계;를 포함할 수 있다.Alternatively, when the first current state of the first port corresponds to the predetermined first state, the at least one field included in the instruction corresponding to the predetermined first state is mutated. The step of generating test packet 1 includes, when the first current state of the first port corresponds to the predetermined first state, generating the first test packet in which a key field included in the command is modified; may include.

대안적으로, 상기 제 1 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계는, 상기 제 1 테스트 패킷을 상기 제 1 포트에 전송하는 단계; 및 상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는 단계;를 포함할 수 있다.Alternatively, performing a fuzzing test of the first port using the first test packet may include transmitting the first test packet to the first port; and determining whether a vulnerability exists in the first port based on a second response packet to the first test packet received from the first port.

대안적으로, 상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는 단계는, 상기 제 2 응답 패킷과 사전 저장된 정상 응답 패킷이 서로 상이한 경우, 상기 제 1 포트에 상기 제 1 테스트 패킷에 의한 취약점이 발현된 것으로 결정하는 단계; 및 발현된 상기 취약점에 관한 정보를 생성하는 단계;를 포함할 수 있다.Alternatively, the step of determining whether a vulnerability of the first port is expressed based on a second response packet to the first test packet received from the first port may include the second response packet and a pre-stored normal response packet. If these values are different from each other, determining that a vulnerability caused by the first test packet is present in the first port; and generating information about the revealed vulnerability.

대안적으로, 상기 제 1 포트를 상기 제 1 상태와 상이한 사전 결정된 제 2 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 2 상태에 대응되는 명령어가 매핑(mapping)된 제 2 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계; 상기 제 1 포트로부터 수신한 상기 제 2 상태 전이 패킷에 대한 제 3 응답 패킷에 기초하여 상기 제 1 포트의 제 2 현재 상태(state)를 결정하는 단계; 상기 제 1 포트의 제 2 현재 상태가 상기 사전 결정된 제 2 상태에 대응되는 경우, 상기 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 2 테스트 패킷을 생성하는 단계; 및 상기 제 2 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계;를 더 포함할 수 있다.Alternatively, in order to enter the first port into a predetermined second state that is different from the first state, a second state transition packet in which a command corresponding to the predetermined second state is mapped transmitting to the first port; determining a second current state of the first port based on a third response packet to the second state transition packet received from the first port; When the second current state of the first port corresponds to the predetermined second state, generating a second test packet in which at least one field included in the command corresponding to the predetermined second state is mutated. steps; and performing a fuzzing test of the first port using the second test packet.

대안적으로, 컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 퍼징(fuzzing)을 수행하기 위한 컴퓨팅 장치의 프로세서로 하여금 이하의 단계들을 수행하기 위한 명령들을 포함하며, 상기 단계들은: 디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하는 단계; 상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계; 상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하는 단계; 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계; 및 상기 제 1 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계;를 포함할 수 있다.Alternatively, a computer program stored on a computer-readable storage medium, the computer program comprising instructions for causing a processor of a computing device to perform fuzzing, the steps comprising: selecting a first port from among the at least one port based on whether pairing is required for each of the at least one port included in; In order to enter the first port into a predetermined first state, transmitting to the first port a first state transition packet in which a command corresponding to the predetermined first state is mapped; determining a first current state of the first port based on a first response packet to the first state transition packet received from the first port; When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. steps; and performing a fuzzing test of the first port using the first test packet.

대안적으로, 퍼징(fuzzing)을 수행하기 위한 컴퓨팅 장치에 있어서, 적어도 하나의 코어를 포함하는 프로세서; 상기 프로세서에 의해 실행가능한 컴퓨터 프로그램을 저장하는 메모리; 및 네트워크부;를 포함하고, 상기 프로세서는, 디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하고, 상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하고, 상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하고, 상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하고, 그리고 상기 제 1 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행할 수 있다.Alternatively, a computing device for performing fuzzing, comprising: a processor including at least one core; a memory storing a computer program executable by the processor; and a network unit, wherein the processor selects a first port from among the at least one port based on whether pairing is required for each of the at least one port included in the device, and the first port is selected from the at least one port. 1 In order to enter port into a predetermined first state, a first state transition packet in which a command corresponding to the predetermined first state is mapped is transmitted to the first port, and the first port A first current state of the first port is determined based on a first response packet to the first state transition packet received from, and the first current state of the first port is the predetermined first state. If it corresponds to, generate a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated, and use the first test packet to test the first port. A fuzzing test can be performed.

본 개시의 일 실시예에 따른 기법은 디바이스의 포트에 대한 퍼징을 수행할 수 있다.A technique according to an embodiment of the present disclosure can perform fuzzing on a port of a device.

본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects that can be obtained from the present disclosure are not limited to the effects mentioned above, and other effects not mentioned can be clearly understood by those skilled in the art from the description below. .

다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 구체적인 세부사항들 없이 실시될 수 있음은 명백할 것이다.
도 1은 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 시스템을 개략적으로 나타낸 도면이다.
도 2는 본 개시의 몇몇 실시예에 따른 명령어의 구조를 개략적으로 나타낸 도면이다.
도 3은 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치에 의해 테스트 패킷을 생성하는 과정을 나타낸 도면이다.
도 4는 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치의 프로그램과 종래의 기술들의 상태 커버리지(state coverage)를 나타낸 도면이다.
도 5는 본 개시의 몇몇 실시예에 따라 퍼징을 수행하기 위한 방법을 예시적으로 나타낸 도면이다.
도 6은 본 개시의 실시예들이 구현될 수 있는 예시적인 컴퓨팅 환경에 대한 간략하고 일반적인 개략도를 도시한다.
Various aspects will now be described with reference to the drawings, where like reference numerals are used to collectively refer to like elements. In the following examples, for purposes of explanation, numerous specific details are set forth to provide a comprehensive understanding of one or more aspects. However, it will be clear that such aspect(s) may be practiced without these specific details.
1 is a diagram schematically showing a system for performing fuzzing according to some embodiments of the present disclosure.
Figure 2 is a diagram schematically showing the structure of instructions according to some embodiments of the present disclosure.
FIG. 3 is a diagram illustrating a process of generating a test packet by a computing device for performing fuzzing according to some embodiments of the present disclosure.
FIG. 4 is a diagram illustrating state coverage of a program of a computing device and conventional techniques for performing fuzzing according to some embodiments of the present disclosure.
Figure 5 is a diagram illustrating a method for performing fuzzing according to some embodiments of the present disclosure.
6 shows a brief, general schematic diagram of an example computing environment in which embodiments of the present disclosure may be implemented.

다양한 실시예들이 이제 도면을 참조하여 설명된다. 본 명세서에서, 다양한 설명들이 본 개시의 이해를 제공하기 위해서 제시된다. 그러나, 이러한 실시예들은 이러한 구체적인 설명 없이도 실행될 수 있음이 명백하다.Various embodiments are now described with reference to the drawings. In this specification, various descriptions are presented to provide an understanding of the disclosure. However, it is clear that these embodiments may be practiced without these specific descriptions.

본 명세서에서 사용되는 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터-관련 엔티티, 하드웨어, 펌웨어, 소프트웨어, 소프트웨어 및 하드웨어의 조합, 또는 소프트웨어의 실행을 지칭한다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 처리과정(procedure), 프로세서, 객체, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되는 것은 아니다. 예를 들어, 컴퓨팅 장치에서 실행되는 애플리케이션 및 컴퓨팅 장치 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트는 프로세서 및/또는 실행 스레드 내에 상주할 수 있다. 일 컴포넌트는 하나의 컴퓨터 내에 로컬화 될 수 있다. 일 컴포넌트는 2개 이상의 컴퓨터들 사이에 분배될 수 있다. 또한, 이러한 컴포넌트들은 그 내부에 저장된 다양한 데이터 구조들을 갖는 다양한 컴퓨터 판독가능한 매체로부터 실행할 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호(예를 들면, 로컬 시스템, 분산 시스템에서 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터 및/또는 신호를 통해 다른 시스템과 인터넷과 같은 네트워크를 통해 전송되는 데이터)에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다.As used herein, the terms “component,” “module,” “system,” and the like refer to a computer-related entity, hardware, firmware, software, a combination of software and hardware, or an implementation of software. For example, a component may be, but is not limited to, a process running on a processor, a processor, an object, a thread of execution, a program, and/or a computer. For example, both an application running on a computing device and the computing device can be a component. One or more components may reside within a processor and/or thread of execution. A component may be localized within one computer. A component may be distributed between two or more computers. Additionally, these components can execute from various computer-readable media having various data structures stored thereon. Components can transmit signals, for example, with one or more data packets (e.g., data and/or signals from one component interacting with other components in a local system, a distributed system, to other systems and over a network such as the Internet). Depending on the data being transmitted, they may communicate through local and/or remote processes.

더불어, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, "X는 A 또는 B를 이용한다"는 자연적인 내포적 치환 중 하나를 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우, "X는 A 또는 B를 이용한다"가 이들 경우들 어느 것으로도 적용될 수 있다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것으로 이해되어야 한다.Additionally, the term “or” is intended to mean an inclusive “or” and not an exclusive “or.” That is, unless otherwise specified or clear from context, “X utilizes A or B” is intended to mean one of the natural implicit substitutions. That is, either X uses A; X uses B; Or, if X uses both A and B, “X uses A or B” can apply to either of these cases. Additionally, the term “and/or” as used herein should be understood to refer to and include all possible combinations of one or more of the related listed items.

또한, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하는 것으로 이해되어야 한다. 다만, "포함한다" 및/또는 "포함하는"이라는 용어는, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.Additionally, the terms “comprise” and/or “comprising” should be understood to mean that the corresponding feature and/or element is present. However, the terms “comprise” and/or “comprising” should be understood as not excluding the presence or addition of one or more other features, elements and/or groups thereof. Additionally, unless otherwise specified or the context is clear to indicate a singular form, the singular terms herein and in the claims should generally be construed to mean “one or more.”

그리고, “A 또는 B 중 적어도 하나”이라는 용어는, “A만을 포함하는 경우”, “B 만을 포함하는 경우”, “A와 B의 구성으로 조합된 경우”를 의미하는 것으로 해석되어야 한다. And, the term “at least one of A or B” should be interpreted to mean “if it contains only A,” “if it contains only B,” or “if it is a combination of A and B.”

당업자들은 추가적으로 여기서 개시된 실시예들과 관련되어 설명된 다양한 예시적 논리적 블록들, 구성들, 모듈들, 회로들, 수단들, 로직들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽 모두의 조합들로 구현될 수 있음을 인식해야 한다. 하드웨어 및 소프트웨어의 상호교환성을 명백하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 구성들, 수단들, 로직들, 모듈들, 회로들, 및 단계들은 그들의 기능성 측면에서 일반적으로 위에서 설명되었다. 그러한 기능성이 하드웨어로 또는 소프트웨어로서 구현되는지 여부는 전반적인 시스템에 부과된 특정 어플리케이션(application) 및 설계 제한들에 달려 있다. 숙련된 기술자들은 각각의 특정 어플리케이션들을 위해 다양한 방법들로 설명된 기능성을 구현할 수 있다. 다만, 그러한 구현의 결정들이 본 개시내용의 영역을 벗어나게 하는 것으로 해석되어서는 안된다.Those skilled in the art will additionally recognize that the various illustrative logical blocks, components, modules, circuits, means, logic, and algorithm steps described in connection with the embodiments disclosed herein may be implemented using electronic hardware, computer software, or a combination of both. It must be recognized that it can be implemented with To clearly illustrate the interchangeability of hardware and software, various illustrative components, blocks, configurations, means, logics, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented in hardware or software will depend on the specific application and design constraints imposed on the overall system. A skilled technician can implement the described functionality in a variety of ways for each specific application. However, such implementation decisions should not be construed as causing a departure from the scope of the present disclosure.

제시된 실시예들에 대한 설명은 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예 들로 한정되는 것이 아니다. 본 발명은 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다. The description of the presented embodiments is provided to enable anyone skilled in the art to use or practice the present invention. Various modifications to these embodiments will be apparent to those skilled in the art. The general principles defined herein may be applied to other embodiments without departing from the scope of the disclosure. Therefore, the present invention is not limited to the embodiments presented herein. The present invention is to be interpreted in the broadest scope consistent with the principles and novel features presented herein.

제시된 실시예들에 대한 설명은 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이다. 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예 들로 한정되는 것이 아니다. 본 발명은 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다. The description of the presented embodiments is provided to enable anyone skilled in the art to use or practice the present invention. Various modifications to these embodiments will be apparent to those skilled in the art. The general principles defined herein may be applied to other embodiments without departing from the scope of the disclosure. Therefore, the present invention is not limited to the embodiments presented herein. The present invention is to be interpreted in the broadest scope consistent with the principles and novel features presented herein.

본 개시내용에서의 제 1, 제 2, 또는 제 3 과 같이 제 N 으로 표현되는 용어들은 복수의 엔티티들을 구분하기 위해 사용된다. 예를 들어, 제 1 과 제 2로 표현된 엔티티들은 서로 동일하거나 또는 상이할 수 있다. 제 1-1, 제 1-2로 표현되는 용어들 그리고 제 2-1, 제 2-2로 표현되는 용어들 또한 복수의 엔티티들을 서로 구분하기 위해 사용될 수 있다.In the present disclosure, terms represented by N, such as first, second, or third, are used to distinguish a plurality of entities. For example, the entities expressed as first and second may be the same or different from each other. Terms expressed as 1-1, 1-2, and 2-1, 2-2 may also be used to distinguish a plurality of entities.

본 개시내용에서 퍼징(fuzzing) 및/또는 퍼징 테스트는 소프트웨어에서 알지 못하지만 발생할 수 있는 취약점을 찾기 위해 무작위의 값 및/또는 사전 결정된 공격 패턴을 주입하여 비정상적 행동을 출력하는지 검증하는 기법을 의미할 수 있다.In the present disclosure, fuzzing and/or fuzz testing may refer to a technique for verifying whether abnormal behavior is output by injecting random values and/or predetermined attack patterns to find unknown but possible vulnerabilities in software. there is.

본 개시내용에서 통신 프로토콜은 블루투스 프로토콜 스택을 포함할 수 있다. 예를 들어, 통신 프로토콜은 블루투스 L2CAP 프로토콜을 포함할 수 있다. The communication protocol in this disclosure may include a Bluetooth protocol stack. For example, the communication protocol may include the Bluetooth L2CAP protocol.

본 개시내용에서의 패킷은 통신 프로토콜에서 사용되는 포맷(format)의 데이터를 포함할 수 있다. 예를 들어, 패킷은 블루투스 L2CAP 프로토콜에서 사용되는 포맷의 데이터를 포함할 수 있다.Packets in the present disclosure may include data in a format used in a communication protocol. For example, the packet may contain data in the format used in the Bluetooth L2CAP protocol.

도 1은 본 개시의 몇몇 실시예에 따른 퍼징(fuzzing)을 수행하기 위한 시스템을 개략적으로 나타낸 도면이다.1 is a diagram schematically showing a system for performing fuzzing according to some embodiments of the present disclosure.

도 1을 참조하면, 퍼징을 수행하기 위한 시스템은 컴퓨팅 장치(100), 디바이스(200), 네트워크 등을 포함할 수 있다. Referring to FIG. 1, a system for performing fuzzing may include a computing device 100, a device 200, a network, etc.

도 1에 도시된 시스템의 구성은 간략화 하여 나타낸 예시일 뿐이다. 본 개시의 일 실시예에서 시스템은 퍼징을 수행하기 위한 다른 구성들이 포함될 수 있고, 개시된 구성들 중 일부만이 시스템을 구성할 수도 있다.The configuration of the system shown in Figure 1 is only a simplified example. In one embodiment of the present disclosure, the system may include different configurations for performing fuzzing, and only some of the disclosed configurations may configure the system.

컴퓨팅 장치(100)는 프로세서(110), 메모리(130), 네트워크부(150)를 포함할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 서버, 사용자 단말 등을 포함할 수 있다.The computing device 100 may include a processor 110, a memory 130, and a network unit 150. For example, computing device 100 may include a server, a user terminal, etc.

프로세서(110)는 하나 이상의 코어로 구성될 수 있으며, 컴퓨팅 장치의 중앙 처리 장치(CPU: central processing unit), 범용 그래픽 처리 장치 (GPGPU: general purpose graphics processing unit), 텐서 처리 장치(TPU: tensor processing unit) 등의 데이터 분석 및 처리를 위한 프로세서를 포함할 수 있다. 프로세서(110)는 메모리(130)에 저장된 컴퓨터 프로그램을 판독하여 본 개시의 일 실시예에 따른 데이터 분석 및 처리를 수행할 수 있다. The processor 110 may be composed of one or more cores, and may include a central processing unit (CPU), a general purpose graphics processing unit (GPGPU), and a tensor processing unit (TPU) of a computing device. unit) may include a processor for data analysis and processing. The processor 110 may read the computer program stored in the memory 130 and perform data analysis and processing according to an embodiment of the present disclosure.

프로세서(110)는 통상적으로 컴퓨팅 장치(100)의 전반적인 동작을 제어할 수 있다. 프로세서(110)는 컴퓨팅 장치(100)에 포함된 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 메모리(130)에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 및/또는 기능을 제공 및/또는 처리할 수 있다.The processor 110 may typically control the overall operation of the computing device 100. The processor 110 processes signals, data, information, etc. input or output through components included in the computing device 100 or runs an application program stored in the memory 130, providing information and/or functions appropriate to the user. may be provided and/or processed.

프로세서(110)는 메모리(130)에 저장된 응용 프로그램을 구동하기 위하여, 컴퓨팅 장치(100)의 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 프로세서(110)는 응용 프로그램의 구동을 위하여, 컴퓨팅 장치(100)에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작시킬 수 있다.The processor 110 may control at least some of the components of the computing device 100 to run an application program stored in the memory 130. Furthermore, the processor 110 may operate in combination with at least two or more of the components included in the computing device 100 to run an application program.

본 개시의 일 실시예에 따르면, 메모리(130)는 프로세서(110)가 생성하거나 결정한 임의의 형태의 정보 및/또는 네트워크부(150)가 수신한 임의의 형태의 정보를 저장할 수 있다.According to one embodiment of the present disclosure, the memory 130 may store any type of information generated or determined by the processor 110 and/or any type of information received by the network unit 150.

본 개시의 일 실시예에 따르면, 메모리(130)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크 및/또는 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 컴퓨팅 장치(100)는 인터넷(internet) 상에서 메모리(130)의 저장 기능을 수행하는 웹 스토리지(web storage)와 관련되어 동작할 수도 있다. 전술한 메모리에 대한 기재는 예시일 뿐, 본 개시는 이에 제한되지 않는다.According to an embodiment of the present disclosure, the memory 130 is a flash memory type, hard disk type, multimedia card micro type, or card type memory (e.g. (e.g. SD or -Only Memory), magnetic memory, magnetic disk, and/or optical disk may include at least one type of storage medium. The computing device 100 may operate in connection with web storage that performs a storage function of the memory 130 on the Internet. The description of the memory described above is merely an example, and the present disclosure is not limited thereto.

본 개시의 일 실시예에 따른 네트워크부(150)는 임의의 형태의 데이터 및 신호 등을 송수신할 수 있는 임의의 유무선 통신 네트워크가 본 개시 내용에서 표현되는 네트워크에 포함될 수 있다. 본 명세서에서 설명된 기술들은 위에서 언급된 네트워크들뿐만 아니라, 다른 네트워크들에서도 사용될 수 있다.The network unit 150 according to an embodiment of the present disclosure may include any wired or wireless communication network capable of transmitting and receiving arbitrary types of data and signals, etc., as expressed in the present disclosure. The techniques described herein can be used in the networks mentioned above, as well as other networks.

프로세서(110)는 디바이스(200)에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 적어도 하나의 포트 중에서 제 1 포트를 선택할 수 있다.The processor 110 may select a first port from among at least one port based on whether pairing is required for each of at least one port included in the device 200.

적어도 하나의 포트는 통신 프로토콜에서 애플리케이션이 상호 통신을 위해 사용하는 가상의 논리적 통신 연결단일 수 있다. 예를 들어, 적어도 하나의 포트는 디바이스(200)에서 제공하는 서비스 포트를 포함할 수 있다.At least one port may be a virtual logical communication connection used by applications to communicate with each other in a communication protocol. For example, at least one port may include a service port provided by the device 200.

페어링은 무선 연결하기 위해 연결을 원하는 기기의 식별정보(예를 들어, 연결을 원하는 기기의 하드웨어 정보, 네트워크 정보, 사용자 정보 등)를 등록하는 것을 의미할 수 있다. 페어링의 요구는 장치 또는 장치에 포함된 포트와 연결을 원하는 기기 간에 서로 식별정보의 등록을 요구하는 것을 의미할 수 있다. 예를 들어, 디바이스(200)(및/또는 디바이스(200)의 포트)는 컴퓨팅 장치(100)와 무선 연결을 위해 컴퓨팅 장치(100)에 페어링을 요구할 수 있다. 컴퓨팅 장치(100)가 페어링을 요구하는 디바이스(200)(및/또는 디바이스(200)의 포트)와 페어링을 하는 경우, 디바이스(200)(및/또는 디바이스(200)의 포트)와 컴퓨팅 장치(100)는 각각 식별정보를 등록하여 서로 무선 연결할 수 있다.Pairing may mean registering identification information (e.g., hardware information, network information, user information, etc. of the device wanting to connect) for a wireless connection. A request for pairing may mean requesting registration of identification information between a device or a port included in the device and a device wishing to connect. For example, device 200 (and/or a port of device 200) may request pairing from computing device 100 for wireless connection with computing device 100. When the computing device 100 is paired with the device 200 (and/or the port of the device 200) requesting pairing, the device 200 (and/or the port of the device 200) and the computing device ( 100) can each register identification information and connect wirelessly to each other.

본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 적어도 하나의 포트 중에서 페어링을 요구하고, 그리고 페어링의 요구를 무시하고 통신이 가능한 제 1 포트를 선택할 수 있다. 프로세서(110)는 페어링을 요구하는 포트들 중에서 페어링의 요구를 무시하고 통신이 가능한 포트를 제 1 포트로 결정할 수 있다. 페어링을 요구하는 포트들 중에서 페어링의 요구를 무시하고 통신이 가능한 포트가 복수인 경우, 프로세서(110)는 사전 결정된 기준(예를 들어, 포트에 할당된 포트 번호의 오름차순(또는 내림차순), 탐색된 시간 순서 등)에 기초하여 페어링을 요구하는 포트들 중에서 페어링의 요구를 무시하고 통신이 가능한 제 1 포트를 결정할 수 있다.According to some embodiments of the present disclosure, the processor 110 may request pairing among at least one port, and select a first port capable of communication while ignoring the pairing request. The processor 110 may ignore the pairing request and determine a port capable of communication among ports requesting pairing as the first port. Among the ports requesting pairing, if there are a plurality of ports capable of communication while ignoring the pairing request, the processor 110 determines the number of ports based on predetermined criteria (e.g., ascending (or descending) order of port numbers assigned to the ports, searched ports, etc.). Based on the time order, etc.), the first port capable of communicating while ignoring the pairing request can be determined among the ports requesting pairing.

본 개시의 몇몇 다른 실시예에 따르면, 프로세서(110)는 적어도 하나의 포트 중에서 페어링을 요구하지 않는 제 1 포트를 선택할 수 있다. 페어링을 요구하지 않는 포트가 복수인 경우, 프로세서(110)는 사전 결정된 기준(예를 들어, 포트에 할당된 포트 번호의 오름차순(또는 내림차순), 탐색된 시간 순서 등)에 기초하여 페어링을 요구하지 않는 제 1 포트를 결정할 수 있다.According to some other embodiments of the present disclosure, the processor 110 may select a first port that does not require pairing from among at least one port. If there are multiple ports that do not require pairing, the processor 110 does not request pairing based on predetermined criteria (e.g., ascending (or descending) order of port numbers assigned to the ports, searched time order, etc.). The first port that is not used can be determined.

프로세서(110)가 페어링을 요구하는 포트로 연결을 하는 경우, 포트를 통해 기기(예를 들어, 디바이스(200))를 장악할 수 있는 권한을 얻을 수 있다. 하지만, 일반적으로 포트에 대한 공격은 권한이 없는 상태에서 수행될 수 있다. 따라서, 이미 권한이 있는 상태에서 퍼징을 수행하는 것은 유효한 취약점을 발견하기에 적절하지 않을 수 있다. 그러므로, 프로세서(110)는 페어링을 요구하지 않는 포트 또는 페어링의 요구가 있더라도 무시하고 통신이 가능한 포트로 연결하여 퍼징을 수행함으로써, 포트의 유효한 취약점을 획득할 수 있다.When the processor 110 connects to a port requesting pairing, it can obtain permission to take control of the device (eg, device 200) through the port. However, in general, attacks on ports can be performed without permission. Therefore, performing fuzzing while already authorized may not be appropriate for discovering valid vulnerabilities. Therefore, the processor 110 can acquire an effective vulnerability of the port by performing fuzzing by connecting to a port that does not require pairing or a port that is capable of communication, ignoring even if there is a request for pairing.

프로세서(110)는 작업(job)에 기초하여 디바이스(200)의 통신 프로토콜에 따라 사전 결정된 복수의 상태들을 복수의 그룹들로 분류할 수 있다.The processor 110 may classify a plurality of predetermined states into a plurality of groups according to the communication protocol of the device 200 based on the job.

작업(job)은 컴퓨터에서 처리해야할 일과 관련된 프로그램의 집합일 수 있다. 작업은 이벤트(event), 기능(function), 액션(action)을 포함할 수 있다. 이벤트는 수신 장치(예를 들어, 디바이스(200))에서 송신 장치(예를 들어, 컴퓨팅 장치(100))로부터 받은 패킷에 의해 발생되는 일과 관련된 프로그램의 집합일 수 있다. 기능은 이벤트를 처리하는 일과 관련된 프로그램의 집합일 수 있다. 액션은 패킷에 대한 응답을 수신 장치(예를 들어, 디바이스(200))에서 송신 장치(예를 들어, 컴퓨팅 장치(100))로 보내는 일과 관련된 프로그램의 집합일 수 있다. 예를 들어, 작업은 특정 일을 종료하기 위한 Closed, 특정 일을 연결하기 위한 Connection, 특정 일을 생성하기 위한 Creation, 특정 일을 배열하기 위한 Configuration, 특정 일을 중단하기 위한 Disconnection, 특정 일을 이동시키기 위한 Move, 특정 일을 시작하기 위한 Open 등을 포함할 수 있다. 다만, 작업의 종류는 이에 한정되지 않는다.A job can be a set of programs related to work to be done on a computer. Tasks may include events, functions, and actions. An event may be a set of programs related to events that occur by a packet received from a transmitting device (e.g., computing device 100) at a receiving device (e.g., device 200). A function can be a set of programs involved in handling events. An action may be a set of programs related to sending a response to a packet from a receiving device (eg, device 200) to a transmitting device (eg, computing device 100). For example, tasks include Closed to end a specific task, Connection to connect a specific task, Creation to create a specific task, Configuration to arrange a specific task, Disconnect to stop a specific task, and move a specific task. It can include Move to do something, Open to start a specific task, etc. However, the type of work is not limited to this.

사전 결정된 복수의 상태들은 시스템이나 프로그램에 어떤 작업을 수행시키기 위해 설정되는 조건이나 방법일 수 있다. 따라서, 디바이스(200)의 통신 프로토콜에서 작동하는 방법에 따라서 상태가 변화될 수 있다. 복수의 그룹들은 아래의 표 1과 같이 분류될 수 있다.A plurality of predetermined states may be conditions or methods set to perform certain tasks on a system or program. Accordingly, the state may change depending on how the device 200 operates in its communication protocol. A plurality of groups can be classified as shown in Table 1 below.

JobJob StatesStates ClosedClosed {CLOSED}{CLOSED} ConnectionConnection {WAIT CONNECT, WAIT CONNECT RSP}{WAIT CONNECT, WAIT CONNECT RSP} CreationCreation {WAIT CREATE, WAIT CREATE RSP}{WAIT CREATE, WAIT CREATE RSP} ConfigurationConfiguration {WAIT CONFIG, WAIT CONFIG RSP, WAIT CONFIG REQ, WAIT CONFIG REQ RSP, WAIT SEND CONFIG, WAIT IND FINAL RSP, WAIT FINAL RSP, WAIT CONTROL IND}{WAIT CONFIG, WAIT CONFIG RSP, WAIT CONFIG REQ, WAIT CONFIG REQ RSP, WAIT SEND CONFIG, WAIT IND FINAL RSP, WAIT FINAL RSP, WAIT CONTROL IND} DisconnectionDisconnection {WAIT DISCONNECT}{WAIT DISCONNECT} MoveMove {WAIT MOVE, WAIT MOVE RSP, WAIT MOVE CONFIRM, WAIT CONFIRM RSP}{WAIT MOVE, WAIT MOVE RSP, WAIT MOVE CONFIRM, WAIT CONFIRM RSP} OpenOpen {OPEN}{OPEN}

표 1을 참조하면, 작업 Closed에 대응되는 상태는 {CLOSED}로 하나의 그룹일 수 있다. 작업 Connection에 대응되는 상태는 {WAIT CONNECT, WAIT CONNECT RSP}로 하나의 그룹일 수 있다. 작업 Creation에 대응되는 상태는 {WAIT CREATE, WAIT CREATE RSP}으로 하나의 그룹일 수 있다. 작업 Configuration에 대응되는 상태는 {WAIT CONFIG, WAIT CONFIG RSP, WAIT CONFIG REQ, WAIT CONFIG REQ RSP, WAIT SEND CONFIG, WAIT IND FINAL RSP, WAIT FINAL RSP, WAIT CONTROL IND}로 하나의 그룹일 수 있다. 작업 Disconnection에 대응되는 상태는 {WAIT DISCONNECT}로 하나의 그룹일 수 있다. 작업 Move에 대응되는 상태는 {WAIT MOVE, WAIT MOVE RSP, WAIT MOVE CONFIRM, WAIT CONFIRM RSP}로 하나의 그룹일 수 있다. 작업 Open에 대응되는 상태는 {OPEN}으로 하나의 그룹일 수 있다.Referring to Table 1, the state corresponding to the task Closed may be a group of {CLOSED}. The state corresponding to the task Connection can be a group of {WAIT CONNECT, WAIT CONNECT RSP}. The state corresponding to the task Creation can be a group of {WAIT CREATE, WAIT CREATE RSP}. The status corresponding to the task configuration may be one group as {WAIT CONFIG, WAIT CONFIG RSP, WAIT CONFIG REQ, WAIT CONFIG REQ RSP, WAIT SEND CONFIG, WAIT IND FINAL RSP, WAIT FINAL RSP, WAIT CONTROL IND}. The state corresponding to the task Disconnection can be a group of {WAIT DISCONNECT}. The state corresponding to the task Move may be one group as {WAIT MOVE, WAIT MOVE RSP, WAIT MOVE CONFIRM, WAIT CONFIRM RSP}. The state corresponding to the task Open may be a group of {OPEN}.

프로세서(110)는 복수의 그룹들 각각에 대응되는 명령어를 매핑시킬 수 있다. 복수의 그룹들 각각에 대응되는 명령어는 아래의 표 2와 같이 매핑될 수 있다.The processor 110 may map instructions corresponding to each of the plurality of groups. Commands corresponding to each of the plurality of groups can be mapped as shown in Table 2 below.

JobJob Valid commandsValid commands ClosedClosed All commandsAll commands ConnectionConnection Connect Req/RspConnectReq/Rsp CreationCreation Create Channel Req/RspCreate Channel Req/Rsp ConfigurationConfiguration Config Req/RspConfigReq/Rsp DisconnectionDisconnection Disconnect Req/RspDisconnectReq/Rsp MoveMove Move Channel Req/Rsp,Move Channel Confirmation Req/RspMove Channel Req/Rsp,Move Channel Confirmation Req/Rsp OpenOpen All commandsAll commands

표 2를 참조하면, 작업 Closed에 대응되는 명령어는 모든 명령어(All commands)일 수 있다. 작업 Connection에 대응되는 명령어는 Connect Req 또는 Rsp일 수 있다. 작업 Creation에 대응되는 명령어는 Create Channel Req 또는 Rsp일 수 있다. 작업 Configuration에 대응되는 명령어는 Config Req 또는 Rsp일 수 있다. 작업 Disconnection에 대응되는 명령어는 Disconnect Req 또는 Rsp일 수 있다. 작업 Move에 대응되는 명령어는 Move Channel Req 또는 Rsp, Move Channel Confirmation Req 또는 Rsp일 수 있다. 작업 Open에 대응되는 명령어는 모든 명령어(All commands)일 수 있다.Referring to Table 2, the command corresponding to the task Closed may be All commands. The command corresponding to the task Connection can be Connect Req or Rsp. The command corresponding to the task Creation may be Create Channel Req or Rsp. The command corresponding to task configuration may be Config Req or Rsp. The command corresponding to the task Disconnection may be Disconnect Req or Rsp. The command corresponding to the task Move may be Move Channel Req or Rsp, Move Channel Confirmation Req or Rsp. The command corresponding to the task Open may be All commands.

프로세서(110)는 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 제 1 포트에 전송할 수 있다.In order to enter the first port into a predetermined first state, the processor 110 may transmit to the first port a first state transition packet in which an instruction corresponding to the predetermined first state is mapped. .

예를 들어, 사전 결정된 제 1 상태가 {WAIT DISCONNECT}인 경우, 프로세서(110)는 {WAIT DISCONNECT}에 대응되는 명령어인 Disconnect Req 또는 Rsp가 매핑된 제 1 상태 전이 패킷을 제 1 포트에 전송할 수 있다.For example, if the predetermined first state is {WAIT DISCONNECT}, the processor 110 may transmit a first state transition packet to the first port to which Disconnect Req or Rsp, which is a command corresponding to {WAIT DISCONNECT}, is mapped. there is.

상태 전이 패킷은 통신 프로토콜의 상태를 변화시키는 패킷일 수 있다. 예를 들어, 제 1 상태 전이 패킷은 제 1 포트의 상태를 현재 {CLOSED}에서 {WAIT DISCONNECT}로 변화시키는 패킷일 수 있다.A state transition packet may be a packet that changes the state of a communication protocol. For example, the first state transition packet may be a packet that changes the state of the first port from the current {CLOSED} to {WAIT DISCONNECT}.

제 1 포트는 제 1 상태 전이 패킷을 수신할 수 있다. 제 1 포트는 제 1 상태 전이 패킷에 의해 제 1 상태로 상태 전이될 수 있다.The first port may receive a first state transition packet. The first port may transition to the first state by a first state transition packet.

프로세서(110)는 제 1 포트로부터 수신한 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 제 1 포트의 제 1 현재 상태(state)를 결정할 수 있다.The processor 110 may determine the first current state of the first port based on the first response packet to the first state transition packet received from the first port.

응답 패킷은 수신한 패킷에 대한 응답으로 생성된 패킷으로, 수신한 디바이스의 현재 상태에 대한 정보를 포함할 수 있다. 예를 들어, 제 1 응답 패킷은 디바이스(200)의 제 1 포트에서 제 1 상태 전이 패킷에 대한 응답으로 생성된 패킷일 수 있다. 제 1 응답 패킷은 디바이스(200)의 제 1 포트의 제 1 현재 상태에 대한 정보를 포함할 수 있다. 따라서, 프로세서(110)는 제 1 응답 패킷에 포함된 제 1 포트의 제 1 현재 상태에 대한 정보에 기초하여 제 1 포트의 제 1 현재 상태를 결정할 수 있다.A response packet is a packet generated in response to a received packet and may include information about the current status of the received device. For example, the first response packet may be a packet generated in response to the first state transition packet at the first port of the device 200. The first response packet may include information about the first current state of the first port of the device 200. Accordingly, the processor 110 may determine the first current state of the first port based on the information about the first current state of the first port included in the first response packet.

프로세서(110)는 제 1 포트의 제 1 현재 상태가 사전 결정된 제 1 상태에 대응되는 경우, 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성할 수 있다.When the first current state of the first port corresponds to a predetermined first state, the processor 110 generates a first test packet in which at least one field included in an instruction corresponding to the predetermined first state is mutated. can be created.

명령어는 프로그래밍 언어에서 적어도 하나의 동작을 수행하는 데이터일 수 있다. 명령어는 적어도 하나의 동작을 수행하기 위한 적어도 하나의 필드를 포함할 수 있다.A command may be data that performs at least one operation in a programming language. A command may include at least one field for performing at least one operation.

적어도 하나의 필드는 고정 필드(fixed field), 종속 필드(dependent field), 변형 필드(mutable field) 등을 포함할 수 있다.At least one field may include a fixed field, dependent field, mutable field, etc.

고정 필드(fixed field)는 변경 불가능한 데이터를 포함할 수 있다. 예를 들어, 고정 필드는 HEADER CID 필드 등을 포함할 수 있다.Fixed fields can contain immutable data. For example, fixed fields may include a HEADER CID field, etc.

종속 필드(dependent field)는 다른 필드에 종속된 데이터를 포함할 수 있다. 종속 필드에 포함되는 데이터는 다른 필드의 데이터에 기초하여 결정될 수 있다. 예를 들어, 종속 필드는 PAYLOAD LEN 필드, CODE 필드, ID 필드, DATA LEN 필드 등을 포함할 수 있다.A dependent field may contain data that is dependent on another field. Data included in a dependent field may be determined based on data in other fields. For example, dependent fields may include a PAYLOAD LEN field, CODE field, ID field, DATA LEN field, etc.

변형 필드(mutable field)는 변형 가능한 데이터를 포함할 수 있다. 변형 필드에 포함되는 데이터는 사전 저장된 필드 참조 데이터에 기초하여 결정될 수 있다. 변형 필드에 포함되는 데이터는 사용자에 의해 결정될 수 있다. 예를 들어, 변형 필드는 핵심 필드(core field), 응용 필드(application field) 등을 포함할 수 있다. A mutable field may contain mutable data. Data included in the modified field may be determined based on pre-stored field reference data. Data included in the modification field can be determined by the user. For example, transformation fields may include core fields, application fields, etc.

핵심 필드는 디바이스(200)의 통신 채널 또는 포트 중 적어도 하나와 관련된 데이터를 포함할 수 있다. 예를 들어, 핵심 필드는 PSM 필드, SCID 필드, DCID 필드, ICID 필드, CONT ID 필드 등을 포함할 수 있다.The core field may include data related to at least one of the communication channels or ports of the device 200. For example, core fields may include a PSM field, SCID field, DCID field, ICID field, CONT ID field, etc.

응용 필드는 응용 소프트웨어와 관련된 데이터를 포함할 수 있다. 예를 들어, 응용 필드는 REASON 필드, RESULT 필드, STATUS 필드, FLAGS 필드, TYPE 필드, INTERVAL 필드, LATENCY 필드, TIMEOUT 필드, SPSM 필드, MTU 필드, CREDIT 필드, MPS 필드, OPT 필드, QoS 필드 등을 포함할 수 있다.The application field may include data related to application software. For example, application fields include REASON field, RESULT field, STATUS field, FLAGS field, TYPE field, INTERVAL field, LATENCY field, TIMEOUT field, SPSM field, MTU field, CREDIT field, MPS field, OPT field, QoS field, etc. It can be included.

테스트 패킷은 퍼징을 위해 명령어에 포함된 적어도 하나의 필드를 변형시킨 패킷일 수 있다. 예를 들어, 제 1 테스트 패킷은 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨 패킷일 수 있다.The test packet may be a packet in which at least one field included in the command is modified for fuzzing. For example, the first test packet may be a packet in which at least one field included in a command corresponding to a predetermined first state is modified.

테스트 패킷은 명령어에 포함된 필드 중에서 프로토콜의 핵심 기능을 담당하는 핵심 필드를 변형시킨 패킷일 수 있다. 예를 들어, 제 1 테스트 패킷은 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 필드 중에서 프로토콜의 핵심 기능을 담당하는 핵심 필드를 변형시킨 패킷일 수 있다.The test packet may be a packet in which key fields responsible for core functions of the protocol are modified among the fields included in the command. For example, the first test packet may be a packet in which a core field responsible for the core function of the protocol is modified among the fields included in the command corresponding to the predetermined first state.

테스트 패킷(예를 들어, 제 1 테스트 패킷)은 사전 저장된 필드 참조 데이터에 기초하여 핵심 필드를 변형시킨 패킷일 수 있다. 사전 저장된 필드 참조 데이터는 통신 프로토콜에 포함된 필드 각각의 가용 데이터를 포함할 수 있다.A test packet (eg, a first test packet) may be a packet in which key fields are modified based on pre-stored field reference data. Pre-stored field reference data may include available data for each field included in the communication protocol.

테스트 패킷(예를 들어, 제 1 테스트 패킷)의 핵심 필드에 변형된 데이터가 삽입되고, 그리고 테스트 패킷(예를 들어, 제 1 테스트 패킷)의 응용 필드에 기본 값(default value)이 삽입될 수 있다. 따라서, 프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷)의 핵심 필드에 변형된 데이터를 삽입시키고, 그리고 테스트 패킷의 응용 필드에 기본 값을 삽입시킬 수 있다. 본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷)에 쓰레기 값(garbage value)을 추가로 삽입시킬 수 있다. 테스트 패킷(예를 들어, 제 1 테스트 패킷)에 쓰레기 값을 추가로 삽입함으로써, 대상 포트에서 취약점 발현 확률이 높아질 수도 있다.Modified data may be inserted into the core field of the test packet (e.g., the first test packet), and a default value may be inserted into the application field of the test packet (e.g., the first test packet). there is. Accordingly, the processor 110 may insert modified data into the core field of the test packet (eg, the first test packet) and insert a default value into the application field of the test packet. According to some embodiments of the present disclosure, the processor 110 may additionally insert a garbage value into a test packet (eg, a first test packet). By additionally inserting garbage values into the test packet (eg, the first test packet), the probability of vulnerability occurrence at the target port may be increased.

본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 제 1 포트의 제 1 현재 상태가 사전 결정된 제 1 상태에 대응되는 경우, 명령어에 포함된 핵심 필드를 변형시킨 제 1 테스트 패킷을 생성할 수 있다. 본 개시의 몇몇 다른 실시예에 따르면, 프로세서(110)는 명령어에 포함된 핵심 필드가 복수인 경우, 명령어에 포함된 복수의 핵심 필드들 중에서 적어도 하나를 변형시킨 제 1 테스트 패킷을 생성할 수 있다. 따라서, 프로세서(110)는 핵심 필드를 변형시킨 테스트 패킷(예를 들어, 제 1 테스트 패킷)을 생성함으로써, 퍼징 테스트의 대상이 되는 포트에서 거부(reject)되지 않는 테스트 패킷을 생성할 수 있다.According to some embodiments of the present disclosure, when the first current state of the first port corresponds to the predetermined first state, the processor 110 may generate a first test packet in which a key field included in the instruction is modified. there is. According to some other embodiments of the present disclosure, when there are a plurality of core fields included in the instruction, the processor 110 may generate a first test packet in which at least one of the plurality of core fields included in the instruction is modified. . Accordingly, the processor 110 may generate a test packet that is not rejected by the port that is the target of the fuzzing test by generating a test packet (eg, a first test packet) in which key fields are modified.

프로세서(110)는 제 1 테스트 패킷을 이용하여 제 1 포트의 퍼징 테스트를 수행할 수 있다.The processor 110 may perform a fuzzing test of the first port using the first test packet.

예를 들어, 프로세서(110)는 제 1 테스트 패킷을 제 1 포트에 전송할 수 있다. 제 1 테스트 패킷은 제 1 상태에 대응되는 명령어에서 핵심 필드만 변형시킨 패킷이므로, 제 1 포트에서 거부되지 않을 수 있다.For example, the processor 110 may transmit the first test packet to the first port. Since the first test packet is a packet in which only the core fields of the command corresponding to the first state are modified, it may not be rejected by the first port.

프로세서(110)는 제 1 포트로부터 수신한 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 제 1 포트의 취약점 발현 여부를 결정할 수 있다.The processor 110 may determine whether a vulnerability exists in the first port based on the second response packet to the first test packet received from the first port.

일례로, 프로세서(110)는 제 2 응답 패킷과 사전 저장된 정상 응답 패킷이 서로 상이한 경우, 제 1 포트에 제 1 테스트 패킷에 의한 취약점이 발현된 것으로 결정할 수 있다. 사전 저장된 정상 응답 패킷은 포트(예를 들어, 제 1 포트, 제 2 포트 등)별로 정상 상태인 경우에 수신되는 응답 패킷을 포함할 수 있다. 사전 저장된 정상 응답 패킷은 포트별로 사전에 정상 패킷을 전송하여 수신된 응답 패킷을 포함할 수 있다. 사전 저장된 정상 응답 패킷은 통신 프로토콜에서 통신을 하며 수집된 패킷을 포함할 수 있다. 사전 저장된 정상 응답 패킷은 포트별로 사전에 정상으로 결정되어 있는 패킷을 포함할 수 있다.For example, if the second response packet and the pre-stored normal response packet are different from each other, the processor 110 may determine that a vulnerability caused by the first test packet has appeared in the first port. The pre-stored normal response packet may include a response packet received when each port (eg, first port, second port, etc.) is in a normal state. The pre-stored normal response packet may include a response packet received by transmitting a normal packet in advance for each port. The pre-stored normal response packet may include packets collected while communicating in a communication protocol. The pre-stored normal response packet may include packets that are previously determined to be normal for each port.

다른 일례로, 프로세서(110)는 제 2 응답 패킷에 에러 메시지 및/또는 크래시 덤프(crash dump)가 포함된 경우, 제 1 포트에 제 1 테스트 패킷에 의한 취약점이 발현된 것으로 결정할 수 있다. 에러 메시지는 사전 저장된 정상 응답 패킷에 포함된 정상 메시지와 상이한 내용을 포함하는 메시지일 수 있다. 예를 들어, 에러 메시지는 “연결이 끊겼습니다.”, “응답이 없습니다.” 등의 내용을 포함할 수 있다. 크래시 덤프는 특정 프로그램이 비정상적으로 종료된 시점과 관련된 상태 정보를 포함할 수 있다. 예를 들어, 크래시 덤프는 특정 프로그램이 비정상적으로 종료된 시점에서의 프로그램 정보, 프로세서 정보, 메모리 정보 등을 포함할 수 있다. 크래시 덤프는 특정 프로그램이 비정상적으로 종료되는 경우에 생성될 수 있다. 따라서, 프로세서(110)는 크래시 덤프를 분석하여 프로그램의 취약점을 획득할 수 있다.As another example, if the second response packet includes an error message and/or a crash dump, the processor 110 may determine that a vulnerability caused by the first test packet has appeared in the first port. The error message may be a message containing content different from the normal message included in the pre-stored normal response packet. For example, error messages include “Connection lost” or “No response.” It may include contents such as: A crash dump may contain status information related to when a specific program terminated abnormally. For example, a crash dump may include program information, processor information, memory information, etc. at the point when a specific program terminates abnormally. Crash dumps can be created when a specific program terminates abnormally. Accordingly, the processor 110 can acquire program vulnerabilities by analyzing the crash dump.

프로세서(110)는 제 1 테스트 패킷에 의해 발현된 취약점에 관한 정보를 생성할 수 있다. 제 1 테스트 패킷에 의해 발현된 취약점에 관한 정보는 취약점, 취약점 발현 원인, 취약점을 발생시킨 테스트 패킷, 취약점이 발생된 포트, 취약점이 발현된 시간 등을 포함할 수 있다.The processor 110 may generate information about vulnerabilities expressed by the first test packet. Information about the vulnerability expressed by the first test packet may include the vulnerability, the cause of the vulnerability, the test packet that created the vulnerability, the port where the vulnerability occurred, and the time when the vulnerability occurred.

프로세서(110)는 생성된 취약점에 관한 정보를 메모리(130)에 저장할 수 있다. 본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 생성된 취약점에 관한 정보를 디바이스(200)에 전송할 수 있다. 따라서, 디바이스(200)의 사용자는 취약점에 관한 정보를 확인하고 대처 방안을 강구할 수 있다.The processor 110 may store information about the created vulnerability in the memory 130. According to some embodiments of the present disclosure, the processor 110 may transmit information about the created vulnerability to the device 200. Accordingly, the user of the device 200 can check information about vulnerabilities and devise countermeasures.

프로세서(110)는 제 1 포트를 제 1 상태와 상이한 사전 결정된 제 2 상태(state)로 진입시키기 위해, 사전 결정된 제 2 상태에 대응되는 명령어가 매핑(mapping)된 제 2 상태 전이 패킷을 제 1 포트에 전송할 수 있다.In order to enter the first port into a predetermined second state that is different from the first state, the processor 110 sends a second state transition packet in which an instruction corresponding to the predetermined second state is mapped to the first state. It can be transmitted to the port.

예를 들어, 사전 결정된 제 2 상태가 {WAIT CONNECT}인 경우, 프로세서(110)는 {WAIT CONNECT}에 대응되는 명령어인 Connect Req 또는 Rsp가 매핑된 제 2 상태 전이 패킷을 제 1 포트에 전송할 수 있다.For example, if the predetermined second state is {WAIT CONNECT}, the processor 110 may transmit a second state transition packet to the first port to which Connect Req or Rsp, which is a command corresponding to {WAIT CONNECT}, is mapped. there is.

제 2 상태 전이 패킷은 제 2 포트의 상태를 현재 {CLOSED}에서 {WAIT CONNECT}로 변화시키는 패킷일 수 있다.The second state transition packet may be a packet that changes the state of the second port from the current {CLOSED} to {WAIT CONNECT}.

제 1 포트는 제 2 상태 전이 패킷을 수신할 수 있다. 제 1 포트는 제 2 상태 전이 패킷에 의해 제 2 상태로 상태 전이될 수 있다.The first port may receive a second state transition packet. The first port may transition to the second state by a second state transition packet.

프로세서(110)는 제 1 포트로부터 수신한 제 2 상태 전이 패킷에 대한 제 3 응답 패킷에 기초하여 제 1 포트의 제 2 현재 상태(state)를 결정할 수 있다.The processor 110 may determine the second current state of the first port based on the third response packet to the second state transition packet received from the first port.

제 3 응답 패킷은 디바이스(200)의 제 1 포트에서 제 2 상태 전이 패킷에 대한 응답으로 생성된 패킷일 수 있다. 제 3 응답 패킷은 디바이스(200)의 제 1 포트의 제 2 상태에 대한 정보를 포함할 수 있다. 따라서, 프로세서(110)는 제 3 응답 패킷에 포함된 제 2 현재 상태에 대한 정보에 기초하여 제 1 포트의 제 2 현재 상태를 결정할 수 있다.The third response packet may be a packet generated in response to the second state transition packet at the first port of the device 200. The third response packet may include information about the second status of the first port of the device 200. Accordingly, the processor 110 may determine the second current state of the first port based on the information about the second current state included in the third response packet.

프로세서(110)는 제 1 포트의 제 2 현재 상태가 사전 결정된 제 2 상태에 대응되는 경우, 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 2 테스트 패킷을 생성할 수 있다.When the second current state of the first port corresponds to the predetermined second state, the processor 110 generates a second test packet in which at least one field included in the instruction corresponding to the predetermined second state is mutated. can be created.

제 2 테스트 패킷은 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨 패킷일 수 있다. 제 2 테스트 패킷은 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 필드 중에서 프로토콜의 핵심 기능을 담당하는 핵심 필드를 변형시킨 패킷일 수 있다.The second test packet may be a packet in which at least one field included in a command corresponding to a predetermined second state is modified. The second test packet may be a packet in which a core field responsible for the core function of the protocol is modified among the fields included in the command corresponding to the predetermined second state.

제 2 테스트 패킷은 사전 저장된 필드 참조 데이터에 기초하여 핵심 필드를 변형시킨 패킷일 수 있다. 사전 저장된 필드 참조 데이터는 통신 프로토콜에 제시된 필드별 사용 데이터를 포함할 수 있다.The second test packet may be a packet in which key fields are modified based on pre-stored field reference data. Pre-stored field reference data may include field-specific usage data presented in the communication protocol.

제 2 테스트 패킷의 핵심 필드에 변형된 데이터가 삽입되고, 그리고 제 2 테스트 패킷의 응용 필드에 기본 값(default value)이 삽입될 수 있다. 따라서, 프로세서(110)는 제 2 테스트 패킷의 핵심 필드에 변형된 데이터를 삽입시키고, 그리고 제 2 테스트 패킷의 응용 필드에 기본 값을 삽입시킬 수 있다. 본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 제 2 테스트 패킷에 쓰레기 값(garbage value)을 추가로 삽입시킬 수 있다. 제 2 테스트 패킷에 쓰레기 값을 추가로 삽입함으로써, 대상 포트에서 취약점 발현 확률이 높아질 수도 있다.Modified data may be inserted into the core field of the second test packet, and a default value may be inserted into the application field of the second test packet. Accordingly, the processor 110 may insert modified data into the core field of the second test packet and insert a default value into the application field of the second test packet. According to some embodiments of the present disclosure, the processor 110 may additionally insert a garbage value into the second test packet. By additionally inserting garbage values into the second test packet, the probability of vulnerability occurrence at the target port may increase.

본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 제 1 포트의 제 2 현재 상태가 사전 결정된 제 2 상태에 대응되는 경우, 명령어에 포함된 핵심 필드를 변형시킨 제 2 테스트 패킷을 생성할 수 있다. 본 개시의 몇몇 다른 실시예에 따르면, 프로세서(110)는 명령어에 포함된 핵심 필드가 복수인 경우, 명령어에 포함된 복수의 핵심 필드들 중에서 적어도 하나를 변형시킨 제 2 테스트 패킷을 생성할 수 있다. 따라서, 프로세서(110)는 핵심 필드를 변형시킨 테스트 패킷을 생성함으로써, 퍼징 테스트의 대상이 되는 포트에서 거부(reject)되지 않는 테스트 패킷을 생성할 수 있다.According to some embodiments of the present disclosure, when the second current state of the first port corresponds to the predetermined second state, the processor 110 may generate a second test packet in which key fields included in the instruction are modified. there is. According to some other embodiments of the present disclosure, when there are a plurality of core fields included in the instruction, the processor 110 may generate a second test packet in which at least one of the plurality of core fields included in the instruction is modified. . Accordingly, the processor 110 can generate a test packet that is not rejected by the port that is the target of the fuzzing test by generating a test packet with modified key fields.

프로세서(110)는 제 2 테스트 패킷을 이용하여 제 1 포트의 퍼징 테스트를 수행할 수 있다.The processor 110 may perform a fuzzing test of the first port using the second test packet.

예를 들어, 프로세서(110)는 제 2 테스트 패킷을 제 1 포트에 전송할 수 있다. 제 2 테스트 패킷은 제 1 상태에 대응되는 명령어에서 핵심 필드만 변형시킨 패킷이므로, 제 1 포트에서 거부되지 않을 수 있다.For example, processor 110 may transmit a second test packet to the first port. Since the second test packet is a packet in which only the core fields of the command corresponding to the first state are modified, it may not be rejected by the first port.

프로세서(110)는 제 1 포트로부터 수신한 제 2 테스트 패킷에 대한 제 4 응답 패킷에 기초하여 제 1 포트의 취약점 발현 여부를 결정할 수 있다.The processor 110 may determine whether a vulnerability exists in the first port based on the fourth response packet to the second test packet received from the first port.

일례로, 프로세서(110)는 제 4 응답 패킷과 사전 저장된 정상 응답 패킷이 서로 상이한 경우, 제 1 포트에 제 2 테스트 패킷에 의한 취약점이 발현된 것으로 결정할 수 있다. 사전 저장된 정상 응답 패킷은 포트(예를 들어, 제 1 포트, 제 2 포트 등)별로 정상 상태인 경우에 수신되는 응답 패킷을 포함할 수 있다.For example, if the fourth response packet and the pre-stored normal response packet are different from each other, the processor 110 may determine that a vulnerability caused by the second test packet has appeared in the first port. The pre-stored normal response packet may include a response packet received when each port (eg, first port, second port, etc.) is in a normal state.

프로세서(110)는 제 2 테스트 패킷에 의해 발현된 취약점에 관한 정보를 생성할 수 있다. 제 2 테스트 패킷에 의해 발현된 취약점에 관한 정보는 취약점, 취약점 발현 원인, 취약점을 발생시킨 테스트 패킷, 취약점이 발생된 포트, 취약점이 발현된 시간 등을 포함할 수 있다.Processor 110 may generate information about vulnerabilities expressed by the second test packet. Information about the vulnerability expressed by the second test packet may include the vulnerability, the cause of the vulnerability, the test packet that created the vulnerability, the port where the vulnerability occurred, and the time when the vulnerability occurred.

프로세서(110)는 생성된 취약점에 관한 정보를 메모리(130)에 저장할 수 있다. 본 개시의 몇몇 실시예에 따르면, 프로세서(110)는 생성된 취약점에 관한 정보를 디바이스(200)에 전송할 수 있다. 따라서, 디바이스(200)의 사용자는 취약점에 관한 정보를 확인하고 대처 방안을 강구할 수 있다.The processor 110 may store information about the created vulnerability in the memory 130. According to some embodiments of the present disclosure, the processor 110 may transmit information about the created vulnerability to the device 200. Accordingly, the user of the device 200 can check information about vulnerabilities and devise countermeasures.

프로세서(110)는 디바이스(200)에 포함된 적어도 하나의 포트 각각의 페어링의 요구 여부에 기초하여 적어도 하나의 포트 중에서 제 1 포트와 상이한 제 2 포트를 선택할 수 있다.The processor 110 may select a second port that is different from the first port among at least one port based on whether pairing is requested for each of at least one port included in the device 200.

프로세서(110)는 제 2 포트를 사전 결정된 제 3 상태(state)로 진입시키기 위해, 사전 결정된 제 3 상태에 대응되는 명령어가 매핑(mapping)된 제 3 상태 전이 패킷을 제 2 포트에 전송할 수 있다.In order to enter the second port into a predetermined third state, the processor 110 may transmit to the second port a third state transition packet in which a command corresponding to the predetermined third state is mapped. .

프로세서(110)는 제 2 포트로부터 수신한 제 3 상태 전이 패킷에 대한 제 5 응답 패킷에 기초하여 제 2 포트의 제 3 현재 상태(state)를 결정할 수 있다.The processor 110 may determine the third current state of the second port based on the fifth response packet to the third state transition packet received from the second port.

프로세서(110)는 제 2 포트의 제 3 현재 상태가 사전 결정된 제 1 상태에 대응되는 경우, 사전 결정된 제 3 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 3 테스트 패킷을 생성할 수 있다.When the third current state of the second port corresponds to the predetermined first state, the processor 110 generates a third test packet in which at least one field included in the instruction corresponding to the predetermined third state is mutated. can be created.

프로세서(110)는 제 3 테스트 패킷을 이용하여 제 2 포트의 퍼징 테스트를 수행할 수 있다.The processor 110 may perform a fuzzing test of the second port using the third test packet.

프로세서(110)는 상술한 바와 같이 디바이스(200)에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 선택된 포트들 각각에 대해서 퍼징 테스트를 수행할 수 있다.As described above, the processor 110 may perform a fuzzing test on each of the selected ports based on whether pairing is required for each of at least one port included in the device 200.

디바이스(200)는 컴퓨팅 장치(100)와 통신을 위한 매커니즘을 갖는 시스템에서의 임의의 형태의 장치를 의미할 수 있다. 예를 들어, 디바이스(200)는 컴퓨팅 장치(100)와 네트워크를 통해 패킷을 송신 및/또는 수신할 수 있다. 본 개시의 몇몇 실시예에 따라, 컴퓨팅 장치(100)에 디바이스(200)가 포함되는 경우, 디바이스(200)는 컴퓨팅 장치(100)와 네트워크를 사용 또는 비사용하여 내부에서 패킷을 송신 및/또는 수신할 수 있다. 디바이스(200)는 컴퓨팅 장치(100)로부터 수신한 패킷에 기초하여 정보를 처리할 수 있다.Device 200 may refer to any type of device in a system that has a mechanism for communication with the computing device 100. For example, device 200 may transmit and/or receive packets through computing device 100 and a network. According to some embodiments of the present disclosure, when computing device 100 includes device 200, device 200 may or may not use computing device 100 and a network to internally transmit and/or You can receive it. Device 200 may process information based on packets received from computing device 100.

디바이스(200)는 통신 프로토콜로 블루투스 프로토콜 스택을 포함할 수 있다. 예를 들어, 디바이스(200)는 블루투스 L2CAP 프로토콜을 포함할 수 있다. 컴퓨팅 장치(100) 및/또는 디바이스(200)는 각각 블루투스 통신을 위한 장치를 포함할 수 있다. 예를 들어, 컴퓨팅 장치(100) 및/또는 디바이스(200)는 각각 블루투스 통신을 위한 장치(예를 들어, 동글(dongle) 등), 회로 등을 포함하거나 또는 별도로 구비하고 있을 수 있다.The device 200 may include a Bluetooth protocol stack as a communication protocol. For example, device 200 may include the Bluetooth L2CAP protocol. Computing device 100 and/or device 200 may each include a device for Bluetooth communication. For example, the computing device 100 and/or the device 200 may each include or be separately equipped with a device (eg, dongle, etc.), circuit, etc. for Bluetooth communication.

네트워크는 컴퓨팅 장치(100) 및 디바이스(200)가 서로 임의의 형태의 데이터 및 신호를 송수신할 수 있는 임의의 유무선 통신 네트워크를 포함할 수 있다. 예를 들어, 컴퓨팅 장치(100)는 네트워크를 통해 유선 및/또는 무선으로 디바이스(200)에 패킷을 송신할 수 있다. 다른 예를 들어, 컴퓨팅 장치(100)는 네트워크를 통해 유선 및/또는 무선으로 디바이스(200)로부터 패킷을 수신할 수 있다.The network may include any wired or wireless communication network through which the computing device 100 and the device 200 can transmit and receive data and signals of any type to each other. For example, computing device 100 may transmit packets to device 200 wired and/or wirelessly over a network. As another example, computing device 100 may receive packets from device 200 wired and/or wirelessly through a network.

도 2는 본 개시의 몇몇 실시예에 따른 명령어의 구조를 개략적으로 나타낸 도면이다.Figure 2 is a diagram schematically showing the structure of instructions according to some embodiments of the present disclosure.

도 2를 참조하면, 명령어는 PAYLOAD LEN 필드(10), HEADER CID 필드(20), CODE 필드(30), ID 필드(40), DATA LEN 필드(50), DATA 필드(60) 등을 포함할 수 있다.Referring to Figure 2, the command may include a PAYLOAD LEN field (10), HEADER CID field (20), CODE field (30), ID field (40), DATA LEN field (50), DATA field (60), etc. You can.

PAYLOAD LEN 필드(10)는 종속 필드에 포함되고, 정보 페이로드(CODE 필드(30), ID 필드(40), DATA LEN 필드(50) 및 DATA 필드(60))의 길이에 기초하여 결정된 데이터를 포함할 수 있다. PAYLOAD LEN 필드(10)는 정보 페이로드의 길이에 관한 데이터를 포함할 수 있다.The PAYLOAD LEN field 10 is included in the dependent fields and contains data determined based on the length of the information payload (CODE field 30, ID field 40, DATA LEN field 50, and DATA field 60). It can be included. The PAYLOAD LEN field 10 may contain data regarding the length of the information payload.

HEADER CID 필드(20)는 고정 필드에 포함되고, 사전 결정된 특정 데이터를 포함할 수 있다. 예를 들어, 사전 결정된 특정 데이터는 ACL-U 논리 링크(logical links)에서 사용되는 “0x0001”일 수 있다.The HEADER CID field 20 is included in the fixed field and may include specific predetermined data. For example, the specific predetermined data may be “0x0001” used in ACL-U logical links.

CODE 필드(30)는 종속 필드에 포함되고, 유효한 명령 코드(valid command code)에 의해 결정된 데이터를 포함할 수 있다.The CODE field 30 is included in the dependent field and may include data determined by a valid command code.

ID 필드(40)는 종속 필드에 포함되고, 장치(예를 들어, 컴퓨팅 장치(100), 디바이스(200) 등)에 의해 동적으로 할당된 데이터를 포함할 수 있다.ID field 40 is included in the dependent field and may include data dynamically assigned by the device (e.g., computing device 100, device 200, etc.).

DATA LEN 필드(50) 종속 필드에 포함되고, DATA 필드(60)에 포함된 데이터의 길이에 의해 결정된 데이터를 포함할 수 있다.It is included in the DATA LEN field 50 dependent field and may include data determined by the length of the data included in the DATA field 60.

DATA 필드(60)는 변형 필드에 포함되고, 핵심 필드(61) 및 응용 필드(62)를 포함할 수 있다.The DATA field 60 is included in the transformation field and may include a core field 61 and an application field 62.

핵심 필드(61)는 PSM 필드, SCID 필드, DCID 필드, ICID 필드, CONT ID 필드 등을 포함할 수 있다. PSM 필드는 포트 설정에 사용될 수 있다. SCID 필드, DCID 필드, ICID 필드 및 CONT ID 필드는 채널 종점(channel endpoint)의 설정에 사용될 수 있다.The core field 61 may include a PSM field, SCID field, DCID field, ICID field, CONT ID field, etc. The PSM field can be used for port settings. The SCID field, DCID field, ICID field, and CONT ID field can be used to set a channel endpoint.

응용 필드(62)는 REASON 필드, RESULT 필드, STATUS 필드, FLAGS 필드, TYPE 필드, INTERVAL 필드, LATENCY 필드, TIMEOUT 필드, SPSM 필드, MTU 필드, CREDIT 필드, MPS 필드, OPT 필드, QoS 필드 등을 포함할 수 있다.The application field 62 includes the REASON field, RESULT field, STATUS field, FLAGS field, TYPE field, INTERVAL field, LATENCY field, TIMEOUT field, SPSM field, MTU field, CREDIT field, MPS field, OPT field, QoS field, etc. can do.

응용 필드(62)에 포함된 각각의 필드들은 명령에 대한 응용 프로그램 데이터가 포함될 수 있다. 응용 필드(62)에 포함된 각각의 필드들은 포트 또는 채널 관리에 영향을 주지 않고 데이터를 전달하기 위한 필드일 수 있다.Each field included in the application field 62 may include application data for a command. Each field included in the application field 62 may be a field for transmitting data without affecting port or channel management.

도 3은 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치에 의해 테스트 패킷을 생성하는 과정을 나타낸 도면이다.FIG. 3 is a diagram illustrating a process of generating a test packet by a computing device for performing fuzzing according to some embodiments of the present disclosure.

도 3을 참조하면, 정상 패킷은 PAYLOAD LEN 필드(10a), HEADER CID 필드(20a), CODE 필드(30a), ID 필드(40a), DATA LEN 필드(50a), 핵심 필드(예를 들어, DCID 필드 등)(61a), 응용 필드(예를 들어, MTU 필드 등)(62a)를 포함할 수 있다.Referring to FIG. 3, a normal packet includes a PAYLOAD LEN field (10a), a HEADER CID field (20a), a CODE field (30a), an ID field (40a), a DATA LEN field (50a), and a core field (e.g., DCID field, etc.) 61a, and an application field (e.g., MTU field, etc.) 62a.

프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷, 제 2 테스트 패킷 등)을 생성하기 위해 고정 필드 또는 종속 필드인 PAYLOAD LEN 필드(10b), HEADER CID 필드(20b), CODE 필드(30b), ID 필드(40b) 및 DATA LEN 필드(50b)에 정상 패킷에 대응되는 값을 각각 삽입할 수 있다.The processor 110 uses fixed or dependent fields such as the PAYLOAD LEN field 10b, the HEADER CID field 20b, and the CODE field to generate a test packet (e.g., a first test packet, a second test packet, etc.) 30b), a value corresponding to a normal packet can be inserted into the ID field 40b and the DATA LEN field 50b, respectively.

프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷, 제 2 테스트 패킷 등)을 생성하기 위해 핵심 필드(예를 들어, DCID 필드 등)(61b)에 사전 저장된 필드 참조 데이터에 기초하여 정상 패킷의 핵심 필드(61a)와 상이한 변형 데이터인 “8F7B”를 삽입할 수 있다.Processor 110 based on field reference data pre-stored in key fields (e.g., DCID field, etc.) 61b to generate test packets (e.g., first test packet, second test packet, etc.) “8F7B”, which is modified data that is different from the core field (61a) of the normal packet, can be inserted.

프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷, 제 2 테스트 패킷 등)을 생성하기 위해 응용 필드(예를 들어, MTU 필드 등)(62b)에 기본 값(default value)인 “00 00 00 00 00 00”을 삽입할 수 있다.The processor 110 enters the application field (e.g., MTU field, etc.) 62b with a default value of “ 00 00 00 00 00 00” can be inserted.

프로세서(110)는 테스트 패킷(예를 들어, 제 1 테스트 패킷, 제 2 테스트 패킷 등)을 생성하기 위해 무작위(random) 또는 사전 결정된 값으로 결정된 쓰레기 값(garbage value)(70)을 삽입할 수 있다.The processor 110 may insert a garbage value 70 determined to be random or a predetermined value to generate a test packet (e.g., a first test packet, a second test packet, etc.). there is.

[실험예 1][Experimental Example 1]

본 개시의 몇몇 실시예에 따라 퍼징을 수행하기 위한 컴퓨팅 장치(100)에 의해 생성 및 저장된 프로그램(이하, L2Fuzz)은 외부 라이브러리를 제외하고 약 1200줄의 Python 코드로 구현될 수 있다. 예를 들어, L2Fuzz는 패킷 변형을 위한 대화형 패킷 조작 프로그램인 Scapy 라이브러리(v2.4.4)를 사용하여 구현될 수 있다. L2Fuzz는 Ubuntu 18.04.4 LTS, 8GB 메모리, Intel Core i5-7500 CPU @ 3.40GHz × 4, 50GB 디스크 및 Billionton Bluetooth Class 1 동글이 있는 가상 머신에서 실행될 수 있다.A program (hereinafter referred to as L2Fuzz) generated and stored by the computing device 100 for performing fuzzing according to some embodiments of the present disclosure may be implemented with approximately 1200 lines of Python code, excluding external libraries. For example, L2Fuzz can be implemented using the Scapy library (v2.4.4), an interactive packet manipulation program for packet modification. L2Fuzz can be run on a virtual machine with Ubuntu 18.04.4 LTS, 8GB memory, Intel Core i5-7500 CPU @ 3.40GHz × 4, 50GB disk and Billionton Bluetooth Class 1 dongle.

실험 대상 장치는 BlueZ(Linux), BlueDroid(Android), Apple BT 스택 및 Windows BT 스택을 포함하여 범용 Bluetooth 프로토콜 스택을 나타낼 수 있는 8개의 실제 테스트 장치를 선택할 수 있다. 8개의 실제 테스트 장치는 아래의 표 3과 같을 수 있다.The devices under test can be selected from eight real-world test devices that can represent universal Bluetooth protocol stacks, including BlueZ (Linux), BlueDroid (Android), Apple BT stack, and Windows BT stack. The eight actual test devices may be as shown in Table 3 below.

L2Fuzz의 효과를 평가할 때 L2Fuzz의 결과는 종래 기술인 Defensics, BFuzz 및 BSS의 결과와 비교했다. 다른 관련 기술은 L2CAP 취약점 탐지를 지원하지 않거나 공개적으로 사용할 수 없기 때문에 제외되었다. 테스트 장치 D2(표 3 참조)를 사용하여 L2Fuzz의 변형 효율성 및 상태 적용 범위를 기본 퍼저(fuzzer)(예를 들어, Defensics, BFuzz 및 BSS)와 비교할 수 있다. D2는 커스텀이 거의 없는 블루투스 표준을 따르는 디바이스일 수 있다. 따라서, D2는 평가에 사용될 수 있다.When evaluating the effectiveness of L2Fuzz, the results of L2Fuzz were compared with those of the prior art techniques Defensics, BFuzz, and BSS. Other related technologies were excluded because they do not support L2CAP vulnerability detection or are not publicly available. Using test device D2 (see Table 3), the transformation efficiency and state coverage of L2Fuzz can be compared to baseline fuzzers (e.g., Defensics, BFuzz, and BSS). D2 could be a device that follows the Bluetooth standard with little customization. Therefore, D2 can be used for evaluation.

BlueZ와 BlueDroid를 제외한 대부분의 블루투스 스택은 폐쇄형 소스이므로 블루투스 퍼저는 블랙박스 퍼저에 가깝다. 따라서, 소스 코드 커버리지와 같은 화이트박스 또는 그레이박스 퍼징에 사용되는 평가 메트릭스(evaluation metrics)는 사용하기 어렵다. 그러므로, 블루투스 퍼저를 평가하기 위한 평가 지표는 패킷 추적만으로 측정할 수 있는 변형 효율성(mutation efficiency) 및 상태 커버리지(state coverage)를 사용할 수 있다.Since most Bluetooth stacks except BlueZ and BlueDroid are closed source, the Bluetooth fuzzer is closer to a black box fuzzer. Therefore, evaluation metrics used for white-box or gray-box fuzzing, such as source code coverage, are difficult to use. Therefore, mutation efficiency and state coverage, which can be measured only through packet traces, can be used as evaluation indicators for evaluating Bluetooth fuzzers.

변형 효율성은 거부 없이 전송된 malformed packet(예를 들어, 테스트 패킷)의 최소 비율일 수 있다. 변형 효율성은 아래의 수학식 1을 통해 산출될 수 있다.Modification efficiency may be the minimum percentage of malformed packets (e.g., test packets) transmitted without rejection. The transformation efficiency can be calculated through Equation 1 below.

MP Ratio는 malformed packet의 비율일 수 있다. PR Ratio는 패킷 거부 비율일 수 있다. MP Ratio는 아래의 수학식 2를 통해 산출될 수 있다.MP Ratio can be the ratio of malformed packets. PR Ratio may be a packet rejection rate. MP Ratio can be calculated through Equation 2 below.

MP Ratio는 전송된 malformed packet의 개수를 전송된 전체 패킷의 개수로 나눈 값일 수 있다.MP Ratio may be the number of transmitted malformed packets divided by the total number of transmitted packets.

PR Ratio는 아래의 수학식 3을 통해 산출될 수 있다.PR Ratio can be calculated through Equation 3 below.

PR Ratio는 타겟(예를 들어, 디바이스(200)의 제 1 포트, 제 2 포트 등)으로부터 수신된 거절 패킷의 개수를 타겟으로부터 수신된 패킷의 개수로 나눈 값일 수 있다.The PR Ratio may be a value obtained by dividing the number of rejection packets received from the target (eg, the first port, the second port, etc. of the device 200) by the number of packets received from the target.

상태 커버리지는 커버가 되는 L2CAP 상태의 수를 의미할 수 있다. 취약점은 상태 전이 과정과 각 상태의 기능(functions)에서 발생할 가능성이 높기 때문에, L2CAP 상태를 많이 커버할수록 취약점 탐지 가능성이 높아질 수 있다. 상태 커버리지는 프로토콜 리버스 엔지니어링 도구(protocol reverse engineering tool)를 통해 측정될 수 있다.State coverage may mean the number of L2CAP states covered. Since vulnerabilities are likely to occur in the state transition process and the functions of each state, the more L2CAP states are covered, the higher the possibility of vulnerability detection. State coverage can be measured through a protocol reverse engineering tool.

L2Fuzz, Defensics, BFuzz 및 BSS를 각각 이용하여 퍼징 테스트를 수행한 실험 결과는 도 4를 참조하여 후술한다.The results of the fuzzing test performed using L2Fuzz, Defensics, BFuzz, and BSS respectively are described later with reference to FIG. 4.

도 4는 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치의 프로그램과 종래의 기술들의 상태 커버리지(state coverage)를 나타낸 도면이다.FIG. 4 is a diagram illustrating state coverage of a program of a computing device and conventional techniques for performing fuzzing according to some embodiments of the present disclosure.

도 4의 실험 결과에 따른 상태 커버리지를 참조하면, L2Fuzz는 13개의 상태를 커버할 수 있다. 종래 기술인 Defensics은 7개의 상태를 커버할 수 있다. 종래 기술인 BFuzz는 6개의 상태를 커버할 수 있다. 종래의 기술인 BSS는 3개의 상태를 커버할 수 있다. 따라서, 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치(100)에 의해 생성 및 저장된 프로그램인 L2Fuzz는 종래의 기술들에 비해서 더 많은 상태를 커버함으로써, 취약점 탐지 가능성이 종래의 기술들에 비해서 더 높다는 것을 알 수 있다.Referring to the state coverage according to the experimental results in Figure 4, L2Fuzz can cover 13 states. The prior art Defensics can cover 7 states. BFuzz, a prior art, can cover six states. BSS, a conventional technology, can cover three states. Therefore, L2Fuzz, a program created and stored by the computing device 100 for performing fuzzing according to some embodiments of the present disclosure, covers more states compared to conventional techniques, thereby increasing the possibility of detecting vulnerabilities compared to conventional techniques. It can be seen that it is higher compared to .

실험 결과에 따른 변형 효율성은 아래의 표 4와 같을 수 있다.The deformation efficiency according to the experimental results can be shown in Table 4 below.

표 4를 참조하면, L2Fuzz의 변형 효율성은 47.22%일 수 있다. 종래 기술인 Defensics의 변형 효율성은 2.33%일 수 있다. 종래 기술인 BFuzz의 변형 효율성은 0.12%일 수 있다. 종래의 기술인 BSS의 변형 효율성은 0%일 수 있다. 따라서, 본 개시의 몇몇 실시예에 따른 퍼징을 수행하기 위한 컴퓨팅 장치(100)에 의해 생성 및 저장된 프로그램인 L2Fuzz는 종래의 기술들에 비해서 더 높은 변형 효율성을 가짐으로써, 공격의 효율성이 종래의 기술들에 비해서 더 높다는 것을 알 수 있다.Referring to Table 4, the transformation efficiency of L2Fuzz can be 47.22%. The strain efficiency of the prior art Defensics can be 2.33%. The deformation efficiency of the prior art BFuzz may be 0.12%. The transformation efficiency of conventional technology BSS may be 0%. Therefore, L2Fuzz, a program created and stored by the computing device 100 for performing fuzzing according to some embodiments of the present disclosure, has a higher transformation efficiency compared to conventional techniques, so that the efficiency of the attack is greater than that of conventional techniques. You can see that it is higher than the fields.

도 5는 본 개시의 몇몇 실시예에 따라 퍼징을 수행하기 위한 방법을 예시적으로 나타낸 도면이다.Figure 5 is a diagram illustrating a method for performing fuzzing according to some embodiments of the present disclosure.

프로세서(110)는 디바이스(200)에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택할 수 있다(S110).The processor 110 may select a first port among the at least one port based on whether pairing is required for each of the at least one port included in the device 200 (S110).

프로세서(110)는 적어도 하나의 포트 중에서 페어링을 요구하고, 그리고 페어링의 요구를 무시하고 통신이 가능한 제 1 포트를 선택할 수 있다.The processor 110 may request pairing from at least one port, and select a first port capable of communication while ignoring the pairing request.

프로세서(110)는 적어도 하나의 포트 중에서 페어링을 요구하지 않는 제 1 포트를 선택할 수 있다.The processor 110 may select a first port that does not require pairing from among at least one port.

프로세서(110)는 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 제 1 포트에 전송할 수 있다(S120).In order to enter the first port into a predetermined first state, the processor 110 may transmit to the first port a first state transition packet in which an instruction corresponding to the predetermined first state is mapped. (S120).

프로세서(110)는 제 1 상태 전이 패킷을 제 1 포트에 전송(S120)하기 이전에, 작업(job)에 기초하여 디바이스(200)의 통신 프로토콜에 따라 사전 결정된 복수의 상태들을 복수의 그룹들로 분류할 수 있다. 프로세서(110)는 복수의 그룹들 각각에 대응되는 명령어를 매핑시킬 수 있다.Before transmitting the first state transition packet to the first port (S120), the processor 110 divides a plurality of predetermined states into a plurality of groups according to the communication protocol of the device 200 based on the job. Can be classified. The processor 110 may map instructions corresponding to each of the plurality of groups.

프로세서(110)는 제 1 포트로부터 수신한 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 제 1 포트의 현재 상태(state)(예를 들어, 제 1 현재 상태)를 결정할 수 있다(S130).The processor 110 may determine the current state (e.g., first current state) of the first port based on the first response packet to the first state transition packet received from the first port (S130 ).

프로세서(110)는 제 1 포트의 현재 상태(예를 들어, 제 1 현재 상태)가 사전 결정된 제 1 상태에 대응되는 경우, 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성할 수 있다(S140).When the current state (e.g., first current state) of the first port corresponds to the predetermined first state, the processor 110 modifies at least one field included in the instruction corresponding to the predetermined first state. A mutated first test packet can be generated (S140).

명령어에 포함된 적어도 하나의 필드는 고정되어 변경 불가능한 데이터를 포함하는 고정 필드(fixed field), 다른 필드에 종속된 데이터를 포함하는 종속 필드(dependent field) 및 변형 가능한 데이터를 포함하는 변형 필드(mutable field)를 포함할 수 있다.At least one field included in the command is a fixed field containing data that is fixed and cannot be changed, a dependent field containing data dependent on another field, and a mutable field containing mutable data. field) may be included.

변형 필드는 디바이스(200)의 통신 채널 또는 포트 중 적어도 하나와 관련된 데이터를 포함하는 핵심 필드(core field) 및 응용 소프트웨어와 관련된 데이터를 포함하는 응용 필드(application field)를 포함할 수 있다.The modification field may include a core field containing data related to at least one of the communication channels or ports of the device 200 and an application field containing data related to application software.

프로세서(110)는 제 1 포트의 제 1 현재 상태가 사전 결정된 제 1 상태에 대응되는 경우, 명령어에 포함된 핵심 필드를 변형시킨 제 1 테스트 패킷을 생성할 수 있다.If the first current state of the first port corresponds to the predetermined first state, the processor 110 may generate a first test packet in which key fields included in the command are modified.

프로세서(110)는 제 1 테스트 패킷을 이용하여 제 1 포트의 퍼징 테스트를 수행할 수 있다(S150).The processor 110 may perform a fuzzing test of the first port using the first test packet (S150).

프로세서(110)는 제 1 테스트 패킷을 제 1 포트에 전송할 수 있다. 프로세서(110)는 제 1 포트로부터 수신한 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 제 1 포트의 취약점 발현 여부를 결정할 수 있다.The processor 110 may transmit the first test packet to the first port. The processor 110 may determine whether a vulnerability exists in the first port based on the second response packet to the first test packet received from the first port.

프로세서(110)는 제 2 응답 패킷과 사전 저장된 정상 응답 패킷이 서로 상이한 경우, 제 1 포트에 제 1 테스트 패킷에 의한 취약점이 발현된 것으로 결정할 수 있다. 프로세서(110)는 발현된 취약점에 관한 정보를 생성할 수 있다.If the second response packet and the pre-stored normal response packet are different from each other, the processor 110 may determine that a vulnerability caused by the first test packet has appeared in the first port. The processor 110 may generate information about developed vulnerabilities.

프로세서(110)는 제 1 포트를 제 1 상태와 상이한 사전 결정된 제 2 상태(state)로 진입시키기 위해, 사전 결정된 제 2 상태에 대응되는 명령어가 매핑(mapping)된 제 2 상태 전이 패킷을 제 1 포트에 전송할 수 있다.In order to enter the first port into a predetermined second state that is different from the first state, the processor 110 sends a second state transition packet in which an instruction corresponding to the predetermined second state is mapped to the first state. It can be transmitted to the port.

프로세서(110)는 제 1 포트로부터 수신한 제 2 상태 전이 패킷에 대한 제 3 응답 패킷에 기초하여 제 1 포트의 제 2 현재 상태(state)를 결정할 수 있다.The processor 110 may determine the second current state of the first port based on the third response packet to the second state transition packet received from the first port.

프로세서(110)는 제 1 포트의 제 2 현재 상태가 사전 결정된 제 2 상태에 대응되는 경우, 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 2 테스트 패킷을 생성할 수 있다.When the second current state of the first port corresponds to the predetermined second state, the processor 110 generates a second test packet in which at least one field included in the instruction corresponding to the predetermined second state is mutated. can be created.

프로세서(110)는 제 2 테스트 패킷을 이용하여 제 1 포트의 퍼징 테스트를 수행할 수 있다.The processor 110 may perform a fuzzing test of the first port using the second test packet.

도 5에 도시되는 단계들은 예시적인 단계들이다. 따라서, 본 개시내용의 사상의 범위를 벗어나지 않는 한도에서 도 5의 단계들 중 일부가 생략되거나 추가적인 단계들이 존재할 수 있다는 점 또한 당업자에게 명백할 것이다. 또한, 도 5에 기재된 구성들(예를 들어, 컴퓨팅 장치(100), 디바이스(200)등)에 관한 구체적인 내용은 앞서 도 1 내지 도 4를 통해 설명한 내용으로 대체될 수 있다.The steps shown in FIG. 5 are exemplary steps. Accordingly, it will also be apparent to those skilled in the art that some of the steps in FIG. 5 may be omitted or additional steps may be present without departing from the scope of the present disclosure. Additionally, specific details regarding the components depicted in FIG. 5 (eg, computing device 100, device 200, etc.) may be replaced with the details previously described with reference to FIGS. 1 to 4.

도 1 내지 도 5을 참조하여 상술한 바와 같이, 본 개시에 따른 퍼징을 수행하기 위한 컴퓨팅 장치(100)는 테스트의 타겟이 되는 포트와 페어링 없이 테스트를 진행함으로써, 페어링 없이 공격이 가능한 패킷을 생성 및 탐지할 수 있다.As described above with reference to FIGS. 1 to 5, the computing device 100 for performing fuzzing according to the present disclosure performs a test without pairing with the port that is the target of the test, thereby generating a packet that can be attacked without pairing. and can be detected.

또한, 본 개시에 따른 퍼징을 수행하기 위한 컴퓨팅 장치(100)는 포트의 상태를 변경시키고, 포트의 상태에 대응되는 명령어에서 핵심 필드를 중심으로 변형시킨 테스트 패킷을 생성함으로써, 포트의 취약점 발현 가능성을 높일 수 있다. In addition, the computing device 100 for performing fuzzing according to the present disclosure changes the state of the port and generates a test packet modified around key fields in the command corresponding to the state of the port, thereby raising the possibility of port vulnerability. can increase.

또한, 본 개시에 따른 퍼징을 수행하기 위한 컴퓨팅 장치(100)는 테스트 패킷에 의해 발현된 취약점에 관한 정보를 생성하여 저장 또는 취약점이 발현된 포트의 디바이스(200)에 전송함으로써, 컴퓨팅 장치(100) 또는 디바이스(200)의 사용자가 취약점에 관한 정보를 확인하고 대처 방안을 강구할 수 있다.In addition, the computing device 100 for performing fuzzing according to the present disclosure generates information about the vulnerability expressed by the test packet and stores it or transmits it to the device 200 of the port where the vulnerability is expressed, so that the computing device 100 ) Alternatively, the user of the device 200 can check information about vulnerabilities and devise countermeasures.

도 6은 본 개시의 실시예들이 구현될 수 있는 예시적인 컴퓨팅 환경에 대한 간략하고 일반적인 개략도이다.6 is a brief, general schematic diagram of an example computing environment in which embodiments of the present disclosure may be implemented.

본 개시가 일반적으로 컴퓨팅 장치에 의해 구현될 수 있는 것으로 전술되었지만, 당업자라면 본 개시가 하나 이상의 컴퓨터 상에서 실행될 수 있는 컴퓨터 실행가능 명령어 및/또는 기타 프로그램 모듈들과 결합되어 및/또는 하드웨어와 소프트웨어의 조합으로써 구현될 수 있다는 것을 잘 알 것이다.Although the present disclosure has generally been described above as being capable of being implemented by a computing device, those skilled in the art will understand that the present disclosure can be implemented in combination with computer-executable instructions and/or other program modules that can be executed on one or more computers and/or in hardware and software. It will be well known that it can be implemented as a combination.

일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조, 기타 등등을 포함한다. 또한, 당업자라면 본 개시의 방법이 단일-프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터는 물론 퍼스널 컴퓨터, 핸드헬드(handheld) 컴퓨팅 장치, 마이크로프로세서-기반 또는 프로그램가능 가전 제품, 기타 등등(이들 각각은 하나 이상의 연관된 장치와 연결되어 동작할 수 있음)을 비롯한 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 잘 알 것이다.Typically, program modules include routines, programs, components, data structures, etc. that perform specific tasks or implement specific abstract data types. Additionally, those skilled in the art will understand that the methods of the present disclosure are applicable to single-processor or multiprocessor computer systems, minicomputers, mainframe computers, as well as personal computers, handheld computing devices, microprocessor-based or programmable consumer electronics, etc. It will be appreciated that each of these may be implemented in other computer system configurations, including those capable of operating in conjunction with one or more associated devices.

본 개시의 설명된 실시예들은 또한 어떤 태스크들이 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 다에 위치할 수 있다.The described embodiments of the disclosure can also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

컴퓨터는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 일시적(transitory) 및 비일시적(non-transitory) 매체, 이동식 및 비-이동식 매체를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 판독가능 저장 매체 및 컴퓨터 판독가능 전송 매체를 포함할 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성 매체, 일시적 및 비-일시적 매체, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital video disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지 않는다.Computers typically include a variety of computer-readable media. Computer-readable media can be any medium that can be accessed by a computer, and such computer-readable media includes volatile and non-volatile media, transitory and non-transitory media, removable and non-transitory media. Includes removable media. By way of example, and not limitation, computer-readable media may include computer-readable storage media and computer-readable transmission media. Computer-readable storage media refers to volatile and non-volatile media, transient and non-transitory media, removable and non-removable, implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Includes media. Computer readable storage media may include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital video disk (DVD) or other optical disk storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage. This includes, but is not limited to, a device, or any other medium that can be accessed by a computer and used to store desired information.

컴퓨터 판독가능 전송 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. 피변조 데이터 신호라는 용어는 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 제한이 아닌 예로서, 컴퓨터 판독가능 전송 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들 중 임의의 것의 조합도 역시 컴퓨터 판독가능 전송 매체의 범위 안에 포함되는 것으로 한다.A computer-readable transmission medium typically implements computer-readable instructions, data structures, program modules, or other data on a modulated data signal, such as a carrier wave or other transport mechanism. Includes all information delivery media. The term modulated data signal refers to a signal in which one or more of the characteristics of the signal have been set or changed to encode information within the signal. By way of example, and not limitation, computer-readable transmission media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also intended to be included within the scope of computer-readable transmission media.

컴퓨터(1102)를 포함하는 본 개시의 여러가지 측면들을 구현하는 예시적인 환경(1100)이 나타내어져 있으며, 컴퓨터(1102)는 처리 장치(1104), 시스템 메모리(1106) 및 시스템 버스(1108)를 포함한다. 시스템 버스(1108)는 시스템 메모리(1106)(이에 한정되지 않음)를 비롯한 시스템 컴포넌트들을 처리 장치(1104)에 연결시킨다. 처리 장치(1104)는 다양한 상용 프로세서들 중 임의의 프로세서일 수 있다. 듀얼 프로세서 및 기타 멀티프로세서 아키텍처도 역시 처리 장치(1104)로서 이용될 수 있다.An example environment 1100 is shown that implements various aspects of the present disclosure, including a computer 1102, which includes a processing unit 1104, a system memory 1106, and a system bus 1108. do. System bus 1108 couples system components, including but not limited to system memory 1106, to processing unit 1104. Processing unit 1104 may be any of a variety of commercially available processors. Dual processors and other multiprocessor architectures may also be used as processing unit 1104.

시스템 버스(1108)는 메모리 버스, 주변장치 버스, 및 다양한 상용 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스에 추가적으로 상호 연결될 수 있는 몇 가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리(1106)는 판독 전용 메모리(ROM)(1110) 및 랜덤 액세스 메모리(RAM)(1112)를 포함한다. 기본 입/출력 시스템(BIOS)은 ROM, EPROM, EEPROM 등의 비휘발성 메모리(1110)에 저장되며, 이 BIOS는 시동 중과 같은 때에 컴퓨터(1102) 내의 구성요소들 간에 정보를 전송하는 일을 돕는 기본적인 루틴을 포함한다. RAM(1112)은 또한 데이터를 캐싱하기 위한 정적 RAM 등의 고속 RAM을 포함할 수 있다.System bus 1108 may be any of several types of bus structures that may further be interconnected to a memory bus, peripheral bus, and local bus using any of a variety of commercial bus architectures. System memory 1106 includes read only memory (ROM) 1110 and random access memory (RAM) 1112. The basic input/output system (BIOS) is stored in non-volatile memory 1110, such as ROM, EPROM, and EEPROM, and is a basic input/output system that helps transfer information between components within the computer 1102, such as during startup. Contains routines. RAM 1112 may also include high-speed RAM, such as static RAM, for caching data.

컴퓨터(1102)는 또한 내장형 하드 디스크 드라이브(HDD)(1114)(예를 들어, EIDE, SATA)-이 내장형 하드 디스크 드라이브(1114)는 또한 적당한 섀시(도시 생략) 내에서 외장형 용도로 구성될 수 있음-, 자기 플로피 디스크 드라이브(FDD)(1116)(예를 들어, 이동식 디스켓(1118)으로부터 판독을 하거나 그에 기록을 하기 위한 것임), 및 광 디스크 드라이브(1120)(예를 들어, CD-ROM 디스크(1122)를 판독하거나 DVD 등의 기타 고용량 광 매체로부터 판독을 하거나 그에 기록을 하기 위한 것임)를 포함한다. 하드 디스크 드라이브(1114), 자기 디스크 드라이브(1116) 및 광 디스크 드라이브(1120)는 각각 하드 디스크 드라이브 인터페이스(1124), 자기 디스크 드라이브 인터페이스(1126) 및 광 드라이브 인터페이스(1128)에 의해 시스템 버스(1108)에 연결될 수 있다. 외장형 드라이브 구현을 위한 인터페이스(1124)는 USB(Universal Serial Bus) 및 IEEE 1394 인터페이스 기술 중 적어도 하나 또는 그 둘 다를 포함한다.Computer 1102 may also include an internal hard disk drive (HDD) 1114 (e.g., EIDE, SATA)—the internal hard disk drive 1114 may also be configured for external use within a suitable chassis (not shown). Yes - a magnetic floppy disk drive (FDD) 1116 (e.g., for reading from or writing to a removable diskette 1118), and an optical disk drive 1120 (e.g., a CD-ROM for reading the disk 1122 or reading from or writing to other high-capacity optical media such as DVDs). Hard disk drive 1114, magnetic disk drive 1116, and optical disk drive 1120 are connected to system bus 1108 by hard disk drive interface 1124, magnetic disk drive interface 1126, and optical drive interface 1128, respectively. ) can be connected to. The interface 1124 for implementing an external drive includes at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies.

이들 드라이브 및 그와 연관된 컴퓨터 판독가능 매체는 데이터, 데이터 구조, 컴퓨터 실행가능 명령어, 기타 등등의 비휘발성 저장을 제공한다. 컴퓨터(1102)의 경우, 드라이브 및 매체는 임의의 데이터를 적당한 디지털 형식으로 저장하는 것에 대응한다. 상기에서의 컴퓨터 판독가능 매체에 대한 설명이 HDD, 이동식 자기 디스크, 및 CD 또는 DVD 등의 이동식 광 매체를 언급하고 있지만, 당업자라면 집 드라이브(zip drive), 자기 카세트, 플래쉬 메모리 카드, 카트리지, 기타 등등의 컴퓨터에 의해 판독가능한 다른 유형의 매체도 역시 예시적인 운영 환경에서 사용될 수 있으며 또 임의의 이러한 매체가 본 개시의 방법들을 수행하기 위한 컴퓨터 실행가능 명령어를 포함할 수 있다는 것을 잘 알 것이다.These drives and their associated computer-readable media provide non-volatile storage of data, data structures, computer-executable instructions, and the like. For computer 1102, drive and media correspond to storing any data in a suitable digital format. Although the description of computer-readable media above refers to removable optical media such as HDDs, removable magnetic disks, and CDs or DVDs, those skilled in the art will also recognize removable optical media such as zip drives, magnetic cassettes, flash memory cards, cartridges, etc. It will be appreciated that other types of computer-readable media, such as the like, may also be used in the example operating environment and that any such media may contain computer-executable instructions for performing the methods of the present disclosure.

운영 체제(1130), 하나 이상의 애플리케이션 프로그램(1132), 기타 프로그램 모듈(1134) 및 프로그램 데이터(1136)를 비롯한 다수의 프로그램 모듈이 드라이브 및 RAM(1112)에 저장될 수 있다. 운영 체제, 애플리케이션, 모듈 및/또는 데이터의 전부 또는 그 일부분이 또한 RAM(1112)에 캐싱될 수 있다. 본 개시가 여러가지 상업적으로 이용가능한 운영 체제 또는 운영 체제들의 조합에서 구현될 수 있다는 것을 잘 알 것이다.A number of program modules may be stored in drives and RAM 1112, including an operating system 1130, one or more application programs 1132, other program modules 1134, and program data 1136. All or portions of the operating system, applications, modules and/or data may also be cached in RAM 1112. It will be appreciated that the present disclosure may be implemented on various commercially available operating systems or combinations of operating systems.

사용자는 하나 이상의 유선/무선 입력 장치, 예를 들어, 키보드(1138) 및 마우스(1140) 등의 포인팅 장치를 통해 컴퓨터(1102)에 명령 및 정보를 입력할 수 있다. 기타 입력 장치(도시 생략)로는 마이크, IR 리모콘, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린, 기타 등등이 있을 수 있다. 이들 및 기타 입력 장치가 종종 시스템 버스(1108)에 연결되어 있는 입력 장치 인터페이스(1142)를 통해 처리 장치(1104)에 연결되지만, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스, 기타 등등의 기타 인터페이스에 의해 연결될 수 있다.A user may enter commands and information into computer 1102 through one or more wired/wireless input devices, such as a keyboard 1138 and a pointing device such as mouse 1140. Other input devices (not shown) may include microphones, IR remote controls, joysticks, game pads, stylus pens, touch screens, etc. These and other input devices are connected to the processing unit 1104 through an input device interface 1142, which is often connected to the system bus 1108, but may also include a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, It can be connected by other interfaces, etc.

모니터(1144) 또는 다른 유형의 디스플레이 장치도 역시 비디오 어댑터(1146) 등의 인터페이스를 통해 시스템 버스(1108)에 연결된다. 모니터(1144)에 부가하여, 컴퓨터는 일반적으로 스피커, 프린터, 기타 등등의 기타 주변 출력 장치(도시 생략)를 포함한다.A monitor 1144 or other type of display device is also connected to system bus 1108 through an interface, such as a video adapter 1146. In addition to monitor 1144, computers typically include other peripheral output devices (not shown) such as speakers, printers, etc.

컴퓨터(1102)는 유선 및/또는 무선 통신을 통한 원격 컴퓨터(들)(1148) 등의 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(들)(1148)는 워크스테이션, 컴퓨팅 디바이스 컴퓨터, 라우터, 퍼스널 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 오락 기기, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(1102)에 대해 기술된 구성요소들 중 다수 또는 그 전부를 포함하지만, 간략함을 위해, 메모리 저장 장치(1150)만이 도시되어 있다. 도시되어 있는 논리적 연결은 근거리 통신망(LAN)(1152) 및/또는 더 큰 네트워크, 예를 들어, 원거리 통신망(WAN)(1154)에의 유선/무선 연결을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경은 사무실 및 회사에서 일반적인 것이며, 인트라넷 등의 전사적 컴퓨터 네트워크(enterprise-wide computer network)를 용이하게 해주며, 이들 모두는 전세계 컴퓨터 네트워크, 예를 들어, 인터넷에 연결될 수 있다.Computer 1102 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 1148, via wired and/or wireless communications. Remote computer(s) 1148 may be a workstation, computing device computer, router, personal computer, portable computer, microprocessor-based entertainment device, peer device, or other conventional network node, and is generally connected to computer 1102. For simplicity, only memory storage device 1150 is shown, although it includes many or all of the components described. The logical connections depicted include wired/wireless connections to a local area network (LAN) 1152 and/or a larger network, such as a wide area network (WAN) 1154. These LAN and WAN networking environments are common in offices and companies and facilitate enterprise-wide computer networks, such as intranets, all of which can be connected to a worldwide computer network, such as the Internet.

LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1102)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(1156)를 통해 로컬 네트워크(1152)에 연결된다. 어댑터(1156)는 LAN(1152)에의 유선 또는 무선 통신을 용이하게 해줄 수 있으며, 이 LAN(1152)은 또한 무선 어댑터(1156)와 통신하기 위해 그에 설치되어 있는 무선 액세스 포인트를 포함하고 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1102)는 모뎀(1158)을 포함할 수 있거나, WAN(1154) 상의 통신 컴퓨팅 디바이스에 연결되거나, 또는 인터넷을 통하는 등, WAN(1154)을 통해 통신을 설정하는 기타 수단을 갖는다. 내장형 또는 외장형 및 유선 또는 무선 장치일 수 있는 모뎀(1158)은 직렬 포트 인터페이스(1142)를 통해 시스템 버스(1108)에 연결된다. 네트워크화된 환경에서, 컴퓨터(1102)에 대해 설명된 프로그램 모듈들 또는 그의 일부분이 원격 메모리/저장 장치(1150)에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 잘 알 것이다.When used in a LAN networking environment, computer 1102 is connected to local network 1152 through wired and/or wireless communication network interfaces or adapters 1156. Adapter 1156 may facilitate wired or wireless communication to LAN 1152, which also includes a wireless access point installed thereon for communicating with wireless adapter 1156. When used in a WAN networking environment, the computer 1102 may include a modem 1158 or be connected to a communicating computing device on the WAN 1154 or to establish communications over the WAN 1154, such as via the Internet. Have other means. Modem 1158, which may be internal or external and a wired or wireless device, is coupled to system bus 1108 via serial port interface 1142. In a networked environment, program modules described for computer 1102, or portions thereof, may be stored in remote memory/storage device 1150. It will be appreciated that the network connections shown are exemplary and that other means of establishing a communications link between computers may be used.

컴퓨터(1102)는 무선 통신으로 배치되어 동작하는 임의의 무선 장치 또는 개체, 예를 들어, 프린터, 스캐너, 데스크톱 및/또는 휴대용 컴퓨터, PDA(portable data assistant), 통신 위성, 무선 검출가능 태그와 연관된 임의의 장비 또는 장소, 및 전화와 통신을 하는 동작을 한다. 이것은 적어도 Wi-Fi 및 블루투스 무선 기술을 포함한다. 따라서, 통신은 종래의 네트워크에서와 같이 미리 정의된 구조이거나 단순하게 적어도 2개의 장치 사이의 애드혹 통신(ad hoc communication)일 수 있다.Computer 1102 may be associated with any wireless device or object deployed and operating in wireless communications, such as a printer, scanner, desktop and/or portable computer, portable data assistant (PDA), communications satellite, wirelessly detectable tag. Performs actions to communicate with any device or location and telephone. This includes at least Wi-Fi and Bluetooth wireless technologies. Accordingly, communication may be a predefined structure as in a conventional network or may simply be ad hoc communication between at least two devices.

Wi-Fi(Wireless Fidelity)는 유선 없이도 인터넷 등으로의 연결을 가능하게 해준다. Wi-Fi는 이러한 장치, 예를 들어, 컴퓨터가 실내에서 및 실외에서, 즉 기지국의 통화권 내의 아무 곳에서나 데이터를 전송 및 수신할 수 있게 해주는 셀 전화와 같은 무선 기술이다. Wi-Fi 네트워크는 안전하고 신뢰성 있으며 고속인 무선 연결을 제공하기 위해 IEEE 802.11(a, b, g, 기타)이라고 하는 무선 기술을 사용한다. 컴퓨터를 서로에, 인터넷에 및 유선 네트워크(IEEE 802.3 또는 이더넷을 사용함)에 연결시키기 위해 Wi-Fi가 사용될 수 있다. Wi-Fi 네트워크는 비인가 2.4 및 5GHz 무선 대역에서, 예를 들어, 11Mbps(802.11a) 또는 54 Mbps(802.11b) 데이터 레이트로 동작하거나, 양 대역(듀얼 대역)을 포함하는 제품에서 동작할 수 있다.Wi-Fi (Wireless Fidelity) enables connection to the Internet, etc. without wires. Wi-Fi is a wireless technology, like cell phones, that allows these devices, such as computers, to send and receive data indoors and outdoors, anywhere within the coverage area of a base station. Wi-Fi networks use wireless technology called IEEE 802.11 (a, b, g, etc.) to provide secure, reliable, and high-speed wireless connections. Wi-Fi can be used to connect computers to each other, the Internet, and wired networks (using IEEE 802.3 or Ethernet). Wi-Fi networks can operate in the unlicensed 2.4 and 5 GHz wireless bands, for example, at data rates of 11 Mbps (802.11a) or 54 Mbps (802.11b), or in products that include both bands (dual band). .

본 개시의 기술 분야에서 통상의 지식을 가진 자는 정보 및 신호들이 임의의 다양한 상이한 기술들 및 기법들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예를 들어, 위의 설명에서 참조될 수 있는 데이터, 지시들, 명령들, 정보, 신호들, 값들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.Those skilled in the art will understand that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, values, symbols and chips that may be referenced in the above description include voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields. or particles, or any combination thereof.

본 개시의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 소프트웨어로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 개시의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 개시의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.Those skilled in the art will understand that the various illustrative logical blocks, modules, processors, means, circuits and algorithm steps described in connection with the embodiments disclosed herein may be used in electronic hardware, (for convenience) It will be understood that it may be implemented by various forms of program or design code (referred to herein as software) or a combination of both. To clearly illustrate this interoperability of hardware and software, various illustrative components, blocks, modules, circuits and steps have been described above generally with respect to their functionality. Whether this functionality is implemented as hardware or software depends on the specific application and design constraints imposed on the overall system. A person skilled in the art of this disclosure may implement the described functionality in various ways for each specific application, but such implementation decisions should not be construed as departing from the scope of this disclosure.

여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 제조 물품은 임의의 컴퓨터-판독가능 저장장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 저장매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다.The various embodiments presented herein may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques. The term article of manufacture includes a computer program, carrier, or media accessible from any computer-readable storage device. For example, computer-readable storage media include magnetic storage devices (e.g., hard disks, floppy disks, magnetic strips, etc.), optical disks (e.g., CDs, DVDs, etc.), smart cards, and flash. Includes, but is not limited to, memory devices (e.g., EEPROM, cards, sticks, key drives, etc.). Additionally, various storage media presented herein include one or more devices and/or other machine-readable media for storing information.

제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 개시의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.It is to be understood that the specific order or hierarchy of steps in the processes presented is an example of illustrative approaches. It is to be understood that the specific order or hierarchy of steps in processes may be rearranged within the scope of the present disclosure, based on design priorities. The appended method claims present elements of the various steps in a sample order but are not meant to be limited to the particular order or hierarchy presented.

제시된 실시예들에 대한 설명은 임의의 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 개시는 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.The description of the presented embodiments is provided to enable any person skilled in the art to make or use the present disclosure. Various modifications to these embodiments will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments without departing from the scope of the disclosure. Thus, the present disclosure is not limited to the embodiments presented herein but is to be interpreted in the broadest scope consistent with the principles and novel features presented herein.

Claims (12)

프로세서를 포함하는 컴퓨팅 장치에서 퍼징(fuzzing)을 수행하기 위한 방법으로서,
디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하는 단계;
상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계;
상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하는 단계;
상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계;
상기 제 1 테스트 패킷을 상기 제 1 포트에 전송하는 단계; 및
상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는 단계;
를 포함하는,
방법.
A method for performing fuzzing in a computing device including a processor, comprising:
selecting a first port among the at least one port based on whether pairing is required for each of the at least one port included in the device;
In order to enter the first port into a predetermined first state, transmitting to the first port a first state transition packet in which a command corresponding to the predetermined first state is mapped;
determining a first current state of the first port based on a first response packet to the first state transition packet received from the first port;
When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. steps;
transmitting the first test packet to the first port; and
determining whether a vulnerability exists in the first port based on a second response packet to the first test packet received from the first port;
Including,
method.
제 1 항에 있어서,
상기 제 1 포트를 선택하는 단계는,
상기 적어도 하나의 포트 중에서 상기 페어링을 요구하고, 그리고 상기 페어링의 요구를 무시하고 통신이 가능한 상기 제 1 포트를 선택하는 단계;
를 포함하는,
방법.
According to claim 1,
The step of selecting the first port is,
requesting the pairing from among the at least one port, and selecting the first port capable of communication while ignoring the pairing request;
Including,
method.
제 1 항에 있어서,
상기 제 1 포트를 선택하는 단계는,
상기 적어도 하나의 포트 중에서 상기 페어링을 요구하지 않는 상기 제 1 포트를 선택하는 단계;
를 포함하는,
방법.
According to claim 1,
The step of selecting the first port is,
selecting the first port that does not require pairing from among the at least one port;
Including,
method.
제 1 항에 있어서,
상기 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계 이전에,
작업(job)에 기초하여 상기 디바이스의 통신 프로토콜에 따라 사전 결정된 복수의 상태들을 복수의 그룹들로 분류하는 단계; 및
상기 복수의 그룹들 각각에 대응되는 명령어를 매핑시키는 단계;
를 포함하는,
방법.
According to claim 1,
Before transmitting the first state transition packet to the first port,
Classifying a plurality of predetermined states into a plurality of groups according to a communication protocol of the device based on a job; and
mapping a command corresponding to each of the plurality of groups;
Including,
method.
제 1 항에 있어서,
상기 명령어에 포함된 적어도 하나의 필드는,
고정되어 변경 불가능한 데이터를 포함하는 고정 필드(fixed field);
다른 필드에 종속된 데이터를 포함하는 종속 필드(dependent field); 및
변형 가능한 데이터를 포함하는 변형 필드(mutable field);
를 포함하는,
방법.
According to claim 1,
At least one field included in the command is:
A fixed field contains data that is fixed and cannot be changed;
a dependent field containing data that is dependent on another field; and
A mutable field containing mutable data;
Including,
method.
제 5 항에 있어서,
상기 변형 필드는,
상기 디바이스의 통신 채널 또는 포트 중 적어도 하나와 관련된 데이터를 포함하는 핵심 필드(core field); 및
응용 소프트웨어와 관련된 데이터를 포함하는 응용 필드(application field);
를 포함하는,
방법.
According to claim 5,
The deformation field is,
a core field containing data related to at least one of the device's communication channels or ports; and
an application field containing data related to application software;
Including,
method.
제 6 항에 있어서,
상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 상기 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계는,
상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 명령어에 포함된 핵심 필드를 변형시킨 상기 제 1 테스트 패킷을 생성하는 단계;
를 포함하는,
방법.
According to claim 6,
When the first current state of the first port corresponds to the predetermined first state, a first test packet in which the at least one field included in the command corresponding to the predetermined first state is mutated The steps to create are:
If the first current state of the first port corresponds to the predetermined first state, generating the first test packet with a key field included in the command modified;
Including,
method.
삭제delete 제 1 항에 있어서,
상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는 단계는,
상기 제 2 응답 패킷과 사전 저장된 정상 응답 패킷이 서로 상이한 경우, 상기 제 1 포트에 상기 제 1 테스트 패킷에 의한 취약점이 발현된 것으로 결정하는 단계; 및
발현된 상기 취약점에 관한 정보를 생성하는 단계;
를 포함하는,
방법.
According to claim 1,
The step of determining whether a vulnerability exists in the first port based on a second response packet to the first test packet received from the first port includes:
If the second response packet and the pre-stored normal response packet are different from each other, determining that a vulnerability caused by the first test packet is present in the first port; and
generating information about the developed vulnerability;
Including,
method.
제 1 항에 있어서,
상기 제 1 포트를 상기 제 1 상태와 상이한 사전 결정된 제 2 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 2 상태에 대응되는 명령어가 매핑(mapping)된 제 2 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계;
상기 제 1 포트로부터 수신한 상기 제 2 상태 전이 패킷에 대한 제 3 응답 패킷에 기초하여 상기 제 1 포트의 제 2 현재 상태(state)를 결정하는 단계;
상기 제 1 포트의 제 2 현재 상태가 상기 사전 결정된 제 2 상태에 대응되는 경우, 상기 사전 결정된 제 2 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 2 테스트 패킷을 생성하는 단계; 및
상기 제 2 테스트 패킷을 이용하여 상기 제 1 포트의 퍼징 테스트를 수행하는 단계;
를 더 포함하는,
방법.
According to claim 1,
In order to enter the first port into a predetermined second state that is different from the first state, a second state transition packet in which a command corresponding to the predetermined second state is mapped is sent to the first port. Transferring to;
determining a second current state of the first port based on a third response packet to the second state transition packet received from the first port;
When the second current state of the first port corresponds to the predetermined second state, generating a second test packet in which at least one field included in the command corresponding to the predetermined second state is mutated. steps; and
performing a fuzzing test of the first port using the second test packet;
Containing more,
method.
컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은 퍼징(fuzzing)을 수행하기 위한 컴퓨팅 장치의 프로세서로 하여금 이하의 단계들을 수행하기 위한 명령들을 포함하며, 상기 단계들은:
디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하는 단계;
상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하는 단계;
상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하는 단계;
상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하는 단계;
상기 제 1 테스트 패킷을 상기 제 1 포트에 전송하는 단계; 및
상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는 단계;
를 포함하는,
컴퓨터 판독가능 저장 매체에 저장된 컴퓨터 프로그램.
A computer program stored on a computer-readable storage medium, the computer program comprising instructions for causing a processor of a computing device to perform fuzzing, the steps comprising:
selecting a first port among the at least one port based on whether pairing is required for each of the at least one port included in the device;
In order to enter the first port into a predetermined first state, transmitting to the first port a first state transition packet in which a command corresponding to the predetermined first state is mapped;
determining a first current state of the first port based on a first response packet to the first state transition packet received from the first port;
When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. steps;
transmitting the first test packet to the first port; and
determining whether a vulnerability exists in the first port based on a second response packet to the first test packet received from the first port;
Including,
A computer program stored on a computer-readable storage medium.
퍼징(fuzzing)을 수행하기 위한 컴퓨팅 장치에 있어서,
적어도 하나의 코어를 포함하는 프로세서;
상기 프로세서에 의해 실행가능한 컴퓨터 프로그램을 저장하는 메모리; 및
네트워크부;
를 포함하고,
상기 프로세서는,
디바이스에 포함된 적어도 하나의 포트(port) 각각의 페어링(pairing)의 요구 여부에 기초하여 상기 적어도 하나의 포트 중에서 제 1 포트를 선택하고,
상기 제 1 포트를 사전 결정된 제 1 상태(state)로 진입시키기 위해, 상기 사전 결정된 제 1 상태에 대응되는 명령어가 매핑(mapping)된 제 1 상태 전이 패킷을 상기 제 1 포트에 전송하고,
상기 제 1 포트로부터 수신한 상기 제 1 상태 전이 패킷에 대한 제 1 응답 패킷에 기초하여 상기 제 1 포트의 제 1 현재 상태(state)를 결정하고,
상기 제 1 포트의 제 1 현재 상태가 상기 사전 결정된 제 1 상태에 대응되는 경우, 상기 사전 결정된 제 1 상태에 대응되는 명령어에 포함된 적어도 하나의 필드를 변형시킨(mutated) 제 1 테스트 패킷을 생성하고,
상기 제 1 테스트 패킷을 상기 제 1 포트에 전송하고, 그리고
상기 제 1 포트로부터 수신한 상기 제 1 테스트 패킷에 대한 제 2 응답 패킷에 기초하여 상기 제 1 포트의 취약점 발현 여부를 결정하는,
컴퓨팅 장치.
In a computing device for performing fuzzing,
A processor including at least one core;
a memory storing a computer program executable by the processor; and
network department;
Including,
The processor,
Selecting a first port among the at least one port based on whether pairing is required for each of the at least one port included in the device,
In order to enter the first port into a predetermined first state, a first state transition packet in which a command corresponding to the predetermined first state is mapped is transmitted to the first port,
Determine a first current state of the first port based on a first response packet to the first state transition packet received from the first port,
When the first current state of the first port corresponds to the predetermined first state, generating a first test packet in which at least one field included in the command corresponding to the predetermined first state is mutated. do,
transmit the first test packet to the first port, and
Determining whether a vulnerability exists in the first port based on a second response packet to the first test packet received from the first port,
Computing device.
KR1020230000143A 2023-01-02 2023-01-02 Apparatus and method for performing fuzzing KR102635486B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230000143A KR102635486B1 (en) 2023-01-02 2023-01-02 Apparatus and method for performing fuzzing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230000143A KR102635486B1 (en) 2023-01-02 2023-01-02 Apparatus and method for performing fuzzing

Publications (1)

Publication Number Publication Date
KR102635486B1 true KR102635486B1 (en) 2024-02-07

Family

ID=89872981

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230000143A KR102635486B1 (en) 2023-01-02 2023-01-02 Apparatus and method for performing fuzzing

Country Status (1)

Country Link
KR (1) KR102635486B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180086833A (en) * 2017-01-24 2018-08-01 엘지전자 주식회사 Hacking test apparatus for vehicle electric device
KR102190727B1 (en) 2018-12-27 2020-12-14 아주대학교산학협력단 Apparatus and method for detecting vulnerability of software
US20220166699A1 (en) * 2020-11-20 2022-05-26 Institute For Information Industry Fuzz testing apparatus and fuzz testing method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180086833A (en) * 2017-01-24 2018-08-01 엘지전자 주식회사 Hacking test apparatus for vehicle electric device
KR102190727B1 (en) 2018-12-27 2020-12-14 아주대학교산학협력단 Apparatus and method for detecting vulnerability of software
US20220166699A1 (en) * 2020-11-20 2022-05-26 Institute For Information Industry Fuzz testing apparatus and fuzz testing method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
‘How to build a serial port fuzzer with Defensics SDK’, Synopsys, Kari Hulkko, 2020.12.14.* *
Synopsys, Kari Hulkko *

Similar Documents

Publication Publication Date Title
US9479450B2 (en) Resolving communication collisions in a heterogeneous network
US9716644B2 (en) Systems and methods for content type classification
CN107211011A (en) System and method for Malicious Code Detection
US11184363B2 (en) Securing network-based compute resources using tags
CN102289617A (en) Anti-malware device, server, and method of matching malware patterns
US20150117245A1 (en) Sending Node and Buffer Status Reporting Method
KR20090038189A (en) Apparatus and method for managing terminal users
US20190349356A1 (en) Cybersecurity intelligence platform that predicts impending cyber threats and proactively protects heterogeneous devices using highly-scalable bidirectional secure connections in a federated threat intelligence environment
US20220053023A1 (en) Active fingerprinting for transport layer security (tls) servers
EP4173316A1 (en) Gap and gatt adaptation protocol over internet protocol
CN104067558A (en) Network access apparatus having a control module and a network access module
US9654491B2 (en) Network filtering apparatus and filtering method
CN114500039B (en) Instruction issuing method and system based on safety control
KR102635486B1 (en) Apparatus and method for performing fuzzing
CN109522683A (en) Software source tracing method, system, computer equipment and storage medium
CN110572296B (en) Internet of things terminal equipment communication protocol consistency safety detection method
WO2021133254A1 (en) Method and system for robotic process automation
CN107430544A (en) Information processor
CN107846351A (en) A kind of chat messages sensitive information encryption method and device
US11190941B2 (en) Traffic and threat classification for short-range wireless channels
CN111224773A (en) Quantum key management equipment
US7480291B2 (en) Method and system for processing communications packets according to event lists
CN112631623A (en) Chain code deployment method, system, device, equipment and storage medium
KR102648651B1 (en) Method for detecting and responding for attack on can network
KR102476360B1 (en) Requirements analysis and design methodology for system

Legal Events

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