디지털 트윈을 이용한 AArch64 기계어 내 취약점 탐지
요약
AArch64 기계어에서 소스 코드 없이 취약점을 탐지하기 위해 설명 가능한 디지털 트윈 기술을 제안합니다. 디지털 트윈을 통해 프로그램 실행 상태를 재현하고, 클레이니 대수 기반의 심볼릭 규칙을 유한 오토마타로 컴파일하여 취약점을 탐지합니다.
핵심 포인트
- AArch64 기계어 대상의 디지털 트윈 기반 취약점 탐지 기법 제안
- 레지스터, 메모리 등 실행 상태를 보존하는 트레이스 이벤트 활용
- SMT 솔버 없이 유한 오토마타를 통한 효율적인 규칙 스캔
- 정수 오버플로, 널 포인터 역참조, 힙 버퍼 오버플로 탐지 성공
- 탐지 결과에 대한 재현 가능한 설명 제공
본 논문은 소스 코드에 대한 접근 없이 AArch64 기계어(machine code)에서 취약점을 탐지하기 위한 설명 가능한 디지털 트윈(digital twin)을 제안합니다. 디지털 트윈은 프로그램의 구체적인 실행을 재현하며 레지스터(registers), 프로세서 플래그(processor flags), 메모리(memory) 및 활성 할당 블록(live allocated blocks)의 상태를 보존합니다. 각 명령어(instruction)는 명령어 이름, 피연산자(operand) 값 및 명령어 실행 후의 상태를 포함하는 트레이스 이벤트(trace event)로 변환됩니다. 취약점은 테스트가 포함된 클레이니 대수(Kleene algebra with tests) 내의 심볼릭 규칙(symbolic rules)으로 표현됩니다. 각 규칙은 이벤트 시퀀스와 머신 상태(machine state)에 대한 술어(predicates)를 지정합니다. 이 접근 방식은 고립된 안전하지 않은 명령어뿐만 아니라 다단계 실행 패턴(multi-step execution patterns)의 탐지를 가능하게 합니다. 규칙들은 SMT 솔버(SMT solver)를 사용하지 않고 트레이스를 스캔하는 유한 오토마타(finite automata)로 컴파일됩니다. 실험적 평가는 세 가지 CWE 클래스를 다룹니다: 정수 오버플로 (integer overflow, CWE-190), 널 포인터 역참조 (null pointer dereference, CWE-476), 그리고 힙 버퍼 오버플로 (heap buffer overflow, CWE-122). 시스템은 미리 정의된 세 가지 취약점을 모두 탐지하였으며, 안전한 트레이스에 대해서는 보고를 생성하지 않았습니다. 각 탐지 결과에는 트리거된 규칙, 트레이스 위치 및 구체적인 상태 값이 포함되어 재현 가능한 설명을 제공합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기