Skip to main content
QUICK REVIEW

[논문 리뷰] XFL: Naming Functions in Binaries with Extreme Multi-label Learning

James Patrick-Evans, Moritz Dannehl|arXiv (Cornell University)|2021. 07. 28.
Machine Learning in Bioinformatics인용 수 4
한 줄 요약

이 논문은 스트립드 바이너리에서 기능 이름 토큰을 예측하기 위해 정적 분석, 콜 그래프 컨텍스트, 및 글로벌 바이너리 특징을 결합한 새로운 기능 임베딩인 Dexter를 활용하는 극단적 다중 레이블 학습 프레임워크인 XFL을 소개한다. XFL은 10,047개의 Debian 바이너리로 구성된 데이터셋에서 83.5%의 정밀도를 기록하며, 토큰 수준의 레이블링을 통해 희귀 기능 이름을 효과적으로 모델링함으로써 기존 방법을 뛰어넘는 성능을 달성한다.

ABSTRACT

Reverse engineers benefit from the presence of identifiers such as function names in a binary, but usually these are removed for release. Training a machine learning model to predict function names automatically is promising but fundamentally hard: unlike words in natural language, most function names occur only once. In this paper, we address this problem by introducing eXtreme Function Labeling (XFL), an extreme multi-label learning approach to selecting appropriate labels for binary functions. XFL splits function names into tokens, treating each as an informative label akin to the problem of tagging texts in natural language. We relate the semantics of binary code to labels through DEXTER, a novel function embedding that combines static analysis-based features with local context from the call graph and global context from the entire binary. We demonstrate that XFL/DEXTER outperforms the state of the art in function labeling on a dataset of 10,047 binaries from the Debian project, achieving a precision of 83.5%. We also study combinations of XFL with alternative binary embeddings from the literature and show that DEXTER consistently performs best for this task. As a result, we demonstrate that binary function labeling can be effectively phrased in terms of multi-label learning, and that binary function embeddings benefit from including explicit semantic features.

연구 동기 및 목표

  • 소스 코드와 디버깅 정보가 없는 스트립드 바이너리에서 의미 있는 기능 이름을 예측하는 데 도전하는 것.
  • 클래스 불균형과 레이블 공간의 유한하지 않은 특성으로 인해 희귀 또는 미리보지 않은 기능 이름에서 실패하는 전통적인 기능 이름 모델의 근본적인 한계를 극복하는 것.
  • 이름을 재사용 가능한 기술적 설명 토큰으로 분해함으로써, 기존에 본 적 없는 기능들에 대해서도 정확한 이름 예측을 가능하게 하는 것.
  • 정적 분석, 로컬 콜 그래프 컨텍스트, 및 글로벌 바이너리 구조를 통합한 강력한 기능 임베딩(Dexter)을 개발하여 의미적 표현을 향상시키는 것.
  • 제어된 레이블 어휘를 사용한 다중 레이블 학습이 바이너리 기능 이름 예측 작업에서 전통적인 전체 이름 분류보다 우수한 성능을 내는지 입증하는 것.

제안 방법

  • 기능 이름을 개별 토큰으로 분할함으로써 문제를 다중 레이블 분류로 변환한다 (예: 'make_smooth_colormap' → {make, smooth, color, map}).
  • 정적 분석 특징(예: 명령어 패턴, 레지스터 사용량)과 로컬 콜 그래프 컨텍스트, 글로벌 바이너리 수준 통계를 결합한 기능 임베딩인 Dexter를 도입한다.
  • Dexter 임베딩을 사용해 각 기능에 대한 관련 레이블 토큰의 집합을 예측하기 위해 극단적 다중 레이블 학습(XML) 모델을 훈련한다.
  • 레이블의 장꼬리 분포를 다루기 위해 반감독 학습 전략을 사용하여, 높은 희소성에도 불구하고 레이블당 충분한 훈련 샘플을 확보한다.
  • 10,047개의 스트립드 바이너리로 구성된 데이터셋에서 정밀도를 주요 메트릭으로 사용해 모델을 평가한다.
  • 기존 바이너리 코드 임베딩(예: Asm2Vec, SAFE, PalmTree)과의 비교를 통해 Dexter가 기능 이름 토큰 예측에서 일관되게 뛰어난 성능을 보임을 보여준다.

실험 결과

연구 질문

  • RQ1기능 이름을 토큰으로 분해함으로써 바이너리 기능 이름 예측에서 클래스 불균형 문제를 줄이고 모델 일반화 성능을 향상시킬 수 있는가?
  • RQ2정적 분석, 로컬 호출 컨텍스트, 및 글로벌 바이너리 구조를 통합한 기능 임베딩이 기능 이름 예측 성능에 어느 정도 기여하는가?
  • RQ3매우 불균형한 이름 분포를 가진 바이너리에서 극단적 다중 레이블 학습이 기존 단일 레이블 분류보다 우수한가?
  • RQ4기존 바이너리 코드 임베딩과 비교했을 때, 제안된 Dexter 임베딩은 기능 이름 토큰 예측 성능에서 어떤가?
  • RQ5모델은 훈련 중에 본 적 없는 기능, 특히 고유하거나 희귀한 이름을 가진 기능의 이름을 일반화하여 예측할 수 있는가?

주요 결과

  • XFL은 10,047개의 바이너리로 구성된 Debian 데이터셋에서 83.5%의 정밀도를 기록하며, 기능 이름 예측 분야에서 최신 기술을 크게 뛰어넘는다.
  • 토큰화 이후의 레이블 분포는 전체 기능 이름 분류 대비 훨씬 더 균형 잡힌 분포를 보이며, 장꼬리 문제를 줄인다.
  • Dexter 임베딩은 평가된 모든 기존 바이너리 코드 임베딩(예: Asm2Vec, SAFE, PalmTree)을 일관되게 초월하여 기능 이름 토큰 예측에서 뛰어난 성능을 보인다.
  • Dexter에서 정적 분석 특징과 로컬, 글로벌 컨텍스트를 통합함으로써, 문법적 특성만 또는 원시 명령어 기반 임베딩보다 더 의미적으로 유의미한 기능 표현을 얻을 수 있다.
  • XFL은 훈련 세트에 존재하지 않는 기능의 이름 토큰을 성공적으로 예측하여, 훈련 중에 보지 않은 기능 이름으로의 일반화 능력을 입증한다.
  • 함수의 구조가 변형되더라도 의미적 및 문법적 특징이 충분히 유지되어 있다면, 모델은 일반적인 오브스커레이션 기법에 대해 안정성을 유지한다.

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

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

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

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