DOI QR코드

DOI QR Code

A Study of Machine Learning-Based Scheduling Strategy for Fuzzing

기계학습 기반 스케줄링 전략을 적용한 최신 퍼징 연구

  • Received : 2024.07.16
  • Accepted : 2024.09.24
  • Published : 2024.10.31

Abstract

Fuzzing is an automated testing technique that generates a lot of testcases and monitors for exceptions to test a program. Recently, fuzzing research using machine learning has been actively proposed to solve various problems in the fuzzing process, but a comprehensive evaluation of fuzzing research using machine learning is lacking. In this paper, we analyze recent research that applies machine learning to scheduling techniques for fuzzing, categorizing them into reinforcement learning-based and supervised learning-based fuzzers. We evaluated the coverage performance of the analyzed machine learning-based fuzzers against real-world programs with four different file formats and bug detection performance against the LAVA-M dataset. The results showed that AFL-HIER, which applied seed clustering and seed scheduling with reinforcement learning outperformed in coverage and bug detection. In the case of supervised learning, it showed high coverage on tcpdumps with high code complexity, and its superior bug detection performance when applied to hybrid fuzzing. This research shows that performance of machine learning-based fuzzer is better when both machine learning and additional fuzzing techniques are used to optimize the fuzzing process. Future research is needed on practical and robust machine learning-based fuzzing techniques that can be effectively applied to programs that handle various input formats.

퍼징은 프로그램을 테스트하기 위해 많은 테스트케이스를 생성하고 예외 상황을 모니터링하는 자동화된 테스팅 기술이다. 최근 퍼징 과정에서 발생하는 다양한 문제를 해결하기 위해 기계학습을 적용한 퍼징 연구가 활발히 제안되고 있지만, 기계학습을 적용한 퍼징 연구에 대한 종합적인 평가는 부족하다. 본 논문에서는 퍼징의 스케줄링 기법에 기계학습을 적용한 최신 연구들을 강화학습 기반과 지도학습 기반 퍼저로 분류하여 분석하였다. 분석된 기계학습 기반 퍼저들을 서로 다른 네 가지의 파일 포맷을 사용하는 리얼월드 프로그램에 적용하여 커버리지 확보 성능을, LAVA-M 데이터셋을 사용하여 버그 탐지 성능을 확인하였다. 실험 결과, 시드 클러스터링 기법과 강화학습을 통한 시드 스케줄링 기법을 적용한 AFL-HIER가 커버리지 확보와 버그 탐지 성능에서 우수한 성과를 보였다. 지도학습의 경우, 코드 복잡도가 높은 tcpdump를 대상으로 높은 커버리지 확보를 보였으며, 하이브리드 퍼징에 적용하였을 때 버그 탐지 성능이 뛰어났다. 본 연구는 기계학습과 퍼징 과정을 최적화하는 추가적인 기법을 함께 적용하였을 때 커버리지 확보와 버그 탐지 성능이 우수하다는 점을 보여주었다. 향후 다양한 입력 포맷을 다루는 프로그램에 효과적으로 적용할 수 있는 실용적이고 강력한 기계학습 기반 퍼징 기법에 대한 연구가 필요하다.

Keywords

I. 서론

퍼징은 타겟 프로그램을 테스트하기 위해 반복적으로 많은 테스트케이스를 생성하고 프로그램의 예외상황을 모니터링하는 자동화된 소프트웨어 동적 분석 기술이다. 퍼징에서 입력의 드문 결함 공간, 엄격한 입력 공간, 그리고 다수의 타겟이라는 챌린지를 해결하기 위해 시드 변형 알고리즘, 시드 스케줄링 알고리즘 등 다양한 퍼징 최적화 전략이 제안되었다[1].

Saavedra, Gary J. 등은 기계학습이 퍼징 과정에 적용되는 사례를 살펴보았다. 특히, 입력 생성 과정에 유전 알고리즘을 결합하거나, 지도 학습과 강화학습이 사용되거나, 심볼릭 실행에 기계학습이 적용되고 있음을 보였다. 또한, 입력 감소와 코퍼스 감소를 위해 기계학습을 적용한 연구가 없는 점을 발견하였다[2]. WANG, Yan. 등은 최근 퍼징에서 시드 변형, 코드 커버리지 증가, 그리고 포맷 검증 우회문제를 극복하기 위해 기계학습을 적용하는 연구가 활발히 진행되고 있음을 보였다. 또한, 기계학습이 퍼징에서 시드 파일 생성, 테스트케이스 생성, 테스트케이스 필터링, 시드 변형 연산자 선택, 그리고 익스플로잇 가능성 분석 측면에서 적용될 수 있음을 분석하였다[3]. 그러나, 기존의 기계학습을 적용한 퍼저에 대한 연구는 기계학습을 적용한 최신 퍼징 연구의 타당성을 평가하는 연구가 부족하다. 이에 따라 본 논문에서는 2023년까지 발표된 탑컨퍼런스 연구 중 기계학습이 적용된 퍼저를 대상으로 하며, 특히 스케줄링 과정에서 기계학습을 적용하여 퍼징 과정을 최적화한 퍼저를 분석 및 실험하였다.

본 논문에서는 퍼징의 스케줄링 과정에서 기계학습이 적용된 최신 퍼징 연구를 살펴본다. 또한, 실험을 통해 퍼징 스케줄링 기법에 기계학습이 적용된 퍼저를 리얼월드 프로그램과 LAVA-M 데이터셋 대상으로 각각 코드 커버리지 확보 측면과 버그 탐지 측면에서 성능을 비교한다. 실험 결과, 지도학습 기반 퍼저보다 강화학습 기반 퍼저, 특히 AFL-HIER[4]가 지역 커버리지 확보와 버그 탐지 성능이 가장 좋음을 확인하였다. 지도학습은 하이브리드 퍼징에 적용한 경우 버그 탐지 성능이 좋음을 확인하였다. 우리의 연구는 퍼징의 스케줄링 전략에 기계학습이 적용된 연구를 평가한 최초의 연구이며, 이를 통해 앞으로의 기계학습을 적용한 퍼저 연구에 방향성을 제시할 수 있을 것으로 기대한다.

II. 퍼징과 스케줄링 기법

2.1 스케줄링 기법

그레이박스 퍼징에서 시드 변형을 통해 생성된 입력은 적합도(fitness) 함수에 의해 평가된 후, 일정 기준을 충족하면 시드 풀에 추가된다. 이후, 시드 스케줄링 알고리즘에 의해 시드 풀에 있는 일부 입력이 선택되어 다음 실행에 사용할 입력으로 사용된다. 본 논문에서 다룬 AFL-HIER, ALPHUZZ[5], MEUZZ[6]는 시드 스케줄링 과정에 기계학습을 적용하였으며, NEUZZ[7]는 바이트 스케줄링 과정에 기계학습을 적용하였다.

2.2 기계학습을 적용한 스케줄링 기법의 효과

몬테 카를로 기반 확률적 경로 샘플링 정보를 활용한 콘콜릭 실행기인 DigFuzz[8]는비교 대상인 Driller[9]보다 더 많은 취약점을 발견하고, 약 15% 더 높은 코드 커버리지를 확보하였다. 또한, MAB(Multi-Armed Bandit) 알고리즘을 적용하여 적응형 스케줄링과 확률 기반 검색 전략을 활용한 Ecofuzz[10]는 AFL에 비해 테스트 케이스 생성을 32% 줄이면서도 코드 커버리지는 214% 더 탐색할 수 있었고, 12개의 신규 취약점을 찾았다. 이러한 최근 퍼저 연구들은 퍼저 개발에서 스케줄링 알고리즘에 기계학습을 적용함으로써 퍼저의 성능을 크게 향상할 수 있음을 보여주었으며, 스케줄링을대상으로 한 기계학습의 필요성을 보여주었다.

III. 스케줄링 전략에 기계학습을 적용한 최신 퍼저

Table 1.은 본 장에서 설명하는 스케줄링 전략에 기계학습 방식을 적용한 퍼저의 요약이다. 본 연구에서는 2023년까지 정보보호 분야의 탑티어 컨퍼런스에 발표된 연구 중 스케줄링 기법에 기계학습이 적용된 퍼저를 선정하여 분석하였다. 분석 결과, 스케줄링 기법에 기계학습이 적용된 퍼저들은 강화학습 기반 퍼저와 지도학습 기반 퍼저로 분류할 수 있었다. 다음 절에서는 스케줄링 전략에 강화학습과 지도학습이 각각 적용된 퍼저들을 분류하여 기계학습 기반 최신 퍼저들의 특징과 성능을 설명한다.

Table 1. Fuzzers using machine learning applied scheduling

JBBHCB_2024_v34n5_973_3_t0001.png 이미지

3.1 강화학습 기반 퍼저

3.1.1 AFL-HIER

AFL-HIER는 퍼저의 스케줄링 능력의 한계로 인하여 민감한 커버리지 지표에서 시드 폭발 문제가 발생할 수 있다는 점에 주목하였다. 이를 해결하기 위해 AFL-HIER는 계층적 스케줄러를 도입하였으며, 시드의 민감한 커버리지 지표에서 유사성과 다양성을 고려한 시드 클러스터링 기법을 제안하였다.

AFL-HIER는 시드 클러스터링 단계에서 시드풀을 다단계 커버리지 메트릭 트리로 구성하고, 아를 기반으로 시드 스케줄링을 진행한다. 퍼저는 강화학습 알고리즘인 MAB(Multi Armed Bandit) 문제로 모델화되며, 스케줄링 알고리즘을 통해 높은 점수를 가진 자식 노드를 선택한다. 각 퍼징 단계가 종료된 후에는 스케줄된 경로의 노드에 보상이 주어진다. 이때 시드의 점수는 커버리지와 시드의 희소성을 고려한 점수로 산정된다.

AFL-HIER는 DARPA Cyber Grand Challenge(CGC)에서 AFL과 AFLFast에 비해 20% 더 많은 버그를 탐지하였으며, 180개 챌린지 중 83개 챌린지에서 더 높은 커버리지를 확보하였다. 이를 통해 버그 탐지와 커버리지 확보 측면에서 강화학습 기반 퍼저의 효용성을 입증하였다.

3.1.2 ALPHUZZ

ALPHUZZ는 기존 AFL, AFLFast, FairFuzz, EcoFuzz에서 제안된 커버리지 기반 퍼징의 시드 스케줄링 기법이 시드 간의 관계를 반영하지 못하고, 단순히 다음 테스팅에 사용될 시드를 선택하는 과정에서 개선이 필요하다는 점에 주목하였다. 이를 해결하기 위해 ALPHUZZ는 시드 간 변형 관계를 활용하는 시드 변형 트리를 제안하였다.

ALPHUZZ는 시드 스케줄링 문제를 몬테 카를로트리 검색(Monte Carlo Tree Search, MCTS) 문제로 정의하였다. 이 방법을 통해 시드 변형 트리에서 최적의 경로를 탐색하며, 다음 퍼징 단계에서 사용할 시드를 선택한다. 시드 변형 트리는 드물게 사용된 경로를 탐색(Exploration)하며, 높은 잠재성을 가진 시드 및 그 이웃을 반복해서 사용하는 활용(Exploitation) 간의 균형을 통해 최적의 성능을 위한 이익을 얻을 수 있는 구조를 제공한다. 또한, 실행 트리를 활용하여 시드에 대응하는 경로를 트리 형태로 구성하고, 이를 통해 퍼징 시 탐색하는 프로그램 상태를 모델링할 수 있다. 시드 선택 과정에서는 UCB1(Upper Confidence Bound, version1) 알고리즘을 통해 시드별 점수를 책정하여 최적의 시드를 선택한다.

ALPHUZZ는 DARPA CGC, Unifuzz, 그리고 12개의 리얼월드 프로그램을 대상으로 실험을 진행하였다. ALPHUZZ는 AFL, AFLFast, EcoFuzz, FairFuzz와 비교하여 가장많은 53개의 버그를 발견하였으며, 타 퍼저들보다 최대 28개의 유니크 버그를 추가로 찾아냄으로써 우수한 버그 탐지성능을 보였다. 또한, 리얼월드 프로그램을 대상으로 3개의 CVE를 할당받아 ALPHUZZ의 실용성을 입증하였다.

3.2 지도학습 기반 퍼저

3.2.1 NEUZZ

NEUZZ는 리얼월드 프로그램의 서로 다른 실행경로에서 서로 다른 동작을 보이는 불연속성으로 인해, 퍼징 과정에서 기울기 유도 최적화를 적용하기 어려운 점에 주목하였다. 이를 해결하기 위해 NEUZZ는 리얼월드 프로그램의 분기동작을 부드럽게 근사화하고 점진적으로 학습하는 피드 포워드(Feed-Forward) 신경망(Neural Network) 모델을 기울기 유도 입력 생성 방식과 함께 사용하는 방법을 제안하였다.

NEUZZ는 먼저 피드 포워드 신경망을 활용하여 프로그램의 불연속적인 분기 동작을부드럽게 근사화한다. 그 다음, 학습된 신경망 모델을 이용해 기울기 유도 입력 생성 방식을 적용하며, 각 입력 바이트에서 기울기 값이 가장 큰 바이트를 식별하고 해당 바이트를 변형하는 바이트 스케줄링 방법을 사용한다. 이 방법을 통해 퍼징 과정에서 프로그램의 새로운 동작을 포착한 새로운 데이터로 신경망 모델을 점진적으로 학습시켜 모델의 정확도를 지속적으로 높인다. 또한, NEUZZ는 과거 데이터와 새로운 데이터를 함께 사용하여 모델을 재학습함으로써 신경망 모델에서의 안정성-가소성 딜레마를 해결하였다.

NEUZZ는 6개의 프로그램에서 31개의 알려지지 않은 버그를 발견하여 버그 탐지 성능을 입증하였다. 또한, 4개의 프로그램을 대상으로 RNN(Recurrent Neural Network) 기반 퍼저와 AFL과 비교하였을 때, 최대 8.7배 높은 엣지 커버리지를 달성하여 커버리지 확보 측면에서 성능을 검증하였다.

3.2.2 MEUZZ

MEUZZ는 기존의 하이브리드 퍼징에서 제안된 휴리스틱 기반 시드 스케줄링 방식이 많은 프로그램에서 일반화하기 어렵고, 최적화되지 않은 시드 선택이 탐지 속도를 저하시킬 수 있다는 한계에 주목하였다. MEUZZ는 기계학습을 통해 시드를 선택하면 프로그램마다 시드 선택 규칙을 따로 고려할 필요가 없어 효율적이라는 점에 착안하여, 하이브리드 퍼징에 지도학습을 적용한 시드 스케줄링 방식을 제안하였다. 이 방식은 다양한 프로그램에서 일반화할 수 있어 퍼징 결과의 품질을 높일 수 있다.

MEUZZ의 핵심은 유사한 프로그램에서 얻은 시드 스케줄링 지식을 바탕으로 새로운 시드의 퍼징 성능을 예측하는 것이다. 이를 위해 프로그램의 퍼징 결과로부터 학습 특성을 추출하고, 입력 자손 트리 크기로 라벨링된 시드를 선형 회귀 모델로 평가하여 콘콜릭 엔진에 전달한다. 모델의 업데이트와 예측 과정에서 발생하는 시간 제약은 온오프라인 학습 방식을 통해 해결하였다. 또한, 모델의 안정성과 정확도를 높이기 위해 온라인 학습 과정에서 RLS(Recursive Least-Square) 알고리즘을 사용하여 선형회귀 모델을 업데이트한다.

MEUZZ는 리얼월드 프로그램을 대상으로 24시간 동안 실험을 진행한 결과, 56개의 실험 중 68%에서 모델 이식에 성공하였으며, 평균적으로 7.1% 더 많은 코드 커버리지를 확보하여 모델 이식성과 재사용성을 검증하였다.

IV. 실험 및 평가

본 장에서는 살펴본 스케줄링 전략에 기계학습 방식을 적용한 퍼저들의 성능을 커버리지 확보와 버그탐지 측면에서 확인함으로써 어떤 기계학습 기법이 스케줄링 전략에 효과적인지 검증한다.

4.1 실험 환경 및 방법

커버리지 확보 평가에는 Table 2.에서 확인할 수 있는 기존 퍼징 연구에서 일반적으로사용되는 4개의 서로 다른 파일 포맷(ELF, JPEG, TIFF, PCAP)을 다루는 리얼월드 프로그램 4개를 사용하였다. 4개의 서로 다른 파일 포맷을 다루는 리얼월드 프로그램을 선정한 이유는 파일 포맷에 따른 퍼저의 성능을 확인하기 위함이다. 프로그램의 라인 수는 오픈소스 프로그램인 cloc을 사용하여 계산하였으며, 리얼월드 프로그램의 복잡성을 평가하기 위해 라인 수를 확인하였다. tcpdump의 라인 수는 90,884개로 코드 복잡도가 가장 높은 것으로 나타났다. 커버리지 확보 평가 실험은 24시간씩 5회를 반복하여 진행하였다.

Table 2. Real-World binary settings

JBBHCB_2024_v34n5_973_4_t0001.png 이미지

버그 탐지 평가에는 LAVA-M 데이터셋을 사용하였다. LAVA-M 데이터셋은 coreutils 패키지의 base64, md5sum, uniq, who 프로그램에 정해진 수의 버그가 주입된 프로그램을 제공한다. 버그가 주입된 프로그램을 대상으로 퍼징을 수행한 후 발견된 유니크 크래시 수를 비교하여 퍼저별 버그 탐지 성능을 평가하였다. 버그 탐지 성능 평가 실험은 12시간씩 5회 반복하여 진행하였다.

모든 실험은 377GB 메모리와 80개의 코어로 구성된 Intel(R) Xeon(R) Gold 6148 CPU와 GTX 1050 GPU를 장착한 64bit 서버에서, Ubuntu 16.04 LTS 버전의 도커 환경에서 진행되었다. 각 도커는 1개의 CPU 코어를 할당받아 독립적인 실험이 진행되었다.

4.2 커버리지 확보 측면 ML 기반 퍼저의 효과성

Fig 1.은 리얼월드 프로그램인 readelf, tiff2ps, tcpdump, 그리고 djpeg를 대상으로 24시간씩 5회 반복 실험을 통해 확보된 지역 커버리지(Region Coverage) 결과를 나타낸다. 그래프의 선은 각 반복 회차에서 확보된 지역 커버리지의 중간값을, 범위는 최댓값과 최솟값을 나타낸다.

JBBHCB_2024_v34n5_973_5_f0001.png 이미지

Fig. 1. Region coverage on Real-World binaries by 24h fuzzing

실험 결과, 기계학습 기반 퍼저 중 AFL-HIER가 네 개의 프로그램 중 세 개에서 가장 높은 커버리지를 확보하였다. 입력 포맷에 따라 다른 기계학습 기반 퍼저들의 커버리지 확보 성능은 편차를 보였지만, 강화학습 기반의 ALPHUZZ는 tiff2ps와 tcpdump를 제외하고 AFL-HIER 다음으로 우수한 커버리지 확보 성능을 나타냈다. NEUZZ는 학습 데이터의 수가 많아도 200개에 불과한 반면, 평균 300만 개의 파라미터를 가진 모델을 사용함에 따라 과소적합이 발생하여, 세 개의 프로그램 중 두 개에서 낮은 커버리지 확보 성능을 보였다. MEUZZ 또한 부족한 학습 데이터에 비해 과소 적합이 발생하여, djpeg을 제외한 세 개의 프로그램에서 거의 커버리지를 확보하지 못하였다. 특히, 네 개의 프로그램 중 코드 복잡도가 가장 높은 tcpdump에서는 강화학습 기반의 AFL-HIER와 ALPHUZZ가 프로그램의 새로운 경로를 거의 탐색하지 못한 반면, 지도학습 기반의 NEUZZ는 프로그램의 새로운 동작을 점진적으로 학습하여 지속적으로 새로운 경로를 탐색하는 성능을 보였다.

실험 결과는 데이터의 양과 질이 퍼저 성능에 큰 영향을 미치는 지도학습 기반 퍼저의 경우, 타겟 프로그램이 처리하는 입력 포맷에 따라 프로그램 탐색 성능에 편차가 있음을 보여준다. 반면, AFL-HIER와 ALPHUZZ와 같은 강화학습 기반 퍼저는 스케줄링 전략에 강화학습을 활용한 퍼저가 프로그램을 깊이 탐색하는 데 더 효과적임을 확인할 수 있었다. 또한, 코드 복잡도가 높은 프로그램에서는 딥러닝 모델을 학습하여 예측된 결과를 기반으로 시드 스케줄링을 진행하는 지도학습 기반 퍼저가 더 효과적임을 확인할 수 있었다.

4.3 버그 탐지 측면 ML 기반 퍼저의 효과성

Table 3.은 LAVA-M 데이터셋의 프로그램을 대상으로 베이스라인 퍼저인 AFL와 실험대상 퍼저에서 발견한 유니크 크래시 수를 나타낸다. 강화학습 기반 퍼저인 AFL-HIER는 LAVA-M 데이터셋 내 모든 프로그램에서 유니크 크래시를 발견하였지만, ALPHUZZ에서는 유니크 크래시를 발견하지 못하였다. 특히, AFL-HIER에서 base64와 uniq 프로그램에서 각각 28개와 44개의 버그가 주입된 상태에서, 추가적으로 각각 19개와 55개의 유니크 크래시를 더 발견하였다. MEUZZ는 base64와 md5sum 프로그램에서 유니크 크래시를 발견하였고, NEUZZ는 프로그램 크기가 큰 who 프로그램을 제외한 다른 프로그램에서는 유니크 크래시를 발견하지 못하였다. 이는 NEUZZ의 경우 학습 데이터의 양보다 학습 파라미터가 많아 과소 적합이 발생했기 때문으로 분석된다. 하이브리드 퍼징에 지도학습을 적용한 MEUZZ는 순수하게 지도학습만 적용한 NEUZZ보다 버그 탐지 성능이 더 우수함을 확인할 수 있었다. NEUZZ와 MEUZZ와 같은 지도학습 기반 퍼저의 경우, 데이터 증대를 통해 학습 데이터를 늘려 학습시킨다면 고품질의 입력을 생성하여 커버리지 확보와 버그 탐지 성능을 높일 수 있을 것이다.

Table 3. Bug detection on LAVA-M dataset by 12h fuzzing

JBBHCB_2024_v34n5_973_5_t0001.png 이미지

Table 4.는 리얼월드 프로그램인 readelf, tiff2ps, tcpdump, 그리고 djpeg를 대상으로 24시간씩 5회 반복 실험을 통해 발견한 유니크 크래시 수의 평균을 나타낸다. 실험 결과, AFL-HIER만이 tiff2ps와 tcpdump에서 유니크 크래시를 발견하였다. AFL-HIER은 MAB 모델에 의한 다단계 커버리지 메트릭과 시드 스케줄링 알고리즘이 탐색과 활용 간에 적절한 균형을 달성하여 버그 탐지에도 효과적임을 입증하는 결과이다.

Table 4. Bug detection on real-world binaries by 24h fuzzing

JBBHCB_2024_v34n5_973_6_t0001.png 이미지

4.4 ML 기반 퍼저의 효과성

4.2절과 4.3절에서는 리얼월드 프로그램과 LAVA-M 데이터셋을 활용하여, 스케줄링 전략에 강화학습과 지도학습을 적용한 퍼저들의 커버리지 확보 및 버그 탐지 성능을 비교 및 평가하였다. 커버리지 확보 성능이 가장 뛰어났던 AFL-HIER 퍼저가 버그 탐지 측면에서도 가장 우수한 성능을 보였다. 동일한 강화학습 기반 퍼저인 ALPHUZZ의 경우 프로그램 탐색 성능은 우수했으나, 프로그램 탐색 성능이 버그 탐지 성능으로 연결되지는 않았다. 두 퍼저 모두 시드를 스케줄링하는 데 강화학습 알고리즘을 사용한다는 공통점이 있지만, AFL-HIER는 추가로 시드 클러스터링 기법을 사용하여 다단계 커버리지 메트릭트리를 구성하고, 이 트리 내에서 함수 커버리지의 희소성과 보상을 기반으로 시드를 스케줄링하는 방식으로 탐색과 활용의 균형을 맞춤으로써 탐색 공간을 효과적으로 탐색하며 많은 버그를 발견할 수 있었다.

MEUZZ와 NEUZZ는 동일한 지도학습 기반 퍼저로, 학습 데이터가 충분하지 않을 때 복잡한 모델 사용으로 인해 프로그램 내 새로운 경로를 탐색하는데 한계가 있음을 보였으나, 버그 탐지 성능에서 차이를 보였다. NEUZZ는 사전에 퍼징을 통해 확보한 시드로 학습한 후, 학습된 정보를 바탕으로 변형할 바이트를 예측하는 방식을 사용한다. MEUZZ 또한 유사한 프로그램에서 얻은 스케줄링 지식을 기반으로 다음에 퍼징할 시드를 예측하지만, 추가적으로 지도학습을 통해 최적화된 시드를 프로그램 실행 시 복잡한 분기문에 대한 제약 조건을 효율적으로 해결할 수 있는 콘콜릭 실행에 활용한다는 점에서 NEUZZ보다 더 우수한 버그 탐지 성능을 보였다. 이를 통해, 지도학습만을 퍼징 전략에 적용하기보다 콘콜릭 실행 등 다른 기법과 함께 활용하는 지도 학습 기반 퍼징이 더 효과적임을 알 수 있다.

종합적으로, 스케줄링 기법에 기계학습을 적용한 퍼징의 경우, 커버리지 확보와 버그 탐지 성능 측면에서 지도학습보다 강화학습을 적용하였을 때 성능이 더 뛰어나다는 결론을 도출할 수 있다. 학습하기 충분한 데이터가 확보되지 않으면 학습된 결과를 기반으로 시드 스케줄링을 예측하는것보다, 퍼징 과정에서 시드의 커버리지 정보를 활용하여 부여된 리워드를 기반으로 시드 스케줄링을 수행할 때 프로그램의 깊은 경로를 더 효과적으로 탐색할 수 있다. 특히 지도학습과 강화학습만을 적용한 퍼저보다 추가적인 퍼징 과정을 최적화하는 기법을 함께 적용하였을 때 퍼정의 성능이 뛰어남을 확인하였다. 특히, AFL-HIER의 경우, AFL을 기반으로 구현된 다른 기계학습 기반 퍼저와 달리 최적화된 AFL++ 퍼징 엔진을 기반으로 시드 클러스터링 기법과 강화학습 기반의 시드 스케줄링 기법을 효과적으로 결합함으로써 커버리지 확보와 버그 탐지 성능에서 뛰어난 성과를 보여 주었다.

V. 결론

본 연구에서는 퍼징의 스케줄링 기법에 기계학습을 적용한 최신 퍼저 연구를 분석하였다. 리얼월드 프로그램을 대상으로 코드 커버리지 확보 성능을 평가한 결과, 지도학습 기반 퍼저보다 강화학습 기반 퍼저가 더 우수한 커버리지 확보 성능을 보였다. LAVA-M 데이터셋을 활용한 버그 탐지 성능 평가에서는 AFL-HIER가 모든 프로그램에서 버그를 탐지하며, 가장 많은 버그를 발견하여 제안하는 퍼징 기법과 강화학습 기반의 스케줄링 기법의 효과성을 입증하였다. 또한, 지도학습 기반 퍼저는 코드 복잡도가 높은 tcpdump에서 강화학습 기반 퍼저보다 높은 커버리지 확보를 보였다. 특히, 하이브리드 퍼징에지도 학습을 적용한 MEUZZ는 버그 탐지 성능에서 두 번째로 우수한 결과를 나타냈다.

본 연구를 통해 단순히 기계학습을 적용한 퍼징 전략보다, 퍼징 과정을 추가적으로 최적화하는 전략이 프로그램의 더 깊은 경로를 탐색하고, 효과적인 버그 탐지를 이끌어낼 수 있음을 확인하였다. 향후 연구에서는 다양한 입력 포맷에 대해 다양한 프로그램을 처리할 수 있는, 기계학습을 활용한 효과적인 퍼징 전략에 대한 연구가 필요하다.

References

  1. Xiaogang Zhu, Sheng Wen, Seyit Camtepe, and Yang Xiang, "Fuzzing: A Survey for Roadmap," ACM Computing Surveys (CSUR), vol. 54, no. 11, pp. 1-36, Sep. 2022. https://doi.org/10.1145/3512345
  2. Gary J Saavedra, Kathryn N Rodhouse, Daniel M Dunlavy, and Philip W Kegelmeyer, "A Review of Machine Learning Applications in Fuzzing," arXiv preprint arXiv: 1906.11133, 2019.
  3. Yan Wang, Peng Jia, Luping Liu, Cheng Huang, and Zhonglin Liu, "A systematic review of fuzzing based on machine learning techniques," PloS one, vo. 15, no. 8, Aug. 2020.
  4. Jinghan Wang, Chengyu Song, and Heng Yin, "Reinforcement Learning-based Hierarchical Seed Scheduling for Greybox Fuzzing," Network and Distributed Systems Security (NDSS) Symposium, Feb. 2021.
  5. Yiru Zhao, Xiaoke Wang, Lei Zhao, Yueqiang Cheng, and Heng Yin, "Alphuzz: Monte Carlo Search on Seed-Mutation Tree for Coverage-Guided Fuzzing," ACSAC'22: Proceedings of the 38th Annual Computer Security Applications Conference, pp. 534-547, Dec. 2022.
  6. Dongdong She, Kexin Pei, Dave Epstein, Junfeng Yang, Baishakhi Ray, and Suman Jana, "Neuzz: Efficient fuzzing with neural program smoothing," 2019 IEEE Symposium on Security and Privacy (SP), pp.803-817, May. 2019.
  7. Yaohui Chen, Mansour Ahmadi, Reza Mirzazade farkhani, Boyu Wang and Long Lu, "MEUZZ: Smart Seed Scheduling for Hybrid Fuzzing," 23rd International Symposium on Research in Attacks, Intrusions and Defenses(RAID 2020), pp. 77-92, Oct. 2020.
  8. Lei Zhao, Pengcheng Cao, Yue Duan, Heng Yin, and Jifeng Xuan, "Probabilistic Path Prioritization for Hybrid Fuzzing," IEEE Transactions on Dependable and Secure Computing, vol. 19, no. 3, pp.1955-1973, Dec. 2020.
  9. Nick Stephens, John Grosen, Christopher Salls, Audrey Dutcher, Ruoyu Wang, Jacopo Corbetta, Yan Shoshitaishvili, Christopher Kruegel, and Giovanni Vigna, "Driller: Augmenting fuzzing through selective symbolic execution," Network and Distributed Systems Security (NDSS) Symposium, vol. 16, no. 2016, pp.1-16, Feb. 2016.
  10. Tai Yue, Pengfei Wang, Yong Tang, Enze Wang, Bo Yu, Kai Lu, and Xu Zhou, "EcoFuzz: Adaptive Energy-Saving Greybox Fuzzing as Variant of the Adversarial Multi-Armed Bandit," 29th USENIX Security Symposium(USENIX Security 20), pp. 2307-2324, Aug. 2020.