KR20210117408A - 전자 장치 및 그 제어 방법 - Google Patents

전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20210117408A
KR20210117408A KR1020200033528A KR20200033528A KR20210117408A KR 20210117408 A KR20210117408 A KR 20210117408A KR 1020200033528 A KR1020200033528 A KR 1020200033528A KR 20200033528 A KR20200033528 A KR 20200033528A KR 20210117408 A KR20210117408 A KR 20210117408A
Authority
KR
South Korea
Prior art keywords
function
crash
input value
electronic device
basic block
Prior art date
Application number
KR1020200033528A
Other languages
English (en)
Inventor
차상길
김도혁
김수민
김홍식
Original Assignee
삼성전자주식회사
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 한국과학기술원 filed Critical 삼성전자주식회사
Priority to KR1020200033528A priority Critical patent/KR20210117408A/ko
Priority to PCT/KR2021/000912 priority patent/WO2021187744A1/ko
Publication of KR20210117408A publication Critical patent/KR20210117408A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • 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
    • 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

Landscapes

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

Abstract

전자 장치의 제어 방법이 개시된다. 본 개시에 따른 제어 방법은, 타겟 프로그램에 대한 트레이스 데이터(trace data)를 획득하는 단계; 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득하는 단계; 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별하는 단계; 제2 함수를 추상화하여 제3 함수를 획득하는 단계; 및 트레이스 데이터 및 제3 함수를 바탕으로 퍼징(fuzzing)을 수행하는 단계;를 포함한다.

Description

전자 장치 및 그 제어 방법{ELECTRONIC APPARATUS AND METHOD FOR CONTROLLING THEREOF}
본 개시는 전자 장치 및 그 제어 방법으로, 보다 상세하게는, 타겟 프로그램에 대해 퍼징(fuzzing)을 수행하는 전자 장치 및 그 제어 방법에 관한 것이다.
근래에는 스마트 디바이스와 IoT기기 등 인터넷과 연결되는 기기들의 확산으로 인해 소프트웨어의 공격 요소들이 증가하고 있으며, 이에 따라 소프트웨어(또는 기기)의 취약점(vulnerability)을 찾는 기술에 대한 연구가 활발히 진행되고 있는 실정이다. 취약점을 찾는 여러 가지 방법 중 하나로 퍼징(Fuzzing)이라는 방법이 알려져 있으며, 퍼징은 여러 입력 값을 소프트웨어에 입력하여 기기가 해당 값을 취약점 없이 잘 처리하는지 확인하는 방식으로 이루어진다.
한편, 최근에는 퍼징을 보다 효과적으로 수행하기 위한 방법으로 인-메모리 퍼징(in-memory fuzzing)이 이용되고 있다. 인-메모리 퍼징이란 퍼징을 할 때마다 매번 소프트웨어를 처음부터 실행하는 기존 퍼징 방법에 따른 오버 헤드(overhead)를 방지하기 위한 방법으로, 특정 함수가 실행되는 시점의 메모리 상태를 스냅샷으로 저장하고, 새로운 테스트 케이스를 실행할 때 메모리 스냅샷을 복원하여 해당 함수에 대응되는 기본 블록에 입력 값을 입력하여 퍼징을 수행하는 방법을 의미한다.
다만, 이러한 인-메모리 퍼징 방법을 통해 사용자가 퍼징 동작 중 발견된 크래시(crash)를 발생시킨 입력 값을 알아내더라도, 해당 입력 값을 프로그램에 입력하였을 때 크래시가 재연되지 않는 등의 취약점에 대한 오탐 발생률이 높다는 문제점이 있다.
이에 따라, 인-메모리 퍼징 방법의 취약점에 대한 오탐 발생률을 줄이는 기술에 대한 필요성이 대두된다.
본 발명이 해결하고자 하는 일 기술적 과제는, 타겟 프로그램을 구성하는 함수를 추상화하여 새로운 함수를 획득하고, 획득된 새로운 함수를 바탕으로 퍼징을 수행하는 전자 장치 및 그 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상술한 기술적 과제를 해결하기 위한 본 개시의 예시적인 일 실시 예에 따르면, 전자 장치의 제어 방법에 있어서, 타겟 프로그램에 대한 트레이스 데이터(trace data)를 획득하는 단계; 상기 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득하는 단계; 상기 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별하는 단계; 상기 제2 함수를 추상화하여 제3 함수를 획득하는 단계; 및 상기 트레이스 데이터 및 상기 제3 함수를 바탕으로 퍼징(fuzzing)을 수행하는 단계;를 포함하는 제어 방법이 제공될 수 있다.
상술한 기술적 과제를 해결하기 위한 본 개시의 예시적인 다른 일 실시 예에 따르면, 전자 장치에 있어서, 적어도 하나의 인스트럭션을 저장하는 메모리; 및 프로세서;를 포함하고, 상기 프로세서는, 타겟 프로그램에 대한 트레이스 데이터(trace data)를 획득하고, 상기 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득하고, 상기 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별하고, 상기 제2 함수를 추상화하여 제3 함수를 획득하고, 상기 트레이스 데이터 및 상기 제3 함수를 바탕으로 퍼징(fuzzing)을 수행하는 전자 장치가 제공될 수 있다.
본 개시의 과제의 해결 수단이 상술한 해결 수단들로 제한되는 것은 아니며, 언급되지 아니한 해결 수단들은 본 명세서 및 첨부된 도면으로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 타겟 프로그램의 취약점을 효과적으로 찾을 수 있으며, 취약점에 대한 오탐 발생률을 줄일 수 있다. 이에 따라, 사용자 편의성 및 만족도가 향상될 수 있다.
그 외에 본 개시의 실시 예로 인하여 얻을 수 있거나 예측되는 효과에 대해서는 본 개시의 실시 예에 대한 상세한 설명에서 직접적 또는 암시적으로 개시하도록 한다. 예컨대, 본 개시의 실시 예에 따라 예측되는 다양한 효과에 대해서는 후술될 상세한 설명 내에서 개시될 것이다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 흐름도이다.
도 2는 본 개시의 일 실시 예에 따른 타겟 프로그램의 구성도이다.
도 3은 본 개시의 일 실시 예에 따른 전자 장치의 함수 추상화 동작을 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시 예에 따른 퍼징 동작을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 도시한 블록도이다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 도시한 순서도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다. 
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 개시의 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치의 동작을 설명하기 위한 흐름도이다.
도 1을 참조하면, 전자 장치(100)는 타겟 프로그램(10), 트레이스 데이터 획득 모듈(110), 브로커 모듈(120), 함수 획득 모듈(130), 함수 선택 모듈(140), 함수 변환 모듈(150) 및 퍼징 모듈(160)을 포함할 수 있다. 예로, 전자 장치(100)는 개인용 컴퓨터(PC)일 수 있으나, 이에 한정되는 것은 아니다. 또한, 각 모듈은 소프트웨어로 구현될 수도 있으나, 소프트웨어 및 하드웨어의 결합으로 구현되거나 하드웨어로 구현될 수도 있다.
전자 장치(100)는 트레이스 데이터 획득 모듈(110)을 이용하여 타겟 프로그램(10)에 대한 트레이스 데이터(trace data)를 획득할 수 있다. 트레이스 데이터 획득 모듈(110)은 타겟 프로그램(10)을 실행시켜 트레이스 데이터를 추출할 수 있다. 여기서, 트레이스 데이터(trace data)란, 타겟 프로그램(10)의 실행과 관련된 전자 장치(100)의 상태 정보를 의미하며, 타겟 프로그램(10) 실행 과정에서 전자 장치(100)의 메모리 또는 레지스터의 상태 정보를 포함할 수 있다. 또한, 트레이스 데이터는 타겟 프로그램(10)에 포함된 다수의 제약 조건(constraint) 중 실행된 제약 조건 및 기본 블록(basic block)에 대한 정보, 다수의 스냅샷 데이터(snapshot data)를 포함할 수 있다. 기본 블록(basic block)은 엔트리 외에는 들어오는 분기가 없고 출구 외에는 나가는 분기가 없는 직선 코드열로서, 적어도 하나의 명령어 또는 코드를 포함한다. 또한, 제약 조건(constraint)은 기본 블록으로 입력되는 입력 값을 제한하는 조건으로, 제약 조건을 만족하는 입력 값만이 기본 블록으로 입력될 수 있다.
브로커 모듈(120)은 트레이스 데이터를 획득하여 함수 획득 모듈(130)로 전달할 수 있다. 또한, 브로커 모듈(120)은 퍼징 모듈(160)을 통해 획득되는 타겟 프로그램에 대한 프로그램 입력 값을 획득하여 타겟 프로그램(10)으로 전달할 수 있다.
전자 장치(100)는 브로커 모듈(120)을 통해 전달되는 트레이스 데이터를 함수 획득 모듈(130)에 입력하여 적어도 하나의 제1 함수를 획득할 수 있다. 함수 획득 모듈(130)은 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득할 수 있다. 여기서, 제1 함수(formula)란, 기본 블록으로 입력되는 조건을 제한하는 함수를 의미하며, 함수 획득 모듈(130)은 트레이스 데이터에 포함된 제약 조건을 바탕으로 제1 함수를 생성할 수 있다. 구체적으로, 함수 획득 모듈(130)은 심볼릭 실행(Symbolic Execution)을 수행하여 제약 조건을 바탕으로 제1 함수를 획득할 수 있다.
전자 장치(100)는 함수 획득 모듈(130)을 통해 획득되는 적어도 하나의 제1 함수를 함수 선택 모듈(140)에 입력하여 제2 함수를 획득할 수 있다. 함수 선택 모듈(140)은 적어도 하나의 제1 함수 중 하나의 함수를 선택할 수 있다. 구체적으로, 함수 선택 모듈(140)은 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별할 수 있다. 이 때, 함수 선택 모듈(140)은 랜덤(random)하게 제2 함수를 식별할 수 있다. 또는, 함수 선택 모듈(140)은 사용자 명령에 기초하여 제2 함수를 식별할 수 있다.
전자 장치(100)는 함수 선택 모듈(140)을 통해 획득되는 제2 함수를 함수 변환 모듈(150)에 입력하여 제3 함수를 획득할 수 있다. 함수 변환 모듈(150)은 제2 함수를 추상화(abstraction)하여 제3 함수를 획득할 수 있다. 여기서, 추상화는 특정 함수를 간략화시키는 것을 의미한다. 구체적으로, 함수 변환 모듈(150)은 제2 함수의 해를 획득하고, 획득된 제2 함수의 해를 바탕으로 제3 함수를 생성할 수 있다. 이 때, 함수 변환 모듈(150)은 SMT 솔버(Satisfiability Modulo Theories solver)를 이용하여 제2 함수의 해를 획득할 수 있다. 여기서, SMT 솔버는 논리식을 참으로 만드는 해를 획득하는 소프트웨어를 의미한다.
퍼징 모듈(160)은 제3 함수를 바탕으로 퍼징을 수행할 수 있다. 구체적으로, 퍼징 모듈(160)은 제3 함수를 만족하는 제1 입력 값을 획득할 수 있다. 퍼징 모듈(160)은 제1 입력 값을 퍼징이 시작되는 제1 기본 블록에 입력하여 크래시를 검출할 수 있다. 크래시가 검출되면, 퍼징 모듈(160)은 크래시가 발생한 제2 기본 블록에 대한 정보(예로, 제2 기본 블록의 위치 정보)를 메모리에 저장할 수 있다. 여기서, 크래시(crash)란 타겟 프로그램(10)의 비정상적인 종료를 의미한다. 한편, 퍼징 동작에 대한 보다 상세한 설명은 도 4를 참조하여 후술하도록 한다.
퍼징 모듈(160)은 크래시를 유발한 제1 입력 값과 크래시가 발생한 제2 기본 블록에 대한 정보를 바탕으로 크래시 검출을 검증할 수 있다. 구체적으로, 퍼징 모듈(160)은 제1 입력 값과 제3 함수를 바탕으로 타겟 프로그램(10)에 대한 프로그램 입력 값을 획득할 수 있다. 퍼징 모듈(160)은 프로그램 입력 값을 타겟 프로그램(10)에 입력하여 제2 기본 블록에서 크래시가 재차 발생하는지 여부를 식별할 수 있다. 이 때, 제2 기본 블록에서 크래시가 발생하면, 퍼징 모듈(160)은 제1 입력 값을 제1 기본 블록에 입력하여 발생된 크래시에 대한 검출이 진검출인 것으로 판단할 수 있다. 반면에, 크래시가 발생하지 않거나, 제2 기본 블록이 아닌 다른 기본 블록에서 발생되면 퍼징 모듈(160)은 제1 입력 값을 제1 기본 블록에 입력하여 발생된 크래시에 대한 검출이 오검출인 것으로 판단할 수 있다.
한편, 이상에서는 프로그램(10) 및 트레이스 데이터 획득 모듈(110)이 전자 장치(100)에 포함되는 것으로 설명하였으나 이는 일 실시 예에 불과하며, 프로그램(10) 및 트레이스 데이터 획득 모듈(110)은 외부 기기에 포함될 수 있다. 예로, 프로그램(10) 및 트레이스 데이터 획득 모듈(110)은 전자 장치(100)와 통신 가능한 모바일 장치 또는 IOT 장치에 포함될 수 있다. 이 때, 전자 장치(100)는 브로커 모듈(120)을 통해 트레이스 데이터를 획득할 수 있다.
이상에서는 전자 장치(100)에 포함되는 각 모듈의 동작에 대하여 설명하였다. 이하에서는 도 2를 참조하여 전자 장치(100)의 보다 구체적인 동작에 대하여 설명하도록 한다.
도 2는 본 개시의 일 실시 예에 따른 타겟 프로그램의 구성도이다. 구체적으로, 도 2는 함수 획득 모듈(130)을 이용하여 제1 함수를 획득하는 방법을 설명하기 위한 도면이다. 한편, 트레이스 데이터에 포함되는 기본 블록 및 브랜치는 실선으로 도시되었으며, 트레이스 데이터에 포함되지 않는 기본 블록 및 브랜치는 점선으로 도시되었다.
도 2를 참조하면, 타겟 프로그램(10)은 다수의 기본 블록(B) 및 다수의 기본 블록들을 연결하는 다수의 브랜치(branch)(BL)를 포함한다. 타겟 프로그램(10)은 제1 브랜치(BL1)에 대응되는 제1 제약 조건(C1), 제2 브랜치(BL2)에 대응되는 제2 제약 조건(C2), 제3 브랜치(BL3)에 대응되는 제3 제약 조건(C3) 및 제4 브랜치(BL4)에 대응되는 제4 제약 조건(C4)을 포함할 수 있다.
이 때, 전자 장치(100)는 각 브랜치에 대응되는 제약 조건을 바탕으로 각 브랜치 별 제1 함수를 획득할 수 있다. 구체적으로, 전자 장치(100)는 제1 함수에 대응되는 브랜치 및 그 상위 브랜치에 각각 대응되는 제약 조건들을 누적하여 제1 함수를 획득할 수 있다. 전자 장치(100)는 각 브랜치 뿐만 아니라 상위 브랜치에 대응되는 제약 조건들을 모두 포함하는 제1 함수를 생성할 수 있다. 예를 들어, 전자 장치(100)는 제2 브랜치(BL2)에 대응되는 제1-2 함수(F1-2)를 획득할 때, 제2 브랜치(BL2)의 상위 브랜치인 제1 브랜치(BL1)에 대응되는 제1 제약 조건(C1) 및 제2 브랜치(BL2)에 대응되는 제2 제약 조건(C2)을 누적하여 제1-2 함수(F1-2)를 획득할 수 있다. 이 때, 제1-2 함수(F1-2)는 제1 제약 조건(C1) 및 제2 제약 조건(C2)을 모두 포함할 수 있다. 마찬가지로, 전자 장치(100)는 제1 내지 제3 제약 조건(C1, C2, C3)을 누적하여 제1-3 함수(F1-3)를 획득할 수 있으며, 제1 내지 제4 제약 조건(C1, C2, C3, C4)을 누적하여 제1-4 함수(F1-4)를 획득할 수 있다.
전자 장치(100)는 이와 같이 획득된 여러 제1 함수 중 퍼징(즉, 인 메모리 퍼징)이 시작되는 제1 기본 블록(B1)에 대응되는 제1-4 함수(F1-4)를 제2 함수(F2)로 획득할 수 있다.
도 3은 본 개시의 일 실시 예에 따른 전자 장치의 함수 추상화 동작을 설명하기 위한 도면이다. 도 3을 참조하면, 전자 장치(100)는 SMT 솔버 및 함수 생성 유닛(formula abstractor)을 포함할 수 있다.
전자 장치(100)는 제2 함수(F2)를 SMT 솔버에 입력하여 제2 함수(F2)의 해(30)를 획득할 수 있다. 그리고, 전자 장치(100)는 획득된 해(30)를 함수 생성 유닛에 입력하여 제3 함수(F3)를 획득할 수 있다. 함수 생성 유닛은 제2 함수(F2)를 추상화하여 제2 함수(F2)보다 간략화된 제3 함수(F3)를 생성할 수 있다. 전자 장치(100)는 추상화된 제3 함수(F3)를 만족하는 입력 값을 제1 기본 블록(B1)에 입력하여 인-메모리 퍼징을 수행할 수 있다. 이와 같이, 제2 함수(F2)가 아닌 제3 함수(F3)를 바탕으로 퍼징을 수행함으로써 퍼징에 소모되는 시간을 줄어들 수 있다.
도 4는 본 개시의 일 실시 예에 따른 퍼징 동작을 설명하기 위한 도면이다.
전자 장치(100)는 제3 함수(F3)를 만족하는 제1 입력 값(x1)을 획득할 수 있다. 전자 장치(100)는 획득된 제1 입력 값(x1)을 제1 기본 블록(B1)에 입력하여 퍼징을 수행할 수 있다. 즉, 전자 장치(100)는 인 메모리 퍼징을 수행할 수 있다. 구체적으로, 전자 장치(100)는 트레이스 데이터에 포함된 스냅샷 데이터를 이용하여 인 메모리 퍼징을 수행할 수 있다. 전자 장치(100)는 트레이스 데이터에 포함된 다수의 스냅샷 데이터 중 인 메모리 퍼징이 시작되는 제1 기본 블록(B1)에 연결되는 제1 브랜치(BL1)에 대응되는 제1 함수(F1)의 실행 시점에 대한 정보를 획득할 수 있다. 전자 장치(100)는 제1 함수(F1)의 실행 시점에 대한 정보를 바탕으로 제1 함수(F1)의 실행 시점에 대응되는 스냅샷 데이터를 식별할 수 있다. 전자 장치(100)는 식별된 스냅샷 데이터를 메모리에 로딩하고, 제3 함수(F3)를 만족하는 적어도 하나의 제1 입력 값(x1)을 반복적으로 제1 기본 블록(B1)에 입력하여 크래시 발생 여부를 식별할 수 있다. 이와 같이, 전자 장치(100)는 타겟 프로그램(10)을 처음부터 실행시켜 퍼징을 수행하는 것이 아니라, 제1 기본 블록(B1)을 시작점으로 퍼징을 수행함으로써 오버 헤드를 방지할 수 있다. 또한, 전자 장치(100)는 크래시가 발생한 제2 기본 블록(B2)에 대한 정보를 메모리에 저장함으로써 후술하는 바와 같이 크래시 검출에 대한 검증 동작을 수행할 수 있다.
한편, 제1 입력 값(x1)으로 인해 타겟 프로그램(10)에서 크래시가 발생하더라도, 제1 입력 값(x1)은 실제 타겟 프로그램(10)에 대한 입력 값은 아니므로, 타겟 프로그램(10)에 대한 실제 입력 값을 바탕으로 검출된 크래시가 진검출인지 판단하는 크래시 검출에 대한 검증이 필요하다. 인 메모리 퍼징을 이용한 종래의 기술들은 제1 입력 값(x1)을 찾더라도, 제1 입력 값(x1)에 대응되는 타겟 프로그램(10)에 대한 실제 입력 값을 찾을 수 없었다. 이에 따라, 종래의 기술들은 크래시 오탐률이 높다는 문제점이 있었다.
한편, 전자 장치(100)는 크래시 검출에 대한 검증 동작을 수행함으로써 크래시 오탐률을 낮출 수 있다. 구체적으로, 전자 장치(100)는 크래시를 유발한 제1 입력 값(x1)을 퍼징 모듈(160)에 입력하여 타겟 프로그램(10)에 대한 입력 값인 제2 입력 값(IN1)을 획득할 수 있다. 그리고, 전자 장치(100)는 획득된 제2 입력 값(IN1)을 타겟 프로그램(10)에 입력하여 제2 기본 블록(B2)에서 크래시가 발생하는지 식별할 수 있다. 제2 기본 블록(B2)에서 크래시가 발생되면, 전자 장치(100)는 인 메모리 퍼징을 통한 크래시 검출이 진검출이라 판단할 수 있다. 반면에, 제2 기본 블록(B2)에서 크래시가 발생되지 않으면, 전자 장치(100)는 인 메모리 퍼징을 통한 크래시 검출이 오검출이라 판단할 수 있다.
이상에서는 전자 장치의 퍼징 동작에 대하여 설명하였다. 이하에서는, 전자 장치의 구성에 대하여 설명하도록 한다.
도 5는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 도시한 블록도이다. 도 5를 참조하면, 전자 장치(500)는 통신 인터페이스(510), 메모리(520) 및 프로세서(530)를 포함할 수 있다. 전자 장치(500)는 도 1 내지 도 4에서 설명한 전자 장치(100)에 대응되며, 이하에서는 전자 장치(500)의 각 구성에 대하여 설명한다.
통신 인터페이스(510)는 적어도 하나의 회로를 포함하며 다양한 유형의 외부 기기와 통신을 수행할 수 있다. 전자 장치(500)는 통신 인터페이스(510)를 통해 외부 장치와 유선 또는 무선 방식을 통해 통신을 수행할 수 있다. 이 때, 외부 장치는 전자 장치(500)와는 별개의 장치인 서버가 될 수 있다. 특히, 타겟 프로그램(10)에 대한 트레이스 데이터가 외부 장치에서 생성된 경우, 전자 장치(500)는 통신 인터페이스(510)를 통해 외부 장치로부터 트레이스 데이터를 수신할 수 있다.
메모리(520)는 전자 장치(500)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 전자 장치(500)의 구성요소와 관련된 명령 또는 데이터를 저장할 수 있다. 이를 위해 메모리(520)는 비휘발성 메모리(ex: 하드 디스크, SSD(Solid state drive), 플래시 메모리), 휘발성 메모리 등으로 구현될 수 있다. 본 개시에 따른 일 실시 예에 있어서, 메모리(520)는 트레이스 데이터 및 크래시가 발생된 기본 블록에 대한 정보를 저장할 수 있다.
프로세서(530)는 전자 장치(500)의 전반적인 동작을 제어할 수 있다.
프로세서(530)는 트레이스 데이터를 획득할 수 있다. 프로세서(530)는 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득할 수 있다. 이 때, 프로세서(530)는 트레이스 데이터에 포함된 적어도 하나의 제약 조건을 식별하고, 식별된 제약 조건을 바탕으로 제1 함수를 획득할 수 있다.
프로세서(530)는 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별할 수 있다. 제2 함수는 제1 기본 블록과 연결되는 상위 브랜치에 대응될 수 있다.
프로세서(530)는 제2 함수를 추상화하여 제3 함수를 획득할 수 있다. 이 때, 프로세서(530)는 제2 함수의 해를 획득하고, 획득된 제2 함수의 해를 바탕으로 제3 함수를 생성할 수 있다.
프로세서(530)는 트레이스 데이터 및 제3 함수를 바탕으로 퍼징을 수행할 수 있다. 프로세서(530)는 트레이스 데이터에 포함된 적어도 하나의 스냅샷 데이터 중 제2 함수의 실행 시점에 대응되는 스냅샷 데이터를 식별하여 메모리(520)로 로딩할 수 있다. 그리고, 프로세서(530)는 메모리 값을 변경함으로써 제1 기본 블록에 제3 함수를 만족하는 입력 값을 입력하여 크래시를 검출할 수 있다.
프로세서(530)는 크래시가 검출되면, 제1 입력 값 및 크래시에 대한 위치 정보를 바탕으로 크래시 검출을 검증할 수 있다. 프로세서(530)는 크래시가 검출된 제2 기본 블록에 대한 위치 정보를 획득할 수 있다. 프로세서(530)는 제1 입력 값 및 제3 함수를 바탕으로 타겟 프로그램에 대한 제2 입력 값을 획득할 수 있다. 프로세서(530)는 제2 입력 값을 타겟 프로그램에 입력하여 제2 기본 블록에서 크래시가 검출되면, 크래시 검출을 진검출로 판단할 수 있다. 반면에, 제2 기본 블록에서 크래시가 검출되지 않으면, 프로세서(530)는 크래시 검출을 오검출로 판단할 수 있다.
도 6은 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 도시한 순서도이다.
도 6을 참조하면, 전자 장치(100)는 타겟 프로그램에 대한 트레이스 데이터를 획득할 수 있다(S610). 그리고, 전자 장치(100)는 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득할 수 있다(S620). 구체적으로, 전자 장치(100)는 트레이스 데이터에 포함된 타겟 프로그램에 대한 제약 조건들을 바탕으로 제1 함수를 생성할 수 있다. 그리고, 전자 장치(100)는 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별할 수 있다(S630). 이 때, 전자 장치(100)는 무작위로 제1 기본 블록을 선택하고, 제1 기본 블록의 상위 브랜치에 대응되는 제2 함수를 식별할 수 있다. 또한, 전자 장치(100)는 식별된 제2 함수를 추상화하여 제3 함수를 획득할 수 있다(S640). 구체적으로, 전자 장치(100)는 SMT 솔버를 이용하여 제2 함수의 해를 획득하고, 획득된 해를 바탕으로 제3 함수를 생성할 수 있다. 그리고, 전자 장치(100)는 트레이스 데이터 및 제3 함수를 바탕으로 퍼징을 수행할 수 있다(S650). 이 때, 전자 장치(100)는 트레이스 데이터에 포함된 제2 함수에 대응되는 메모리 스냅샷을 획득하여 로딩할 수 있다. 그리고, 전자 장치(100)는 제3 함수를 만족하는 입력 값을 획득하고, 획득된 입력 값을 바탕으로 메모리를 변경함으로써 인 메모리 퍼징을 수행할 수 있다.
한편, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 작동을 수행할 수 있다.
한편, 상술한 본 개시의 다양한 실시 예들에 따른 처리 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium) 에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 처리 동작을 특정 기기가 수행하도록 할 수 있다.
비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
한편, 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
10: 타겟 프로그램      110: 트레이스 데이터 획득 모듈
120: 브로커 모듈 130: 함수 획득 모듈
140: 함수 선택 모듈 150: 함수 변환 모듈
160: 퍼징 모듈 510: 통신 인터페이스
520: 메모리 530: 프로세서

Claims (15)

  1. 전자 장치의 제어 방법에 있어서,
    타겟 프로그램에 대한 트레이스 데이터(trace data)를 획득하는 단계;
    상기 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득하는 단계;
    상기 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별하는 단계;
    상기 제2 함수를 추상화하여 제3 함수를 획득하는 단계; 및
    상기 트레이스 데이터 및 상기 제3 함수를 바탕으로 퍼징(fuzzing)을 수행하는 단계;를 포함하는
    제어 방법.
  2. 제1 항에 있어서,
    상기 트레이스 데이터는 상기 타겟 프로그램에 대한 적어도 하나의 스냅샷 데이터(snapshot data)를 포함하고,
    상기 퍼징을 수행하는 단계는,
    상기 적어도 하나의 스냅샷 데이터 중 상기 제2 함수의 실행 시점에 대응되는 스냅샷 데이터를 식별하고, 상기 식별된 스냅샷 데이터를 로딩하는 단계;
    상기 제3 함수를 바탕으로 상기 제1 기본 블록에 대한 제1 입력 값을 획득하고, 상기 제1 입력 값을 상기 제1 기본 블록에 입력하여 크래시(crash)를 검출하는 단계를 포함하는
    제어 방법.
  3. 제2 항에 있어서,
    상기 크래시가 검출되면, 상기 제1 입력 값 및 상기 크래시에 대한 위치 정보를 바탕으로 상기 크래시 검출을 검증하는 단계;를 더 포함하고,
    상기 검증하는 단계는,
    상기 크래시가 검출된 제2 기본 블록에 대한 위치 정보를 획득하는 단계,
    상기 제1 입력 값 및 상기 제3 함수를 바탕으로 상기 타겟 프로그램에 대한 제2 입력 값을 획득하는 단계, 및
    상기 제2 기본 블록에 대한 위치 정보 및 상기 제2 입력 값을 바탕으로 상기 크래시 검출을 검증하는 단계를 포함하는
    제어 방법.
  4. 제3 항에 있어서,
    상기 크래시 검출을 검증하는 단계는,
    상기 제2 입력 값을 상기 타겟 프로그램에 입력하여 상기 제2 기본 블록에서 크래시가 검출되면, 상기 크래시 검출을 진검출로 판단하는
    제어 방법.
  5. 제3 항에 있어서,
    상기 크래시 검출을 검증하는 단계는,
    상기 제2 입력 값을 상기 타겟 프로그램에 입력하여 상기 제2 기본 블록에서 크래시가 미검출되면, 상기 크래시 검출을 오검출로 판단하는
    제어 방법.
  6. 제1 항에 있어서,
    상기 제3 함수를 획득하는 단계는,
    상기 제2 함수의 해를 획득하고,
    상기 획득된 제2 함수의 해를 바탕으로 제3 함수를 생성하는
    제어 방법.
  7. 제1 항에 있어서,
    상기 제1 함수를 획득하는 단계는,
    상기 트레이스 데이터에 포함된 적어도 하나의 제약 조건을 식별하는 단계, 및
    상기 식별된 제약 조건을 바탕으로 상기 제1 함수를 획득하는 단계를 포함하는
    제어 방법.
  8. 전자 장치에 있어서,
    적어도 하나의 인스트럭션을 저장하는 메모리; 및
    프로세서;를 포함하고,
    상기 프로세서는,
    타겟 프로그램에 대한 트레이스 데이터(trace data)를 획득하고,
    상기 트레이스 데이터를 바탕으로 적어도 하나의 제1 함수를 획득하고,
    상기 적어도 하나의 제1 함수 중 퍼징이 시작되는 제1 기본 블록에 대응되는 제2 함수를 식별하고,
    상기 제2 함수를 추상화하여 제3 함수를 획득하고,
    상기 트레이스 데이터 및 상기 제3 함수를 바탕으로 퍼징(fuzzing)을 수행하는
    전자 장치.
  9. 제8 항에 있어서,
    상기 트레이스 데이터는 상기 타겟 프로그램에 대한 적어도 하나의 스냅샷 데이터(snapshot data)를 포함하고,
    상기 프로세서는,
    상기 적어도 하나의 스냅샷 데이터 중 상기 제2 함수의 실행 시점에 대응되는 스냅샷 데이터를 식별하고, 상기 식별된 스냅샷 데이터를 로딩하고,
    상기 제3 함수를 바탕으로 상기 제1 기본 블록에 대한 제1 입력 값을 획득하고, 상기 제1 입력 값을 상기 제1 기본 블록에 입력하여 크래시(crash)를 검출하는
    전자 장치.
  10. 제9 항에 있어서,
    상기 프로세서는,
    상기 크래시가 검출되면,
    상기 제1 입력 값 및 상기 크래시에 대한 위치 정보를 바탕으로 상기 크래시 검출을 검증하되,
    상기 크래시가 검출된 제2 기본 블록에 대한 위치 정보를 획득하고,
    상기 제1 입력 값 및 상기 제3 함수를 바탕으로 상기 타겟 프로그램에 대한 제2 입력 값을 획득하고,
    상기 제2 기본 블록에 대한 위치 정보 및 상기 제2 입력 값을 바탕으로 상기 크래시 검출을 검증하는
    전자 장치.
  11. 제10 항에 있어서,
    상기 프로세서는,
    상기 제2 입력 값을 상기 타겟 프로그램에 입력하여 상기 제2 기본 블록에서 크래시가 검출되면, 상기 크래시 검출을 진검출로 판단하는
    전자 장치.
  12. 제10 항에 있어서,
    상기 프로세서는,
    상기 제2 입력 값을 상기 타겟 프로그램에 입력하여 상기 제2 기본 블록에서 크래시가 미검출되면, 상기 크래시 검출을 오검출로 판단하는
    전자 장치.
  13. 제8 항에 있어서,
    상기 프로세서는,
    상기 제2 함수의 해를 획득하고
    상기 획득된 제2 함수의 해를 바탕으로 제3 함수를 생성하는
    전자 장치.
  14. 제8 항에 있어서,
    상기 프로세서는,
    상기 트레이스 데이터에 포함된 적어도 하나의 제약 조건을 식별하고,
    상기 식별된 제약 조건을 바탕으로 상기 제1 함수를 획득하는
    전자 장치.
  15. 제8 항에 있어서,
    상기 제2 함수는,
    상기 제1 기본 블록과 연결되는 상위 브랜치에 대응되는
    전자 장치.
KR1020200033528A 2020-03-19 2020-03-19 전자 장치 및 그 제어 방법 KR20210117408A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200033528A KR20210117408A (ko) 2020-03-19 2020-03-19 전자 장치 및 그 제어 방법
PCT/KR2021/000912 WO2021187744A1 (ko) 2020-03-19 2021-01-22 전자 장치 및 그 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200033528A KR20210117408A (ko) 2020-03-19 2020-03-19 전자 장치 및 그 제어 방법

Publications (1)

Publication Number Publication Date
KR20210117408A true KR20210117408A (ko) 2021-09-29

Family

ID=77771336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200033528A KR20210117408A (ko) 2020-03-19 2020-03-19 전자 장치 및 그 제어 방법

Country Status (2)

Country Link
KR (1) KR20210117408A (ko)
WO (1) WO2021187744A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862940B2 (en) * 2012-02-14 2014-10-14 Microsoft Corporation Integrated fuzzing
KR20180076550A (ko) * 2016-12-28 2018-07-06 충남대학교산학협력단 다중 함수 정적 분석 장치 및 방법
KR102075345B1 (ko) * 2017-11-06 2020-02-10 한국전자통신연구원 퍼징 수행 시스템, 퍼징용 실행 흐름 정보 추출 장치 및 방법
KR101981028B1 (ko) * 2018-09-28 2019-05-23 한국인터넷진흥원 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램

Also Published As

Publication number Publication date
WO2021187744A1 (ko) 2021-09-23

Similar Documents

Publication Publication Date Title
JP6494744B2 (ja) リターン指向プログラミング攻撃の透過的な検出及び抽出
US10019581B2 (en) Identifying stored security vulnerabilities in computer software applications
JP4732484B2 (ja) 仮想環境を利用した非実行ファイル内のエクスプロイトコード分析方法及び装置
US20160300044A1 (en) Anti-debugging method
US10585668B2 (en) Processor testing using randomly generated branch instructions
CN104850427B (zh) 一种代码升级方法及装置
CN108509791B (zh) 检测处理器的方法、检测装置以及检测系统
US10366226B2 (en) Malicious code analysis device and method based on external device connected via USB cable
US20180096147A1 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US20110307633A1 (en) Preventing access to a device from an external interface
US20190385081A1 (en) Anomaly detection model selection and validity for time series data
US9021596B2 (en) Correcting workflow security vulnerabilities via static analysis and virtual patching
CN110851352A (zh) 一种模糊测试系统及终端设备
TWI656453B (zh) 檢測系統及檢測方法
CN106709335B (zh) 漏洞检测方法和装置
KR20210117408A (ko) 전자 장치 및 그 제어 방법
KR102470010B1 (ko) 리버싱 엔진과 cdr 엔진을 활용한 악성 비실행 파일 차단 방법 및 장치
KR101621170B1 (ko) 온라인 게임에서의 메모리 감시를 이용한 해킹 방지 방법
CN114237705A (zh) 验证方法、装置、电子设备和计算机可读存储介质
CN110765493B (zh) 一种基于Linux预链接的文件基线防御方法、装置及存储设备
US20160077942A1 (en) Storage system and test method for testing pci express interface
CN114880666A (zh) 一种恶意行为检测方法及装置
CN111310172B (zh) 通过反汇编验证处理器执行轨迹的方法及控制部件
KR102556413B1 (ko) 세마포어를 이용한 가상화 머신 관리 방법 및 이를 위한 장치
CN112579341A (zh) 识别移动终端射频校准数据是否正常的方法和装置