바이너리 프로그램 차등분석(binary program diffing), 즉 단순히 바이너리 디핑(binary diffing)은 두 개의 바이너리 프로그램 간의 유사성을 정량화하여 그 차이를 도출하는 일종의 프로그램 분석 기법이다. 특히 바이너리 디핑은 패치 배포가 폐쇄적이고 제한된 환경으로 인해 복잡한 산업용 제어 시스템에서 취약점과 잠재적 공격 벡터를 밝혀내는 데 필수적인 기법이다. 바이너리 디핑에 관한 연구는 동적 분석 기반, 정적 분석 기반, 신경망 기반 접근법으로 크게 분류할 수 있다. 기존 연구의 각 범주는 제한된 커버리지, 낮은 정확도, 그리고 요청 시 학습(on-demand learning)과 관련된 문제 등 여러 한계를 지닌다. 본 논문에서는 그래프 샘플링-앤-어그리게이트(graph sampling-and-aggregate)를 기반으로 유도(inductive) 코드 표현을 생성하는 계층형 바이너리 디핑 모델인 샘플링-앤-어그리게이션을 적용한 바이너리 디핑을 제안한다. 우리의 모델은 주어진 프로그램의 프로시저 간 제어 흐름 그래프(inter-procedural control flow graph)에서 명령어 수준 임베딩, 기본 블록 수준 임베딩, 함수 수준 임베딩을 순차적으로 생성한 다음, 이러한 임베딩에 기초하여 계층형 코드 디핑을 수행한다. 우리는 상세 모델을 형식적으로 정의하고 계층형 바이너리 디핑의 알고리즘을 제시한다. 또한 이 알고리즘에 대한 철저한 분석을 수행하여 여러 가지 장점을 도출한다. 시제품을 구현하고 대규모 데이터셋에서 버전 간, 최적화 간, 난독화(obfuscation) 조건에서 평가하였다. 그 결과, 우리의 시제품은 함수 및 기본 블록 디핑에서 버전 간 설정 시 각각 최대 0.96과 0.968의 F1-score를 보였으며, 여러 바이너리 난독화에 대해서도 강건함을 입증하였다. 결론적으로, 제어 흐름을 고려하여 기본 블록 및 함수 수준 임베딩을 생성하는 본 제안은 바이너리 디핑에서 견실한 이점을 가지며, 바이너리 변조(bianry tampering)에 대해서도 강건함을 보여준다. • 우리는 바이너리 프로그램에 대해 명령어 수준부터 함수 수준까지의 순차적 임베딩 생성을 정식화한다. • 우리는 계층형 임베딩을 사용하여 함수-대-블록 유사성을 계산하고 코드 디핑을 수행한다. • 우리는 DiffSAGE 시제품을 구현하고 대규모 바이너리 데이터셋에서 평가하여 최첨단 기법보다 우수함을 보여준다.
*본 초록은 AI를 통해 원문을 번역한 내용입니다. 정확한 내용은 하기 원문에서 확인해주세요.