최적화된 프로세스 에뮬레이션으로 실기기 없이 IoT 펌웨어를 퍼징하는 고커버리지 그레이박스 퍼저 연구
기간2021 (IEEE Access Vol.9, 게재)
대상 저장소세종대학교 대학원 연구
역할공저자 (3저자)
FuzzingGreyboxAFLQEMUDECAFProcess EmulationIoT FirmwareFIRMADYNEStatic AnalysisMIPS / ARM
1문제
IoT 펌웨어는 원격에서 도달하기 쉬운 고가치 공격 표면이지만 퍼징하기 어렵다. 논문은 세 가지 핵심 난점을 정의한다.
구조화된 입력 (C1): HTTP 위 CGI 같은 네트워크 IoT 프로그램은 형식에 맞지 않는 입력을 조용히 버린다. 따라서 단순 무작위 변이만으로는 깊은 경로에 도달하지 못한다.
패닉 상태 (C2): 에뮬레이션이 NVRAM 등 하드웨어를 완벽히 모사하지 못해, 주변장치 접근 시 에뮬레이터가 죽거나 재부팅된다. 그 결과 응답하지 않는 입력이 크래시로 오분류되어 오탐(false positive)이 생긴다.
코드 커버리지 (C3): 기존 IoT 퍼저는 커버리지보다 처리량(throughput)에 치우쳐 같은 경로를 반복 탐색하고, 비효율적인 변이 연산자를 사용한다.
2접근 (한 일)
FIRM-COV는 가용성(실기기 불필요)·정확성(낮은 오탐)·안정성(패닉 상태 탐지)·효율성(높은 커버리지 + 처리량)을 동시에 추구하며, 세 가지 기법을 결합한다.
딕셔너리 생성 알고리즘 (정적 분석): 대상 바이너리에서 문자열 상수를 추출한 뒤, 참조 마이닝 → 세밀한 명령어 검사(MIPS $a0–$a3 인자 사용 여부) → 라이브러리 함수 분석(uClibc 문자열 처리 API 전달 여부)의 3단계를 통해 "구문 토큰"만 남긴다. 살아남은 문자열로 AFL 딕셔너리를 만들어 구조화된 입력을 생성한다. 평균 37.8초로 딕셔너리를 구성하는 낮은 오버헤드.
최적화된 프로세스 에뮬레이션: FIRM-AFL의 증강 프로세스 에뮬레이션을 개선. 속도를 위해 유저 모드로 실행하다 예외 시에만 전체 시스템 에뮬레이션으로 전환한다. QEMU/DECAF 동적 인트로스펙션으로 네트워크 수신 시점의 "엔트리 상태"를 포착·동기화하고, 페이지 폴트 처리 + 주기적 생존 점검·재동기화로 패닉 상태를 제거하며, NVRAM 등 하드웨어 의존 함수를 LD_PRELOAD 라이브러리로 가짜 데이터를 반환하도록 가로채 에뮬레이션을 안정화한다.
시너지 스케줄링: AFLFast에서 착안한 저빈도 파워 스케줄(시드 스케줄링)과 MOpt-AFL에서 착안한 PSO 기반 변이 연산자 선택(변이 스케줄링)을 결합한 커버리지 지향 퍼징.
3결과 · 성과
실제 IoT 기기 8종(라우터/IP 카메라, 3개 벤더, FIRMADYNE 데이터셋)을 대상으로 FIRM-AFL 기반 베이스라인들과 24시간 퍼징·3회 평균으로 비교했다.
+78.8%
평균 튜플 커버리지 향상 (베이스라인 대비)
+237.7%
최대 튜플 커버리지 향상 (DIR-815)
2건
신규 0-day 취약점 발견·신고
튜플 커버리지 향상: FIRM-AFLFast +18.5%, FIRM-MOptAFL +9.4%에 비해 FIRM-COV는 평균 +78.8%(DIR-815에서 최대 +237.7%)로 가장 높음.
처리량과 고유 경로 수 모두 전 모델에서 최고치(한 모델에서 베이스라인 대비 약 715% 경로).
1-day 취약점: 식별된 1-day를 모두, 가장 빠르게, 오탐 거의 없이 발견. 베이스라인들은 일부를 놓치거나 오탐(예: WR940N)을 냈다.