Skip to main content
QUICK REVIEW

[논문 리뷰] BinMatch: A Semantics-based Hybrid Approach on Binary Code Clone Analysis

Yikun Hu, Yuanyuan Zhang|arXiv (Cornell University)|2018. 08. 19.
Software Engineering Research참고 문헌 37인용 수 4
한 줄 요약

BinMatch는 테스트 케이스로 템플릿 함수를 실행하고, 이식된 런타임 정보를 사용해 대상 함수를 시뮬레이션하여 의미론적 서명을 추출함으로써 의미 기반 하이브리드 접근 방식을 제안한다. 이는 코드 변형에 대해 뛰어난 내성성과 높은 정확도를 보이며, 1억 개 이상의 함수 쌍에 대해 최신 기술보다 뛰어난 정밀도를 확보한다.

ABSTRACT

Binary code clone analysis is an important technique which has a wide range of applications in software engineering (e.g., plagiarism detection, bug detection). The main challenge of the topic lies in the semantics-equivalent code transformation (e.g., optimization, obfuscation) which would alter representations of binary code tremendously. Another chal- lenge is the trade-off between detection accuracy and coverage. Unfortunately, existing techniques still rely on semantics-less code features which are susceptible to the code transformation. Besides, they adopt merely either a static or a dynamic approach to detect binary code clones, which cannot achieve high accuracy and coverage simultaneously. In this paper, we propose a semantics-based hybrid approach to detect binary clone functions. We execute a template binary function with its test cases, and emulate the execution of every target function for clone comparison with the runtime information migrated from that template function. The semantic signatures are extracted during the execution of the template function and emulation of the target function. Lastly, a similarity score is calculated from their signatures to measure their likeness. We implement the approach in a prototype system designated as BinMatch which analyzes IA-32 binary code on the Linux platform. We evaluate BinMatch with eight real-world projects compiled with different compilation configurations and commonly-used obfuscation methods, totally performing over 100 million pairs of function comparison. The experimental results show that BinMatch is robust to the semantics-equivalent code transformation. Besides, it not only covers all target functions for clone analysis, but also improves the detection accuracy comparing to the state-of-the-art solutions.

연구 동기 및 목표

  • 기존의 구문 기반 및 구조 기반 클론 탐지 기법이 손상되는 의미적으로 동일한 코드 변형(예: 최적화, 오브스컬레이션)에 대응하는 문제를 해결한다.
  • 순수한 정적 또는 동적 분석 방법에서 유발되는 탐지 정확도와 코드 커버리지 간의 상충 관계를 극복한다.
  • 실행된 템플릿의 런타임 의미론적 정보를 활용하고 대상 함수를 시뮬레이션하여 완전한 커버리지를 확보하는 하이브리드 접근 방식을 개발한다.
  • 실제 바이너리에서 흔히 사용되는 다양한 컴파일 설정 및 오브스컬레이션 기법에 대해 강력한 클론 탐지 기능을 제공한다.

제안 방법

  • 실제 테스트 케이스로 템플릿 바이너리 함수를 인스트루멘트하고 실행하여 입력 값, 메모리 접근 및 시스템 호출을 포함한 런타임 동작을 캡처한다.
  • 템플릿에서 유래한 런타임 정보(예: 인자 값, 제어 흐름)를 각 후보 대상 함수로 이식하여 실행 시뮬레이션을 수행한다.
  • 이식된 런타임 컨텍스트를 사용해 각 대상 함수를 시뮬레이션하고 실행 중 의미론적 서명을 추출한다.
  • 읽기/쓰기 메모리 값, 비교 연산자 및 라이브러리 함수 호출 기반으로 의미론적 서명을 추출하여 기능적 동작을 표현한다.
  • 유사도 점수를 사용해 템플릿과 대상 함수의 의미론적 서명을 비교하여 클론을 탐지한다.
  • 시뮬레이션 중 간접 호출, 점프 및 전역 변수 읽기 처리를 위한 신규 전략을 구현하여 의미론적 정밀도를 유지한다.

실험 결과

연구 질문

  • RQ1동적 실행과 정적 시뮬레이션을 융합한 하이브리드 접근 방식이 바이너리 클론 탐지에서 높은 탐지 정확도와 완전한 코드 커버리지를 동시에 달성할 수 있는가?
  • RQ2컴파일러 최적화 및 코드 오브스컬레이션과 같은 의미적으로 동일한 코드 변형에 대해 제안된 방법이 얼마나 강건한가?
  • RQ3런타임 동작과 시뮬레이션에서 유도된 의미론적 서명이 구문 기반 및 구조 기반 특징보다 클론 탐지에서 더 우수한 성능을 보일 수 있는가?
  • RQ4다양한 컴파일 설정이나 일반적인 기법으로 오브스컬레이션된 바이너리 분석 시, 이 방법이 정확도를 어느 정도 유지하는가?

주요 결과

  • BinMatch는 링크 타임 최적화 및 일반적인 오브스컬레이션 기법을 포함한 다양한 의미적으로 동일한 코드 변형에 대해 강건함을 입증했다.
  • 템플릿에서 유도된 런타임 정보를 사용해 각 대상 함수를 시뮬레이션함으로써 모든 대상 함수에 대해 100% 커버리지를 확보했다.
  • BinDiff 및 Kam1n0와 같은 최신 기술 도구보다 탐지 정확도와 코드 변형에 대한 내성성에서 뛰어난 성능을 보였다.
  • 메모리 연산, 비교 연산 및 라이브러리 호출에서 파생된 의미론적 서명을 통해 핵심 기능적 의미를 성공적으로 포착했다.
  • 다양한 설정으로 컴파일된 여덟 개의 실세계 프로젝트에서 1억 개 이상의 함수 쌍을 분석하여 확장성과 효과성을 검증했다.
  • 실행-시뮬레이션 전략을 통해 문법적 특징에 의존하지 않고 풍부한 의미론적 정보를 캡처함으로써 탐지 신뢰도를 향상시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.