Abstract
Debugger systems are necessary to apply dynamic program analysis when evaluating security properties of embedded system software. It may be possible to make the use of software-based debugger and/or DBI framework if target devices support general purpose operating systems, however, constraints on applicability as well as environmental transparency might be incurred thereby hindering overall analyzability. Analysis with JTAG (IEEE 1149.1) debugging devices can overcome these difficulties in that no change would be involved in terms of internal software environment. In that sense, JTAG API can facilitate to practically perform dynamic program analysis for evaluating security properties of target device software. In this paper, we introduce an implementation of JTAG API to enable analysis of ARM core based embedded systems. The API function set includes the categories of debugger and target device controls: debugging environment and operation. To verify API applicability, we also provide example analysis tool implementations: our JTAG API could be used to build kernel function fuzzing and live memory forensics modules.
임베디드 시스템 소프트웨어의 보안성 분석을 위한 동적 프로그램 분석을 시도하기 위해서는 디버거 체계가 필요하다. 타겟 장비가 범용 운영체제와 비슷한 환경을 지원하는 경우에는 소프트웨어 기반의 디버거 혹은 DBI 프레임웍 등을 장비 내에 설치하여 분석할 수 있으나, 설치 가능성 제한이나 분석 환경의 투명성 문제 등의 어려움이 있을 수 있다. JTAG (IEEE 1149.1)디버거 장비를 이용하여 분석하는 경우에는 분석을 위해 타겟 장비 내의 소프트웨어적 환경을 변경하지 않아도 된다. 타겟 장비의 보안성 분석을 위한 프로그램 동적 분석 기법들을 용이하게 적용하기 위해서는 JTAG 디버거 장비를 제어하기 위한 API가 필요하다. 본 논문에서는 ARM 코어 기반 임베디드 시스템 분석을 위한 JTAG API를 소개한다. 구현된 API는 JTAG 디버거 하드웨어를 직접 제어하며 디버깅 환경 및 동작제어를 위한 함수 세트를 제공한다. API의 활용 용이성을 확인하기 위하여 커널 함수 퍼징과 라이브 메모리 포렌식 기법을 적용한 보안 분석 도구의 예제 구현을 제시한다.