[논문 리뷰] A Cross-Architecture Instruction Embedding Model for Natural Language Processing-Inspired Binary Code Analysis
이 논문은 x86와 ARM과 같은 다양한 지시어 집합 아키텍처(ISA) 간의 의미적 유사성을 포괄하는 교차 아키텍처 지시어 임베딩을 생성하기 위한 공동 학습 모델을 제안한다. 내부 아키텍처 맥락과 교차 아키텍처 의미 동치성의 두 가지 요소를 활용함으로써, 통계적 기반 모델보다 우수한 성능을 보이는 고품질의 임베딩을 달성하였으며, 교차 아키텍처 기본 블록 유사성 비교에서 AUC 0.90을 달성하였다.
Given a closed-source program, such as most of proprietary software and viruses, binary code analysis is indispensable for many tasks, such as code plagiarism detection and malware analysis. Today, source code is very often compiled for various architectures, making cross-architecture binary code analysis increasingly important. A binary, after being disassembled, is expressed in an assembly languages. Thus, recent work starts exploring Natural Language Processing (NLP) inspired binary code analysis. In NLP, words are usually represented in high-dimensional vectors (i.e., embeddings) to facilitate further processing, which is one of the most common and critical steps in many NLP tasks. We regard instructions as words in NLP-inspired binary code analysis, and aim to represent instructions as embeddings as well. To facilitate cross-architecture binary code analysis, our goal is that similar instructions, regardless of their architectures, have embeddings close to each other. To this end, we propose a joint learning approach to generating instruction embeddings that capture not only the semantics of instructions within an architecture, but also their semantic relationships across architectures. To the best of our knowledge, this is the first work on building cross-architecture instruction embedding model. As a showcase, we apply the model to resolving one of the most fundamental problems for binary code similarity comparison---semantics-based basic block comparison, and the solution outperforms the code statistics based approach. It demonstrates that it is promising to apply the model to other cross-architecture binary code analysis tasks.
연구 동기 및 목표
- 원천 코드가 제공되지 않는 전용 및 크로스 컴파일된 바이너리 분석의 과제를 해결하기 위해.
- 지시어 집합 아키텍처 간의 문법적 및 구조적 차이가 바이너리 코드의 의미적 비교를 어렵게 하는 문제를 해결하기 위해.
- 아키텍처 간 의미적 유사성을 유지하는 통합된 지시어 표현 방식을 개발하여 강력한 교차 아키텍처 분석을 가능하게 하기 위해.
- 의미 기반 기본 블록 비교라는 기본적인 바이너리 코드 유사성 작업에서 지시어 임베딩의 유용성을 입증하기 위해.
- 학습된 모델이 한 아키텍처에서 학습된 후 다른 아키텍처로의 이식성을 가능하게 하기 위해 의미론적으로 불변인 표현 방식을 학습하기 위해.
제안 방법
- 동일 아키텍처 내 맥락(지시어 시퀀스의 슬라이딩 윈도우를 통한)과 교차 아키텍처 의미 동치성(다른 아키텍처의 지정된 지시어 쌍을 통한)을 동시에 최적화하는 공동 학습 프레임워크를 사용하기 위해.
- 동일 아키텍처 내에서 인접한 지시어를 예측하기 위해 신경망을 학습함으로써, 국소적인 문법적 및 의미적 패턴을 학습하기 위해.
- x86 및 ARM 바이너리에서 유사한 의미를 지닌 지시어 쌍을 사용하여, 서로 다른 아키텍처 간에 의미적으로 동치인 지시어의 임베딩 간 거리를 최소화하도록 동시에 학습하기 위해.
- 각 기본 블록을 지시어 임베딩의 합으로 표현함으로써, 블록 수준 비교를 위한 코사인 유사도 계산을 가능하게 하기 위해.
- 사전 학습된 지시어 임베딩을 활용하여, 문서/문장 임베딩에 대한 기존 NLP 기법을 따르며 기본 블록에 문장 유사 표현을 구성하기 위해.
- 의미적으로 동치인 지시어가 서로 다른 아키텍처에서 가까이 위치하도록 임베딩 공간을 학습하기 위해 시아미즈 유사 아키텍처를 적용하기 위해.
실험 결과
연구 질문
- RQ1x86와 ARM과 같은 서로 다른 지시어 집합 아키텍처 간에 의미적으로 동치인 지시어가 가까이 위치하도록 하는 통합된 임베딩 공간을 학습할 수 있는가?
- RQ2내부 아키텍처 맥락과 교차 아키텍처 정렬을 공동으로 학습하는 방식이, 각 신호를 별도로 학습하는 것보다 지시어 임베딩 품질을 얼마나 향상시키는가?
- RQ3학습된 지시어 임베딩이 교차 아키텍처 바이너리 코드 유사성 작업(예: 기본 블록 비교)에 얼마나 잘 일반화되는가?
- RQ4기존의 통계적 특징 기반 접근 방식(예: 지시어 수, 상수 수)보다 모델이 의미적으로 유사한 기본 블록을 탐지하는 데 얼마나 뛰어난가?
- RQ5학습된 임베딩은 아키텍처 간에 얼마나 이식 가능한가? 즉, 한 아키텍처에서 학습된 분류기가 다른 아키텍처에 그대로 적용될 수 있는가?
주요 결과
- 제안된 교차 아키텍처 지시어 임베딩 모델은 교차 아키텍처 기본 블록 유사성 비교 작업에서 AUC 0.90을 달성하였으며, 통계적 기반 모델(AUC = 0.85)보다 뚜렷이 뛰어난 성능을 보였다.
- x86의 `SUBQ RSP,0`와 ARM의 `SUB SP,SP,0`와 같은 의미적으로 동치인 지시어 쌍의 임베딩 간 거리가 가까운 것으로 나타나, 모델이 아키텍처 간 의미 동치성을 효과적으로 포착하고 있음을 입증하였다.
- 내부 아키텍처 맥락과 교차 아키텍처 정렬을 공동으로 학습하는 방식은 각 신호를 별도로 학습하는 것보다 더 강건하고 일반화 능력이 뛰어난 지시어 임베딩을 도출한다.
- 모델의 임베딩은 의미론적 의미를 아키텍처 간 차이를 고려하여 유지하므로, 취약점 탐지 및 악성코드 분석과 같은 후행 작업에 효과적이다.
- 모델의 아키텍처는 전이 학습을 가능하게 하며, 예를 들어 x86에서 학습된 분류기가 ARM에 대해 최소 또는 전혀 적응 없이 그대로 적용될 수 있다. 이는 공유된 의미론적 표현 공간 덕분이다.
- 구현 코드, 데이터셋, 학습된 모델은 GitHub에 공개되어 있어 재현성과 교차 아키텍처 바이너리 분석 분야의 향후 연구를 촉진한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.