본문 바로가기
IT기술노트/소프트웨어공학

퍼징 (Fuzzing)

by 비트코기 2022. 11. 3.

I. 잠재적 취약점 식별, 퍼징의 개념

- 컴퓨터 프로그램에 랜덤하게 데이터를 입력하여 충돌, 코드 검증의 실패, 잠재적인 메모리 누수 등의 오류를 체크하는 기법

 


II. 퍼징의 절차 및 단계별 활동

가. 퍼징의 절차

- 퍼징은 퍼징 테스트로도 표현하며 주로 소프트웨어나 컴퓨터 시스템들의 보안 문제를 테스트하기 위해 사용

 

나. 퍼징의 단계별 활동

단계 활동 설명
분석 대상 프로그램 분석 - 프로그램 실행에 필요한 권한이나 네트워크 사용 여부 등을 분석
입력 값 분석 - 공격에 활용할 수 있는 데이터를 식별
- 파일, 레지스트리, 네트워크 패킷, 환경 변수 등
생성 및 실행 퍼즈 데이터 생성 - 앞 단계의 분석 결과를 활용하여 실제 테스트 데이터 생성
- 데이터 생성 규칙 및 랜덤 데이터 이용
프로그램 실행 - 퍼즈 데이터를 이용하여 프로그램 실행
- 프로그램 종료 시점 판단
예외처리 예외 모니터링 - 다양한 예외 상황에 대한 모니터링
- 프로세스 종료, 접근 위반 모니터링 등
예외 분석 - 예외 모니터링 정보를 분석하여 해당 예외가 익스플로잇 가능 여부 판단

- 익스플로잇은 취약점 공격으로 보안 취약점이나 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 하는 공격 행위

 

 

III. 퍼징의 유형

유형 설명
블랙박스 퍼징 - 대상 소프트웨어에 대한 사전 지식 없이 퍼징 진행
- 주로 랜덤 데이터를 이용, 프로세스 모니터링
- 퍼징이 신속하게 진행되지만 코드 커버리지가 낮은 단점 존재
화이트박스 퍼징 - 이미 소스코드를 가지고 있는 상태에서 대상 소프트웨어를 완전히 파악 후 입력되는 값 형태를 분석하여 퍼징 진행
- 상세 분석에 따라 데이터 생성 (랜덤 또는 데이터 생성 규칙 활용)
- 소스코드가 필요하며 상세한 분석이 필요하므로 신속한 적용이 어려운 단점 존재
그레이박스 퍼징 - 소스코드는 가지고 있지 않으나 대상 소프트웨어를 어느정도 파악하여 바이너리에 입력되는 입력값의 형태를 알고 있을 때 사용
- 입력값의 형태 분석 후 이 형태에 맞게 데이터 생성
- 블랙박스 퍼징에 비해 코드 커버리지가 높으나 상세한 분석에 따른 시간과 노력 필요

 

IV. 퍼징의 활용 사례

사례 설명
마이크로 소프트 SDL
( Security Development Lifecycle)
- 일반적인 개발주기 7단계 중  verification 단계에서 동적 분석과 더불어 Fuzzing Test 수행

Cisco CSDL
(Cisco Secure Development Lifecycle)
- Secure Software 개발을 위해 Cisco에서 만든 개발 주기 모형
- Validate 단계에서 Fuzzing Test 수행

- Fuzzing Test는 의도적으로 비정상적이고 변형된 랜덤 데이터를 애플리케이션에 보내 프로그램의 Failure를 유도하는 동적 분석의 특수한 형태

반응형

댓글