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