KR102289574B1 - 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치 - Google Patents

거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치 Download PDF

Info

Publication number
KR102289574B1
KR102289574B1 KR1020200057581A KR20200057581A KR102289574B1 KR 102289574 B1 KR102289574 B1 KR 102289574B1 KR 1020200057581 A KR1020200057581 A KR 1020200057581A KR 20200057581 A KR20200057581 A KR 20200057581A KR 102289574 B1 KR102289574 B1 KR 102289574B1
Authority
KR
South Korea
Prior art keywords
program
seed
box
fitness function
gray
Prior art date
Application number
KR1020200057581A
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 KR1020200057581A priority Critical patent/KR102289574B1/ko
Application granted granted Critical
Publication of KR102289574B1 publication Critical patent/KR102289574B1/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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • 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
    • 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/3696Methods or tools to render software testable

Landscapes

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

Abstract

거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치가 개시된다. 일 실시예에 따른 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치에 의해 수행되는 그레이 박스 퍼징 방법은, 시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택하는 스케줄 단계; 상기 선택된 시드를 사용하여 상기 프로그램을 테스트하는 테스트 단계; 및 상기 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 상기 시드 모음을 갱신하는 시드 관리 단계를 포함할 수 있다.

Description

거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치{METHOD AND APPARATUS FOR GREY-BOX FUZZING WITH DISTANCE-BASED FITNESS FUNCTION}
아래의 설명은 프로그램에서 오류를 찾아내는 기술에 관한 것으로, 소프트웨어 테스팅 기법과 관련된 것이다.
퍼즈테스팅(Fuzz Testing) 혹은 퍼징(Fuzzing)은 소프트웨어 테스트 케이스를 무작위로 생성하는 기술로 사용하기 쉽고 많은 프로그램에서 취약점을 찾아 그 효과가 검증된 기술로 많은 곳에서 사용하고 있다. 퍼징은 프로그램의 실행과 관련한 정보를 얼마나 많이 사용하는가에 따라 크게 세 가지로 분류할 수 있는데, 아무런 정보 없이 무작위로 테스트하는 퍼징을 블랙 박스 퍼징(Black-box Fuzzing), 프로그램에 대한 모든 정보를 이용하여 테스트하는 퍼징을 화이트 박스 퍼징(White-box Fuzzing), 그리고 프로그램의 실행 정보를 일부만 사용하는 퍼징을 그레이 박스 퍼징(Grey-box Fuzzing)이라고 한다. 퍼저(Fuzzer)가 프로그램을 테스트하기 위한 시작점으로 사용하는 테스트 케이스를 시드(seed)라고 하고, 퍼저는 효율적인 테스팅을 위하여 좋은 시드를 모아 관리한다. 그레이 박스 퍼징에서는 피트니스 함수(Fitness Function)를 이용하여 각각의 시드가 얼마나 좋은지를 평가한다.
현존하는 많은 그레이 박스 퍼저의 경우 프로그램이 해당 시드를 입력으로 받아 실행이 되었을 때 얼마나 많은 프로그램의 부분이 실행되었는지를 측정하는 코드 커버리지(Code Coverage)를 피트니스 함수로 사용한다. 예를 들면 어떠한 분기문이 실행되었는지를 기준으로 측정하는 브랜치 커버리지(Branch Coverage)가 있다. 하지만 코드 커버리지는 간추려진 프로그램의 정보이기 때문에 정보의 손실이 존재하게 된다. 예를 들면, 특정 분기의 조합이 이루어져야 프로그램의 버그가 발생하지만 해당하는 분기가 서로 다른 여러 시드를 통해 이미 방문된 경우, 퍼저는 버그를 찾기 쉬운 시드를 놓치게 된다.
정보의 손실을 해결하기 위하여 피트니스 함수는 다음과 같은 조건을 만족하여야 한다. 먼저, 피트니스 함수가 각각의 프로그램의 실행에 대하여 매긴 가치의 범위가 충분히 세분화될 수 있어야 한다. 이와 동시에 피트니스 함수의 계산이 충분히 빨라야 한다. 퍼징에서 피트니스 함수의 계산은 프로그램을 실행할 때마다 이루어지기 때문에 피트니스 함수의 성능이 퍼저의 효율성에 직결된다. 마지막으로, 피트니스 함수는 적절한 수의 테스트 케이스를 시드로 받아들일 수 있어야 한다. 너무 많은 테스트 케이스를 시드로 받아들이면 퍼저가 시드를 관리하기 힘들어지기 때문에 퍼저의 실용성이 떨어질 것이다.
본 발명은 상술한 모든 문제점을 해결하기 위한 것으로, 기존의 그레이 박스 퍼저가 사용하는 피트니스 함수의 단점에 대하여 해결책을 제공하는 것을 기술적 과제로 한다. 이에, 코드 커버리지를 기반으로 하는 피트니스 함수가 정보의 손실로 인해 중요한 시드를 놓칠 수 있다는 어려움을 해결한다.
또한, 거리 기반의 피트니스 함수를 사용함으로 인해 발생하는 계산 비용을 감소시키기 위해 동적 주성분 분석 기술을 제안한다.
또한, 거리 기반의 피트니스 함수를 사용할 때 새로운 시드를 받아들이는 기준 값을 동적으로 정하는 적응 시드 모음 관리 기술을 제안한다.
그레이 박스(Grey-box) 퍼징(Fuzzing) 장치에 의해 수행되는 그레이 박스 퍼징 방법은, 시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택하는 스케줄 단계; 상기 선택된 시드를 사용하여 상기 프로그램을 테스트하는 테스트 단계; 및 상기 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 상기 시드 모음을 갱신하는 시드 관리 단계를 포함할 수 있다.
상기 테스트 단계는, 상기 시드를 무작위로 변형하여 새로운 테스트 케이스를 생성하고, 상기 생성된 새로운 테스트 케이스를 상기 프로그램의 입력으로 제공하여 프로그램을 실행시키고, 상기 프로그램으로부터 프로그램 실행 추적을 생성하기 위해 프로그램 계측을 수행하는 단계를 포함할 수 있다.
상기 테스트 단계는, 상기 프로그램을 실행시키는 과정에서 프로그램의 버그를 발견할 경우, 상기 발견된 프로그램의 버그의 위치 정보에 해당하는 테스트 케이스를 출력으로 제공하는 단계를 포함할 수 있다.
상기 시드 관리 단계는, 상기 프로그램 테스트를 실행함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 거리 정보 기반의 피트니스 함수를 계산하고, 계산된 거리 정보 기반의 피트니스 함수 값이 기 설정된 기준 값 이상일 경우, 시드 모음에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트를 추가하여 시드 모음을 갱신하는 단계를 포함할 수 있다.
상기 시드 관리 단계는, 상기 시드 모음에 존재하는 테스트 케이스들 중에서 특정 테스트 케이스와 거리가 가장 짧은 테스트 케이스와의 거리 정보를 피트니스 함수 값으로 사용하는 단계를 포함할 수 있다.
상기 시드 관리 단계는, 상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행하고, 상기 수행된 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 분기 방문 횟수 벡터의 차원을 변환시키는 단계를 포함할 수 있다.
상기 시드 관리 단계는, 상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행한 후, 상기 거리 정보 기반의 피트니스 함수를 계산한 함수 값이 기 설정된 기준 값보다 큰 경우에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트 케이스를 추가하여 갱신된 시드 모음을 기반으로 새로운 기준 값을 계산하는 단계를 포함할 수 있다.
그레이 박스(Grey-box) 퍼징(Fuzzing) 장치는, 시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택하는 스케줄부; 상기 선택된 시드를 사용하여 상기 프로그램을 테스트하는 테스트부; 및 상기 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 상기 시드 모음을 갱신하는 시드 관리부를 포함할 수 있다.
상기 테스트부는, 상기 시드를 무작위로 변형하여 새로운 테스트 케이스를 생성하고, 상기 생성된 새로운 테스트 케이스를 상기 프로그램의 입력으로 제공하여 프로그램을 실행시키고, 상기 프로그램으로부터 프로그램 실행 추적을 생성하기 위해 프로그램 계측을 수행할 수 있다.
상기 테스트부는, 상기 프로그램을 실행시키는 과정에서 프로그램의 버그를 발견할 경우, 상기 발견된 프로그램의 버그의 위치 정보에 해당하는 테스트 케이스를 출력으로 제공할 수 있다.
상기 시드 관리부는, 상기 프로그램 테스트를 실행함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 거리 정보 기반의 피트니스 함수를 계산하고, 계산된 거리 정보 기반의 피트니스 함수 값이 기 설정된 기준 값 이상일 경우, 시드 모음에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트를 추가하여 시드 모음을 갱신할 수 있다.
상기 시드 관리부는, 상기 시드 모음에 존재하는 테스트 케이스들 중에서 특정 테스트 케이스와 거리가 가장 짧은 테스트 케이스와의 거리 정보를 피트니스 함수 값으로 사용할 수 있다.
상기 시드 관리부는, 상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행하고, 상기 수행된 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 분기 방문 횟수 벡터의 차원을 변환시킬 수 있다.
상기 시드 관리부는, 상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행한 후, 상기 거리 정보 기반의 피트니스 함수를 계산한 함수 값이 기 설정된 기준 값보다 큰 경우에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트 케이스를 추가하여 갱신된 시드 모음을 기반으로 새로운 기준 값을 계산할 수 있다.
프로그램을 보다 효율적으로 테스팅함에 따라 프로그램의 오류 및 취약점을 발견하여 프로그램의 보안성을 향상시킬 수 있다.
또한, 기존의 그레이 박스 퍼징의 한계로 인한 테스팅 효율을 증가시켜 소프트웨어 테스팅 및 취약점 탐지 결과를 향상시킬 수 있다.
도 1은 일 실시예에 따른 그레이 박스 퍼징 장치의 구성을 설명하기 위한 블록도이다.
도 2는 일 실시예에 따른 그레이 박스 퍼징 장치에서 그레이 박스 퍼징 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 그레이 박스 퍼징 장치에서 거리 정보 기반 피트니스 함수의 효율을 높이기 위한 동적 주성분 부석을 수행하는 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 그레이 박스 퍼징 장치에서 프로그램에 따라 기준값을 계산하는 적응 시드 모음 관리 방법을 설명하기 위한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
기존의 그레이 박스 퍼징 방식은 코드 커버리지를 피트니스 함수로 사용함으로써 발생하는 정보의 손실로 인한 테스팅 효율이 감소한다는 한계가 있다. 실시예에서는 거리 정보 기반의 피트니스 함수를 제안함으로써 기존 방식의 한계를 극복하고자 한다. 또한, 실시예에서는 거리 기반의 피트니스 함수를 사용함으로 인해 발생하는 계산 비용을 감소시키기 위해 동적 주성분 분석 기술을 설명하기로 한다. 또한, 거리 기반의 피트니스 함수를 사용할 때 새로운 시드를 받아들이는 기준 값을 동적으로 정하는 적응 시드 모음 관리 기술을 설명하기로 한다.
도 1은 일 실시예에 따른 그레이 박스 퍼징 장치의 구성을 설명하기 위한 블록도이고, 도 2는 일 실시예에 따른 그레이 박스 퍼징 장치에서 그레이 박스 퍼징 방법을 설명하기 위한 흐름도이다.
그레이 박스 퍼징 장치(100)는 스케줄부(110), 테스트부(120) 및 시드 관리부(130)를 포함할 수 있다. 이러한 그레이 박스 퍼징 장치(100)의 구성요소들은 그레이 박스 퍼징 장치에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서에 의해 수행되는 서로 다른 기능들(different functions)의 표현들일 수 있다. 그레이 박스 퍼징 장치(100) 및 그레이 박스 퍼징 장치(100)의 구성요소들은 도 2의 그레이 박스 퍼징 방법이 포함하는 단계들(210 내지 230)을 수행하도록 그레이 박스 퍼징 장치를 제어할 수 있다. 이때, 그레이 박스 퍼징 장치(100) 및 그레이 박스 퍼징 장치(100)의 구성요소들은 메모리가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다.
프로세서는 그레이 박스 퍼징 방법을 위한 프로그램의 파일에 저장된 프로그램 코드를 메모리에 로딩할 수 있다. 예를 들면, 그레이 박스 퍼징 장치에서 프로그램이 실행되면, 프로세서는 운영체제의 제어에 따라 프로그램의 파일로부터 프로그램 코드를 메모리에 로딩하도록 그레이 박스 퍼징 장치를 제어할 수 있다. 이때, 그레이 박스 퍼징 장치(100) 및 그레이 박스 퍼징 장치(100)가 포함하는 스케줄부(110), 테스트부(120) 및 시드 관리부(130) 각각은 메모리에 로딩된 프로그램 코드 중 대응하는 부분의 명령을 실행하여 이후 단계들(210 내지 230)을 실행하기 위한 그레이 박스 퍼징 장치(100)의 서로 다른 기능적 표현들일 수 있다.
그레이 박스 퍼징 장치(110)에서 프로그램 및 초기 시드를 입력으로, 시드 스케줄 단계(210), 프로그램 테스트 단계(220), 시드 관리 단계(230)를 반복적으로 수행함으로써 (대상) 프로그램으로부터 버그(222)를 발생시키는 테스트 케이스를 반환할 수 있다.
단계(210)에서 스케줄부(110)는 시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택할 수 있다. 프로그램(221)이란 테스트를 하고자 하는 대상 프로그램을 의미할 수 있다. 시드란, 프로그램을 테스트하기 위해 사용되는 테스트 케이스를 의미할 수 있다. 예를 들면, 명령 줄 라인 프로그램의 경우, 해당 프로그램을 실행시킬 때 제공되는 인자가 시드가 될 수 있고, 또는, 프로그램이 작동하면서 불러오는 시드가 될 수도 있다. 시드 모음(240)이란 퍼저가 프로그램을 효과적으로 테스트하기 위한 목적으로 시드를 선별하여 모아둔 시드의 집합이다.
단계(220)에서 테스트부(120)는 선택된 시드를 사용하여 프로그램을 테스트할 수 있다. 테스트부(120)는 시드를 무작위로 변형하여 새로운 테스트 케이스를 생성하고, 생성된 새로운 테스트 케이스를 프로그램의 입력으로 제공하여 프로그램을 실행시키고, 프로그램으로부터 프로그램 실행 추적을 생성하기 위해 프로그램 계측을 수행할 수 있다. 테스트부(120)는 프로그램을 실행시키는 과정에서 프로그램(221)의 버그(222)를 발견할 경우, 발견된 프로그램의 버그의 위치 정보에 해당하는 테스트 케이스를 출력으로 제공할 수 있다. 이러한 테스트부(120)에서 테스트에 사용하는 시드 변형 방법, 프로그램 실행 방법, 프로그램 계측 수행 방법은 모두 통산의 그레이 박스 퍼저가 사용하는 방법을 따를 수 있다.
단계(230)에서 시드 관리부(130)는 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 시드 모음을 갱신할 수 있다. 이때, 프로그램 실행 추적은 프로그램에 시드를 입력으로 주어 실행시키는 과정에서 획득된 프로그램의 실행 흐름에 대한 정보를 의미한다. 실시예에서 사용하는 프로그램 실행 추적의 예로는, 프로그램의 각 분기(branch)에 대하여 해당 분기가 몇 회 실행되었는지를 나타내는 분기 방문 횟수를 프로그램 실행 추적으로 사용할 수 있다. 분기 방문 횟수는 통상적으로 벡터의 형태를 따르는데, 프로그램에 존재하는 분기에 순서를 매기고 벡터의 n(n은 자연수)번째 성분이 n번째 분기가 몇 번 실행되었는가를 나타낸다.
시드 관리부(130)는 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 거리 정보 기반의 피트니스 함수를 계산할 수 있다. 시드 관리부(130)는 계산된 거리 정보 기반의 피트니스 함수 값이 기 설정된 기준 값 이상일 경우, 시드 모음(240)에 프로그램을 테스트함에 따라 생성된 새로운 테스트 케이스를 추가하여 시드 모음을 갱신할 수 있다. 시드 관리부(130)는 시드 모음에 존재하는 테스트 케이스들 중에서 특정 테스트 케이스와 거리가 가장 짧은 테스트 케이스와의 거리 정보를 피트니스 함수 값으로 사용할 수 있다. 시드 관리부(130)는 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행하고, 상기 수행된 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 분기 방문 횟수 벡터의 차원을 변환시킬 수 있다. 시드 관리부(130)는 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행한 후, 거리 정보 기반의 피트니스 함수를 계산한 함수 값이 기 설정된 기준 값보다 큰 경우에 프로그램을 테스트함에 따라 생성된 새로운 테스트를 추가하여 갱신된 시드 모음을 기반으로 새로운 기준 값을 계산할 수 있다.
구체적으로, 실시예에서 사용되는 피트니스 함수는 프로그램 테스트 케이스 사이의 거리를 기반으로 하는 거리 정보 기반의 피트니스 함수를 사용할 수 있다. 보다 상세하게는, 어떤 테스트 케이스의 피트니스 함수 값은 시드 모음에 존재하는 테스트 케이스들 중에서 해당하는 테스트 케이스와의 거리가 가장 짧은 테스트 케이스에 대해 그 거리를 피트니스 함수 값으로 사용할 수 있다. 이를 식으로 나타내면 다음과 같다.
식 1:
Figure 112020048674915-pat00001
이때,
Figure 112020048674915-pat00002
는 피트니스 함수, t는 테스트 케이스,
Figure 112020048674915-pat00003
는 시드 모음을 나타낸다. 또한,
Figure 112020048674915-pat00004
는 테스트 케이스를 입력으로 받아 프로그램을 실행함에 따라 분기 방문 횟수를 출력하는 함수,
Figure 112020048674915-pat00005
는 서로 다른 두 분기 방문 횟수에 대하여 거리를 계산하는 함수이다. 벡터의 형태를 지닌 분기 방문 횟수에 대하여 거리 계산이 수행될 수 있다. 예를 들면, 거리 계산 방법으로 유클리디안 거리를 사용할 수 있다. 하지만, 일반적인 프로그램이 갖는 분기의 개수가 많아 유클리디안 거리를 사용하면 계산적으로 비효율적이라는 단점이 있다. 실시예에서는 분기 방문 횟수 벡터의 차원을 낮춤으로써 유클리디안 거리를 효율적으로 계산할 수 있다. 도 3에서 동적 주성분 분석을 제안하고, 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 고차원의 분기 방문 횟수 벡터를 저차원으로 변환하는 방법을 상세하게 설명하기로 한다.
도 3은 일 실시예에 따른 그레이 박스 퍼징 장치에서 거리 정보 기반 피트니스 함수의 효율을 높이기 위한 동적 주성분 부석을 수행하는 방법을 설명하기 위한 흐름도이다.
그레이 박스 퍼징 장치는 기저 행렬과 공분산 행렬, 입력 벡터, 그리고 데이터 개수를 입력으로 받을 수 있다. 그레이 박스 퍼징 장치는 기저 행렬, 공분상 행렬, 입력 및 데이터 개수를 입력으로 받아 벡터 기저 확장 단계(310), 공분산 행렬 갱신 단계(320), 주기적 주성분 분석 단계(330)를 수행함으로써 새로 계산된 기저 행렬과 공분산 행렬을 출력으로 반환할 수 있다. 실시예에서 입력 벡터란 새로 발견한 데이터로, 입력 벡터에 따라 기저 행렬의 갱신 유무가 결정되고, 입력 벡터가 기저 행렬 갱신에 영향을 미칠 수 있다. 데이터 개수는 지금까지 관측된 입력 벡터의 개수를 의미한다.
구체적으로, 그레이 박스 퍼징 장치는 입력 벡터와, 입력 벡터를 변환한 기저 행렬을 이용하여 사영시킨 벡터 사이의 거리가 일정 기준을 초과할 경우, 기저 행렬을 갱신할 수 있다(310). 예를 들면, 입력 벡터는 벡터 형태의 분기 방문 횟수일 수 있다. 이때, 기저 행렬은 벡터 공간의 한 기저를 다른 기저로 변환시키는 행렬을 의미할 수 있다. 실시예에서 기저 행렬은 고차원의 기저를 저차원의 기저로 변환시키는데 사용될 수 있다. 일례로, 그레이 박스 퍼징 장치는 입력 벡터인 분기 방문 횟수가 기저 행렬을 이용하여 사영될 때 분기 방문 횟수 상태가 정보 손실을 겪는지 여부를 확인할 수 있다. 만약, 분기 방문 횟수가 정보 손실을 겪는 것으로 판단할 경우, 분기 방문 횟수를 기저 행렬에 추가 축으로 추가할 수 있다.
그레이 박스 퍼징 장치는 입력 벡터의 통계적 특성을 반영한 새로운 공분산 행렬을 계산할 수 있다(320). 공분산 행렬이란 지금까지 수집된 데이터의 분포를 설명하는 행렬이다. 동적 주성분 분석에서는 효율적인 계산을 위해 공분상 행렬을 사용할 수 있다. 다시 말해서, 그레이 박스 퍼징 장치는 분기 방문 횟수와 관련하여 현재 공분산 행렬을 업데이트할 수 있다.
그레이 박스 퍼징 장치는 일정 시간 간격으로 새롭게 주성분 분석을 수행할 수 있다(330). 이때, 예를 들면, 사용자의 설정에 의하여 시간 간격이 조정될 수 있다. 주성분 분석이란, 정보 손실을 최소화하면서 데이터 집합의 차원을 줄이는 방법 중 하나이다. 그레이 박스 퍼징 장치는 시드 모음이 변경될 때마다 주성분 분석을 계산해야 하기 때문에 계산 비용이 높아진다는 문제점을 극복하기 위하여 동적 주성분 분석을 수행할 수 있다. 일례로, 프로그램을 실행할 때마다 분기 방문 횟수가 생성되며, 각 분기에 대해 두 개의 적중 횟수가 포함될 수 있다. 실시예에서는 주성분 분석을 공간 표현의 입력으로 받아 업데이트된 공간 표현을 반환하는 함수로 사용할 수 있다. 그레이 박스 퍼징 장치는 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 고차원의 분기 방문 횟수 벡터를 저차원으로 변환할 수 있다.
도 4는 일 실시예에 따른 그레이 박스 퍼징 장치에서 프로그램에 따라 기준값을 계산하는 적응 시드 모음 관리 방법을 설명하기 위한 흐름도이다.
그레이 박스 퍼징 장치는 거리 정보 기반의 피트니스 함수를 사용하여 테스트 케이스를 평가하였을 때, 테스트 케이스가 기존에 발견된 시드 모음에 존재하는 여러 다른 테스트 케이스와 일정 기준 이상으로 떨어져 있다면, 퍼저는 해당하는 테스트 케이스가 유의미한 테스트 케이스라고 취급하여 시드 모음에 추가할 수 있다. 하지만, 언급된 기준 값은 그 값에 따라 퍼저의 효율이 달라질 수 있기 때문에 민감하며, 프로그램에 따라 적절한 기준 값이 다르기 때문에 고정된 기준 값을 사용할 수 없다. 실시예에서는 적응 시드 모음 관리(Adaptive seed pool update) 방법을 제안하여 퍼저 효율의 문제를 해결할 수 있다.
그레이 박스 퍼징 장치는 시드 모음, 기저 행렬, 공분산 행렬, 입력 벡터(분기 방문 횟수 벡터), 데이터 개수를 입력받을 수 있다. 그레이 박스 퍼징 장치는 시드 모음, 기저 행렬, 공분산 행렬, 분기 방문 횟수 벡터, 데이터 개수를 입력으로 받아 동적 주성분 분석 계산 단계(410), 시드 모음 추가 단계(420), 기준 값 갱신 단계(430)를 수행하여 새롭게 갱신된 시드 모음을 출력으로 제공할 수 있다.
단계(410)에서 그레이 박스 퍼징 장치는 동적 주성분 분석을 수행할 수 있다. 도 3에서 설명한 바와 같이, 동적 주성분 분석이 수행될 수 있다.
단계(420)에서 그레이 박스 퍼징 장치는 거리 정보 기반 피트니스 함수를 계산한 함수 값이 기 설정된 기준(기준 값)보다 큰 경우에 해당하는 시드를 시드 모음에 추가할 수 있다. 만약 시드 모음에 일정 개수 이하의 시드가 존재하게 되면 단순히 시드 모음에 새로운 시드를 추가하고, 시드 모음에 충분한 개수(예를 들면, 일정 개수 이상, 기 설정된 개수 범위, 1000개 등)의 시드가 존재하게 되면 시드 모음에서 다른 시드와 거리가 가장 가까운 시드를 제거하고, 새로운 시드를 추가할 수 있다. 이때, 사전에 시드 모음에 시드의 추가 여부를 판단하기 위한 시드의 개수와 관련된 기준 값(일정 개수)가 설정되어 있을 수 있다.
단계(430)에서 그레이 박스 퍼징 장치는 갱신된 시드 모음을 기반으로 기준 값을 새로 계산할 수 있다. 새로운 기준 값은 시드 모음에 존재하는 모든 시드에 대하여, 시드 모음에서 자기 자신을 제외한 시드 모음과 자기 자신의 시드를 이용하여 피트니스 함수를 적용한 값들 중 최소값으로 결정될 수 있다. 이를 식으로 나타내면 다음과 같다.
식 2:
Figure 112020048674915-pat00006
이때, i는 시드 모음에 포함된 시드,
Figure 112020048674915-pat00007
는 피트니스 함수,
Figure 112020048674915-pat00008
는 시드 모음을 나타낸다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치에 의해 수행되는 그레이 박스 퍼징 방법에 있어서,
    시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택하는 스케줄 단계;
    상기 선택된 시드를 사용하여 상기 프로그램을 테스트하는 테스트 단계; 및
    상기 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 상기 시드 모음을 갱신하는 시드 관리 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  2. 제1항에 있어서,
    상기 테스트 단계는,
    상기 시드를 무작위로 변형하여 새로운 테스트 케이스를 생성하고, 상기 생성된 새로운 테스트 케이스를 상기 프로그램의 입력으로 제공하여 프로그램을 실행시키고, 상기 프로그램으로부터 프로그램 실행 추적을 생성하기 위해 프로그램 계측을 수행하는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  3. 제2항에 있어서,
    상기 프로그램을 테스트하는 테스트 단계는,
    상기 프로그램을 실행시키는 과정에서 프로그램의 버그를 발견할 경우, 상기 발견된 프로그램의 버그의 위치 정보에 해당하는 테스트 케이스를 출력으로 제공하는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  4. 제1항에 있어서,
    상기 시드 관리 단계는,
    상기 프로그램 테스트를 실행함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 거리 정보 기반의 피트니스 함수를 계산하고, 계산된 거리 정보 기반의 피트니스 함수 값이 기 설정된 기준 값 이상일 경우, 시드 모음에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트를 추가하여 시드 모음을 갱신하는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  5. 제4항에 있어서,
    상기 시드 관리 단계는,
    상기 시드 모음에 존재하는 테스트 케이스들 중에서 특정 테스트 케이스와 거리가 가장 짧은 테스트 케이스와의 거리 정보를 피트니스 함수 값으로 사용하는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  6. 제5항에 있어서,
    상기 시드 관리 단계는,
    상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행하고, 상기 수행된 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 분기 방문 횟수 벡터의 차원을 변환시키는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  7. 제4항에 있어서,
    상기 시드 관리 단계는,
    상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행한 후, 상기 거리 정보 기반의 피트니스 함수를 계산한 함수 값이 기 설정된 기준 값보다 큰 경우에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트 케이스를 추가하여 갱신된 시드 모음을 기반으로 새로운 기준 값을 계산하는 단계
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 방법.
  8. 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치에 있어서,
    시드 모음으로부터 퍼저(Fuzzer)가 프로그램 테스트를 실행할 시드를 선택하는 스케줄부;
    상기 선택된 시드를 사용하여 상기 프로그램을 테스트하는 테스트부; 및
    상기 프로그램을 테스트함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 계산된 거리 정보 기반의 피트니스 함수를 기 설정된 기준에 따라 상기 시드 모음을 갱신하는 시드 관리부
    를 포함하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  9. 제8항에 있어서,
    상기 테스트부는,
    상기 시드를 무작위로 변형하여 새로운 테스트 케이스를 생성하고, 상기 생성된 새로운 테스트 케이스를 상기 프로그램의 입력으로 제공하여 프로그램을 실행시키고, 상기 프로그램으로부터 프로그램 실행 추적을 생성하기 위해 프로그램 계측을 수행하는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  10. 제9항에 있어서,
    상기 테스트부는,
    상기 프로그램을 실행시키는 과정에서 프로그램의 버그를 발견할 경우, 상기 발견된 프로그램의 버그의 위치 정보에 해당하는 테스트 케이스를 출력으로 제공하는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  11. 제8항에 있어서,
    상기 시드 관리부는,
    상기 프로그램 테스트를 실행함에 따라 획득된 프로그램 실행 추적에 대한 정보를 이용하여 거리 정보 기반의 피트니스 함수를 계산하고, 계산된 거리 정보 기반의 피트니스 함수 값이 기 설정된 기준 값 이상일 경우, 시드 모음에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트를 추가하여 시드 모음을 갱신하는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  12. 제11항에 있어서,
    상기 시드 관리부는,
    상기 시드 모음에 존재하는 테스트 케이스들 중에서 특정 테스트 케이스와 거리가 가장 짧은 테스트 케이스와의 거리 정보를 피트니스 함수 값으로 사용하는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  13. 제12항에 있어서,
    상기 시드 관리부는,
    상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행하고, 상기 수행된 동적 주성분 분석의 결과로 획득된 차원 변환 행렬을 사용하여 분기 방문 횟수 벡터의 차원을 변환시키는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
  14. 제11항에 있어서,
    상기 시드 관리부는,
    상기 거리 정보 기반의 피트니스 함수의 계산을 위한 동적 주성분 분석을 수행한 후, 상기 거리 정보 기반의 피트니스 함수를 계산한 함수 값이 기 설정된 기준 값보다 큰 경우에 상기 프로그램을 테스트함에 따라 생성된 새로운 테스트 케이스를 추가하여 갱신된 시드 모음을 기반으로 새로운 기준 값을 계산하는
    것을 특징으로 하는 그레이 박스(Grey-box) 퍼징(Fuzzing) 장치.
KR1020200057581A 2020-05-14 2020-05-14 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치 KR102289574B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200057581A KR102289574B1 (ko) 2020-05-14 2020-05-14 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200057581A KR102289574B1 (ko) 2020-05-14 2020-05-14 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102289574B1 true KR102289574B1 (ko) 2021-08-13

Family

ID=77313826

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200057581A KR102289574B1 (ko) 2020-05-14 2020-05-14 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102289574B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069672A (zh) * 2023-03-23 2023-05-05 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100501412B1 (ko) * 2002-12-10 2005-07-18 한국전자통신연구원 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법
KR101981028B1 (ko) * 2018-09-28 2019-05-23 한국인터넷진흥원 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100501412B1 (ko) * 2002-12-10 2005-07-18 한국전자통신연구원 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법
KR101981028B1 (ko) * 2018-09-28 2019-05-23 한국인터넷진흥원 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문(2011.12.31) *
비특허문헌(2020.04.27) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069672A (zh) * 2023-03-23 2023-05-05 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法
CN116069672B (zh) * 2023-03-23 2023-07-04 中南大学 操作系统内核定向模糊测试的种子变异方法及测试方法

Similar Documents

Publication Publication Date Title
Wang et al. {SyzVegas}: Beating kernel fuzzing odds with reinforcement learning
US9569179B1 (en) Modifying models based on profiling information
JP5298444B2 (ja) プロセッサ設計を特徴付けるための方法、装置、論理プログラム及びシステム
US6961930B1 (en) Efficient, transparent and flexible latency sampling
KR20170081386A (ko) 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
US12093398B2 (en) Vulnerability analysis and reporting for embedded systems
US8578355B1 (en) Scenario based optimization
US8584095B2 (en) Test support system, method and computer program product, which optimize test scenarios to minimize total test time
US9430240B1 (en) Pre-computation slice merging for prefetching in a computer processor
US11023366B2 (en) Diminution of test templates in test suites
US20190196572A1 (en) Control Of The Energy Consumption Of A Server Cluster
US9542294B2 (en) Method to apply perturbation for resource bottleneck detection and capacity planning
KR20200114233A (ko) 사용자 이용 패턴을 신경망 알고리즘으로 분석하여 다음 어플리케이션을 예측하는 모바일 디바이스 메모리 관리 장치 및 방법
KR102289574B1 (ko) 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치
US10552280B2 (en) In-band monitor in system management mode context for improved cloud platform availability
US9442818B1 (en) System and method for dynamic data collection
Ibrahim et al. Characterizing the relation between Apex-Map synthetic probes and reuse distance distributions
CN110737509B (zh) 热迁移处理方法及装置、存储介质和电子设备
US20180314774A1 (en) System Performance Measurement of Stochastic Workloads
KR101700406B1 (ko) 재구성 가능 어레이의 실행 모드를 동적으로 결정하기 위한 장치 및 방법
Noorshams et al. Modeling of i/o performance interference in virtualized environments with queueing petri nets
Nikolić et al. Refined grey-box fuzzing with Sivo
CN111045730A (zh) 一种用于risc-v架构的硬件快速中断处理系统及其方法
US11188378B2 (en) Management of control parameters in electronic systems
JP2024515983A (ja) 量子クラウド計算のインキューを最適化するシステム及び方法

Legal Events

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