퍼징(Fuzzing)/Basicc Fuzzing

[Fuzzing] Fuzzing study 1weeks - Xpdf(CVE-2019-13288)

lawence 2025. 3. 27. 11:55

 

 

어쩌다 보니 퍼징 스터디를 하게 되었습니다. 아직 시스템 해킹도 정복하지 못한 저에게 감사하게도 이런 기회가 왔네요

https://github.com/antonio-morales/Fuzzing101?tab=readme-ov-file

 

GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiative

An step by step fuzzing tutorial. A GitHub Security Lab initiative - GitHub - antonio-morales/Fuzzing101: An step by step fuzzing tutorial. A GitHub Security Lab initiative

github.com

해당 사이트를 통해 퍼징을 공부할 계획입니다. 자료가 전부다 영어인데... 이 기회에 영어 공부 한다고 생각하죠.

아무래도 영어를 번역해서 공부 기록을 남기다 보니 번역에 오류가 있을 수 있습니다. 애초에 번역이 처음

 

 

퍼징이란?

Fuzz Testing. 자동화된 소프트웨어 검사 기술이라고 합니다. 프로그램에 랜덤한 값, 혹은 변형된 값을 넣어서 예외 / 크래시가 있는지 확인한다고 하네요

 

대표적인 도구로 AFL, libFuzzer, HonggFuzz가 있다고 합니다. 여기선 AFL++를 사용할 예정입니다.

 

 

퍼징의 두 가지 종류

Coverage-guided evolutionary fuzzer. 커버리지 기반 퍼징과 진화적 퍼징이 있다고 합니다.

-진화적 퍼징(Evolutionary Fuzzing) - 진화 알고리즘에서 영감을 얻은 메타휴리스틱(인공지능과 관련이 있나봐요) 기법. 초기 입력 집합(seeds)을 생성하고, 시간이 지나면서 선택 기준 (ex. Code Coverage)에 따라 입력을 변형(Mutation)하고 발전시킴. 이 기법의 목표는 점진적인 변화를 통해 더욱 의미있는 입력을 만들어내는 것

-커버리지 기반 퍼징(Coverage Guided Fuzzing) - 새로운 크래시(Crash) 또는 취약점을 발견할 확률을 높이기 위해, *코드 커버리지 데이터를 수집 및 비교*하는 기법. 일반적으로 코드 계측(Instrumentation)을 활용해 입력값들이 실행 경로에 미치는 영향을 분석한다. 새로운 코드 실행 경로를 유도하는 입력을 선택하여 퍼징을 진행함.

정리
진화적 퍼징 - 입력을 점진적으로 발전.
커버리지 기반 퍼징 - 실행 경로를 확장하는데 초점을 맞춘 방식

 

 

우선 기본적인 정리는 끝난 것 같습니다.

 

이제 본격적으로 퍼징 스터디를 시작해볼텐데, 1주차에는 Xpdf 라는 pdf 뷰어를 퍼징 해보겠습니다.

Xpdf 3.02 버전에서 발생한 취약점이고요, CVE-2019-13288이라고 합니다.

 

 

CVE-2019-13288 요약
만들어진 파일(crafted file)을 통해 무한 반복을 일으킬 수 있는 취약점입니다.

스택에서 프로그램이 스택 프레임을 할당하는 함수를 각각 호출합니다. 만약 함수가 반복적으로 여러번 호출 된다면, 메모리 고갈과 프로그램 크래시가 날 수 있으며, 결과적으로 공격자는 DoS 공격을 할 수 있다고 합니다.

 

 

 

자세한 정보는 아래 링크를 참고해주세요.

https://www.cvedetails.com/cve/CVE-2019-13288/

 

CVE-2019-13288 : In Xpdf 4.01.01, the Parser::getObj() function in Parser.cc may cause infinite r

CVE-2019-13288 : In Xpdf 4.01.01, the Parser::getObj() function in Parser.cc may cause infinite recursion via a crafted file. A remote attacker can leverage this for a

www.cvedetails.com

 

위 깃헙 커맨드에 따라 빌드 및 환경 구축을 완료했습니다.

 

 

2시간 동안 퍼징을 돌려봤지만, 블로그처럼 고유 크래시는 뜨지 않았습니다.

 

 

더 많은 시간동안 돌려보거나, 블로그에서 준 예제 파일로 분석을 해야할 것 같습니다