상세 컨텐츠

본문 제목

[PAPER REVIEW] AIFORE: Smart Fuzzing Based on Automatic Input Format Reverse Engineering (USENIX SEC'23)

ANALYSIS/Paper Review

by koharin 2023. 10. 3. 11:56

본문

728x90
반응형

BACKGROUND

Fuzzing

  • 프로그램 내 취약점 발견하는데 효과적인 기술
  • 많은 입력을 생성해서 프로그램에 입력을 주어 보안 위반을 탐지
  • 고품질의 입력에 의존 → 고품질의 입력은 프로그램 state space를 효과적으로 탐색할 수 있고 취약점 트리거할 가능성을 높임
  • 고품질의 입력 생성 위해 입력 포맷 중요
    • 입력 포맷: 프로그램의 입력 바이트가 어떻게 구성되어야 하는지에 대한 것
    • 입력 포맷으로 sanity 체크를 우회하는 입력을 생성할 수 있고, 더 깊고 복잡한 코드에 도달할 수 있음

입력 필드의 구조와 의미

  • 입력을 처리하는 기본 블록(BB)에 의해 결정

 

MOTIVATION

  • 프로그램의 효과적인 입력 생성 위해 프로그램 입력 형식 지식 중요 → 자동화된 입력 형식 리버스 엔지니어링을 통해 입력 포맷 학습
  • 자동화된 입력 형식 리버스 엔지니어링에서의 챌린지 해결
    • 기존 퍼저는 다음의 입력 포맷에서의 챌린지를 모두 다루지 않음
      • 서로 다른 입력 필드에서 boundary가 어디에 있는지 (input field boundary recognition)
      • 입력 필드가 어떤 type에 속하는지 (input field type identification)
      • 입력 포맷의 어떤 지식을 활용해야 하는지

⇒ 3가지 챌린지 해결하기 위해 입력 포맷을 자동으로 reverse하여 퍼징에 활용하는 AIFORE 제안

 

DESIGN

  1. 바이트 수준 taint analysis
    • 각 BB가 처리하는 입력 바이트 구하기
    • 하나의 BB 내에서 여러 명령어로 처리되는 하나의 필드의 경우, 이러한 BB이 항상 실행되지는 않지만 분석이 필요하므로
    • 최소 클러스터 알고리즘 사용: 하나의 BB 내에서 여러 명령어로 처리되는 하나의 필드, 즉 항상 함께 처리되는 분할할 수 없는 입력 필드의 boundary를 BB에서 식별
  2. CNN 모델로 BB 동작 특성 학습
    • BB에서 처리되는 입력 필드의 타입(size, offset, enum, string, checksum 등) 예측 위해 사용
    • BB가 입력 필드의 서로 다른 타입을 처리하는 패턴 학습
    • CNN 모델로 입력 필드의 semantic 타입 예측
  3. power scheduling 알고리즘 사용한 스마트 퍼징 진행
    • 서로 다른 코드 커버리지를 갖는 테스트케이스를 골라서 입력 포맷을 재분석
    • 퍼징 과정에서 덜 테스트된 포맷을 가진 시드에 우선순위 부여 → 해당 시드에 mutation power 증가

 

RELATED WORK

기존 퍼저의 input field boundary recognition 연구

  • 정적 분석 또는 taint 분석으로 동일한 명령어로 처리된 바이트를 unique field로 그룹화함 → 명령어가 여러 입력 필드를 처리할 수 있고, 긴 필드는 서로 다른 명령어로 처리되어 multiple field로 나뉘면 오류가 날 수 있고, 정적 분석을 통해 필드를 식별하려면 많은 입력이 필요해야 하는 한계가 있음

기존 퍼저의 input field type identification 연구

  • 필드 타입을 추출하기 위해 이전 지식(파라미터 타입 등)에 의존하는데, 이전 지식은 흩어져 있고 휴리스틱한 방법으로 이루어져서 false positive와 false negative가 발생할 수 있다. 또한, 프로그램 동작의 semantic 수준을 고려하지 않아 semantic type(magic number, 크기, checksum 등)을 인식할 수 없다.

기존 퍼저의 utilization of input format 연구

  • 입력 포맷을 퍼징의 테스트케이스 생성이나 변형에 활용하여 타겟 프로그램 내 더 깊은 코드를 탐색
  • 포맷 정보를 시드가 좋은지 안 좋은지 결정하는데도 사용
  • 한계: 필드 관계에 대한 제약조건이 없는 단순한 구조의 시드의 경우 시드 품질 판별 불가능

 

EVALUATION

최신(SOTA) 포맷 반전 솔루션과 퍼저 ProFuzzer, TIFF-fuzzer, WEIZZ, EcoFuzz, AFL-Analyze, AFLFast와 15개의 서로 다른 포맷을 갖는 리얼월드 프로그램으로 비교하여 포맷 추론 정확성, 퍼징 성능 비교한 결과, AIFORE의 필드 추론 정확도가 SOTA 기준선 능가

→ 필드 boundary 인식 정확도 84.06%로 가장 높았고, 학습되지 않은 포맷과 프로그램으로 타입 예측 정확도 84.26% 달성하여 다른 퍼저보다 높음

→ 포맷 지식 추출하고 power scheduling 알고리즘을 적용하여 24시간 퍼징한 결과, BB coverage를 ProFuzzer보다 6% 높고 WEIZZ 퍼저보다 26% 높게 확보

→ 다른 퍼저에서 놓친 20개의 버그 탐지

 

CONCLUSION

CONCLUSION

기존 퍼저의 입력 형식을 인식하는데 문제를 해결하기 위해 자동으로 입력 형식을 리버스 엔지니어링하여 퍼징 과정에 활용하는 AIFORE 제안. 오염 분석으로 각 입력 바이트 처리하는 기본 블록 추론 후, 최소 클러스터 알고리즘으로 입력 바이트를 그룹화하였으며, 신경망 모델을 이용하여 기본 블록 동적 기반으로 입력 필드 타입 추론 후 power scheduling 알고리즘 통한 퍼징 진행하는 방법 제시.

CONTRIBUTION

  • 필드 바운더리 인식 방법과 최소 클러스터 알고리즘 제안
  • 딥러닝 기반으로 BB에서 처리되는 필드 타입 추론하는 방법 제안
  • 다른 퍼저보다 입력 포맷 인식 측면 훨씬 좋은 성능 보임
728x90
반응형

관련글 더보기