Skip to main content
QUICK REVIEW

[논문 리뷰] Extending Source Code Pre-Trained Language Models to Summarise Decompiled Binaries

Ali Al-Kaswan, Toufique Ahmed|arXiv (Cornell University)|2023. 01. 04.
Software Engineering Research인용 수 5
한 줄 요약

이 논문은 컴파일러 최적화 수준에서의 214만 개의 복원된 함수-문서화 쌍을 포함한 새로운 데이터셋인 CAPYBARA를 사용하여, 복원된 바이너리 함수를 요약하기 위해 미세조정된 CodeT5 모델인 BinT5를 소개한다. BinT5는 복원된 코드에서 BLEU-4 점수 60.83, 가공된 복원된 코드에서 BLEU-4 점수 44.21을 기록하여, 사전 훈련된 소스 코드 모델이 식별자 수축으로 인한 성능 저하가 최소화된 상태에서 바이너리 역공학에 효과적으로 확장될 수 있음을 보여준다.

ABSTRACT

Reverse engineering binaries is required to understand and analyse programs for which the source code is unavailable. Decompilers can transform the largely unreadable binaries into a more readable source code-like representation. However, reverse engineering is time-consuming, much of which is taken up by labelling the functions with semantic information. While the automated summarisation of decompiled code can help Reverse Engineers understand and analyse binaries, current work mainly focuses on summarising source code, and no suitable dataset exists for this task. In this work, we extend large pre-trained language models of source code to summarise decompiled binary functions. Furthermore, we investigate the impact of input and data properties on the performance of such models. Our approach consists of two main components; the data and the model. We first build CAPYBARA, a dataset of 214K decompiled function-documentation pairs across various compiler optimisations. We extend CAPYBARA further by generating synthetic datasets and deduplicating the data. Next, we fine-tune the CodeT5 base model with CAPYBARA to create BinT5. BinT5 achieves the state-of-the-art BLEU-4 score of 60.83, 58.82, and 44.21 for summarising source, decompiled, and synthetically stripped decompiled code, respectively. This indicates that these models can be extended to decompiled binaries successfully. Finally, we found that the performance of BinT5 is not heavily dependent on the dataset size and compiler optimisation level. We recommend future research to further investigate transferring knowledge when working with less expressive input formats such as stripped binaries.

연구 동기 및 목표

  • 복원된 바이너리 함수 요약을 위한 데이터셋과 모델의 부족이라는 문제를 해결하기 위해, 바이너리 역공학 분야에서 중요한 격차를 메우기 위해.
  • 특히 CodeT5를 포함한 사전 훈련된 소스 코드 언어 모델을 활용하여 복원된 바이너리 함수의 자연어 요약을 생성하기 위해.
  • 입력 형식(예: 복원된 코드 대비 스크립트화된 코드), 컴파일러 최적화 수준, 데이터 품질(예: 중복, 식별자 제거)이 요약 성능에 미치는 영향을 조사하기 위해.
  • 훈련 및 평가를 위한 기준 데이터셋인 CAPYBARA를 구축하기 위해.
  • 소스 코드 NLP 기법이 복원기 출력의 낮은 표현력과 문법적으로 빈약한 출력에 어떻게 적용 가능한지 탐색하기 위해.

제안 방법

  • 다양한 컴파일러 최적화 수준에서의 오픈소스 프로젝트에서 유래한 214만 개의 정렬된 복원된 함수와 문서화 쌍으로 구성된 대규모 데이터셋인 CAPYBARA를 구축하였다.
  • 실제 역공학 환경의 도전 과제를 시뮬레이션하기 위해 식별자를 제거하고 중복 항목을 제거하여 '디미-스트립드(demi-stripped)' 버전의 CAPYBARA를 개선하였다.
  • CAPYBARA에서 CodeT5 base 모델을 미세조정하여 복원된 바이너리 함수 요약을 위한 순서-순서 트랜스포머 모델인 BinT5를 훈련시켰다.
  • 표준 평가 지표(BLEU-4, ROUGE, BERTScore)를 사용하여 BinT5의 성능을 평가하고, 스크립트화된 코드 및 가공된 코드를 포함한 다양한 입력 유형에 대한 성능을 분석하였다.
  • 모델의 강건성과 데이터 효율성을 평가하기 위해 데이터셋 크기, 중복 수준, 컴파일러 최적화 영향에 대한 분석을 수행하였다.
  • 소스 코드 사전 훈련된 모델을 복원된 바이너리 도메인에 적응시키기 위해 전이 학습을 활용하여, 학습된 의미적 및 문법적 패턴을 활용하였다.
Figure 2 : Data Collection Pipeline
Figure 2 : Data Collection Pipeline

실험 결과

연구 질문

  • RQ1사전 훈련된 소스 코드 언어 모델을 복원된 바이너리 함수 요약에 효과적으로 미세조정할 수 있는가?
  • RQ2복원된 코드에서 식별자의 유무가 코드 요약 모델의 성능에 어떤 영향을 미치는가?
  • RQ3컴파일러 최적화 수준이 복원된 코드의 품질과 이후 요약 성능에 어떤 영향을 미치는가?
  • RQ4데이터 중복과 데이터셋 크기의 영향을 바이너리 코드 요약 맥락에서 모델이 얼마나 민감하게 반응하는가?
  • RQ5복원된 코드에서 훈련된 모델이 스크립트화되거나 가공된 바이너리 코드로 일반화될 수 있는 정도는 어느 정도인가?

주요 결과

  • BinT5는 복원된 코드에서 최고 성능을 기록한 BLEU-4 점수 60.83을 기록하여 표준 코드 요약 벤치마크에서 뛰어난 성능을 보였다.
  • 가공된 복원된 코드에서 BLEU-4 점수 44.21을 기록하여 성능 저하가 있음에도 불구하고, 문법적 표현력이 감소한 상황에서도 효과적으로 작동함을 시사했다.
  • 스크립트화된 코드에서는 성능이 크게 떨어졌지만, BinT5는 '디미-스트립드' 코드(식별자가 제거된 복원된 코드)에서 BLEU-4 점수 58.82를 기록하여 식별자 복원이 모델 성공에 핵심적임을 시사했다.
  • 데이터 중복에 대해 강건함을 보였으며, 중복은 성능에 다소 영향을 주지만 결정적인 영향은 없었고, 이는 고품질 데이터가 양보다 더 중요함을 시사했다.
  • CAPYBARA 데이터셋의 일부만으로도 BinT5가 효과적으로 미세조정되었으며, 이는 강력한 데이터 효율성과 자원이 제한된 환경에서의 잠재력을 보여주었다.
  • 본 연구는 소스 코드 사전 훈련된 모델이 복원된 바이너리로 성공적으로 확장될 수 있음을 확인하였으며, 바이너리 역공학에 코드 요약 기법을 적용한 최초의 사례이다.
Figure 4 : Tokens in source C and decompiled code
Figure 4 : Tokens in source C and decompiled code

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

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

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

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