Skip to main content
QUICK REVIEW

[논문 리뷰] A Survey of Binary Code Similarity

Irfan Ul Haq, Juan Caballero|arXiv (Cornell University)|2019. 09. 25.
Software Engineering Research참고 문헌 104인용 수 16
한 줄 요약

이 논문은 이전에 종합적인 서베이가 부족했던 바이너리 코드 유사성 분야에 대해 처음으로 종합적인 서베이를 제시한다. 4개의 차원(응용 분야, 접근 방식의 특성, 구현, 평가)을 바탕으로 61개의 접근 방식을 분석하며, 이 분야의 핵심 트렌드, 과제, 열린 문제를 체계화한다. 이는 악성코드 및 펌웨어 분석을 위한 크로스 아키텍처 지원, 오브스컬레이션에 대한 저항성, 대규모 펌웨어 분석을 위한 확장성과 같은 문제들을 포함한다. 본 논문은 바이너리 분석 및 소프트웨어 보안 분야의 연구자들에게 기초가 되는 참고 자료를 제공한다.

ABSTRACT

Binary code similarity approaches compare two or more pieces of binary code to identify their similarities and differences. The ability to compare binary code enables many real-world applications on scenarios where source code may not be available such as patch analysis, bug search, and malware detection and analysis. Over the past 20 years numerous binary code similarity approaches have been proposed, but the research area has not yet been systematically analyzed. This paper presents a first survey of binary code similarity. It analyzes 61 binary code similarity approaches, which are systematized on four aspects: (1) the applications they enable, (2) their approach characteristics, (3) how the approaches are implemented, and (4) the benchmarks and methodologies used to evaluate them. In addition, the survey discusses the scope and origins of the area, its evolution over the past two decades, and the challenges that lie ahead.

연구 동기 및 목표

  • 바이너리 코드 유사성 연구에 대한 체계적인 분석을 제공함으로써, 이 분야에 이전에 종합적인 서베이가 부족했던 문제를 해결하고자 한다.
  • 응용 분야, 설계 특성, 구현 방식, 평가 방법론을 기반으로 61개의 바이너리 코드 유사성 접근 방식을 식별하고 분류하고자 한다.
  • 바이너리 코드 디핑에서 시작해 크로스 아키텍처 및 의미론적 인식 기반의 유사성 검출로 이어지는 분야의 발전 과정을 추적하고자 한다.
  • 오브스컬레이션에 대한 강건성, 수십억 개의 함수로의 확장성, 다양한 접근 방식 간 공정한 평가 등 주요 열린 과제를 부각하고자 한다.
  • 재현 가능하고 비교 가능한 연구를 가능하게 하기 위해 표준화된 벤치마크와 개방형 데이터셋을 도입할 것을 촉구하고자 한다.

제안 방법

  • 보안, 소프트웨어 공학, 프로그래밍 언어, 기계 학습 분야의 주요 학술 대회에서 발표된 100편 이상의 논문을 대상으로 체계적인 문헌 리뷰를 수행하였다.
  • 식별된 61개의 접근 방식을 4개의 차원에 따라 분류하였다: 지원하는 응용 분야, 접근 방식의 특성(예: 세분성, 분석 유형, 유사성 유형), 구현(플랫폼, 프로그래밍 언어, 아키텍처, 공개 여부), 평가(데이터셋, 메트릭, 강건성 테스트).
  • 각 접근 방식의 특징을 요약한 상세한 표를 포함하여, 일대일 대 다수 비교, 정적 대 동적 분석, 해싱, 임베딩 또는 인덱싱 기반 확장성 등 다양한 차원에서의 비교를 가능하게 하였다.
  • 저자들은 컴파일러 변경, 최적화 수준, 다양한 운영 체제, CPU 아키텍처 등 일반적인 변형에 대한 접근 방식의 강건성을 평가하였다.
  • 본 서베이에서는 특히 암호화 연산과 같은 도메인 독립형 및 도메인 특화 함수에 대해 의미론적 유사성 기법을 검토하였다.
  • 현재 평가 관행의 한계, 즉 일관되지 않은 데이터셋과 소스 코드 접근성 부족 문제를 논의하며, 표준화된 벤치마킹을 필요로 한다고 주장하였다.

실험 결과

연구 질문

  • RQ1바이너리 코드 유사성 접근 방식이 지원하는 주요 응용 분야는 무엇이며, 지난 20년간 어떻게 변화해 왔는가?
  • RQ2다양한 바이너리 코드 유사성 접근 방식은 세분성, 분석 유형(정적/동적/기호적), 및 유사성 모델링 방식(구문적, 구조적, 의미론적) 측면에서 어떻게 다를까?
  • RQ3기존 접근 방식에서 가장 흔히 사용되는 구현 플랫폼, 프로그래밍 언어, 지원하는 아키텍처는 무엇인가?
  • RQ4어떻게 접근 방식이 평가되며, 데이터셋의 다양성과 코드 변형에 대한 강건성 측면에서 현재의 벤치마킹 관행의 한계는 무엇인가?
  • RQ5오브스컬레이션, 크로스 아키텍처 지원, 대규모 펌웨어 분석을 위한 확장성과 같은 바이너리 코드 유사성 분야의 주요 열린 과제는 무엇인가?

주요 결과

  • 기본적인 바이너리 디핑에서 시작해 점점 더 구조적 및 의미론적 유사성에 초점을 맞춘 고도화된 바이너리 코드 검색으로의 발전을 보이며, 강건성을 향상시키기 위한 추세가 뚜렷하다.
  • 61개의 바이너리 코드 유사성 접근 방식이 식별되고 체계화되었으며, 대부분 정적 분석과 구문적/구조적 비교를 사용하지만, 점점 더 많은 수의 접근 방식이 임베딩 기반의 학습 기반 기법을 활용하고 있다.
  • 조사된 접근 방식 중 30%만이 공개되어 있으며, 많은 경우 소스 코드 접근성이 없어 재현성과 공정한 비교를 방해하고 있다.
  • 현재까지 가장 큰 평가에서는 8,126개의 펌웨어 이미지에서 4억 2,000만 개의 함수를 분석하였지만, 10만 개의 IoT 펌웨어 이미지에서 예상되는 500억 개의 함수로의 확장은 여전히 주요 열린 과제이다.
  • 현재의 어떤 접근 방식도 가상화 기반 팩커(예: Themida, VMProtect)를 처리하지 못하며, 최신 언패킹 도구조도 기능 탐지가 불완전하여 20%~60%의 코드를 놓치고 있다.
  • 재현 가능하고 공정한 평가를 가능하게 하기 위해 실제 세계의 오브스컬레이션과 다양한 코드 변형을 포함한 표준화된 개방형 벤치마크 데이터셋이 절실하게 필요하다.

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

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

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

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