Abstract
환경에 구애받지 않고 소프트웨어를 동작하기 위한 리호스팅 기술을 알아보고, 이를 퍼징과 결합하여 IoT 기기 펌웨어의 안전성을 실험하는 방법을 알아본다. 다중 지향성 퍼징은 IoT 펌웨어 검증에 아주 중요한 기술이 될 것이다. 일반적 바이너리에 적용할 때와 다른 점을 조사하고, 그에 맞는 지향성 정적분석 다변화를 제안한다.
본문
% 2024-07-04 % 기 - AFL 에서는 binary I/O만 적용이 가능하다. % 승 - IoT device를 소프트웨어 실행으로 내릴 수 있다. % 전 - 수동 리버싱 을 거치면 완전해지며, 실예는 다음과 같이 있다. % 결 - 이러한 접근법으로 내 문제를 어떻게 접근할까
% ### AFL의 Binary I/O 한계 AFL (American Fuzzy Lop)은 현재 퍼징 도구로 널리 사용되고 있지만, 주로 바이너리 입출력(I/O)만 지원하는 한계가 있다. 이는 특히 IoT 기기의 펌웨어에서 문제가 된다. 이는 특수 하드웨어에서만 동작하고, 바이너리가 아닌 인터럽트 등의 신호를 입력으로 삼기 때문이다.
% ### 소프트웨어 실행을 통한 IoT 기기 분석 다행히 에뮬레이션을 통해 IoT 기기의 펌웨어를 소프트웨어적으로 실행시킬 수 있다. 이를 리호스팅이라고 하며, 여기에 펌웨어 주변 기기의 행동을 자동으로 흉내내는 기술을 붙이면 퍼징을 연결시킬 수 있다. 흉내 기술로는 입력에서 목표 지점까지의 제약 조건을 모두 모아 주변 기기의 행동을 역으로 추론하는 기호실행 기술인 Jeset 등이 있다.
퍼징은 IoT 기기가 마주할 무수한 가능성의 환경을 탐색하며 안전성을 테스팅할 수 있으며, 이는 매우 중요한 기술이 될 것이다. 특정 동작에 얼어 버리는 프로그램은 많이 본 적 있을 것이다. 그러나 버튼을 눌렀을 때 엘리베이터 소프트웨어가 얼어서 고장난다면 얼마나 무서운가?
IoT 기기에서는 특히 다중 지향성 퍼징 이 중요할 것이다. 승강기를 생각하면 사용자와의 상호작용 종류는 한정되어 있고 오히려 환경 (시간, 전력량, 속도 등)이 무궁무진한 가능성을 가진다. 문제가 될 수 있는 유저 상호작용 지점들을 목표로 하는 퍼징으로, IoT 기기의 다양한 환경에서의 안전성을 테스트할 수 있다. 이는 인간의 추리로 환경을 예측하는 것보다 훨씬 더 효율적일 것이다.
이 지향성 퍼징은 환경에 맞는 특수 지향성 정적분석 을 요할 수 있다. 일반 바이너리가 입력을 정해진 때에만 받는 반면, IoT 기기는 지속적으로 환경의 영향을 받는다. 일반적 정적분석은 결과로 수렴하기가 어렵거나, 혹은 너무 넓고 조잡한 경로를 결과로 낼 가능성이 크다. 환경에 적합한 수렴 전략이 필요한 이유이다. 퍼징의 용례는 무궁무진하고, 퍼징이 잘 돌아갈 수 있게끔 전문가가 정적분석으로 받쳐 줄 필요성도 높다.