MoveScanner: Move 스마트 계약 보안 위험 자동 분석기
초록
본 논문은 Move 언어 기반 스마트 계약의 자원 누수·권한 관리·산술 오버플로우 등 5가지 주요 취약점을 정적 분석으로 탐지하는 도구 MoveScanner를 제안한다. 제어 흐름 그래프와 데이터 흐름 분석, 그리고 크로스 모듈 호출 그래프를 결합해 자원 흐름을 추적하고, 능력 매트릭스 기법으로 허위 양성을 크게 감소시킨다. 벤치마크에서 88.2%의 탐지 정확도를 기록했으며, 12가지 새로운 위험 유형도 정의한다.
상세 분석
MoveScanner는 Move 스마트 계약의 핵심 보안 메커니즘인 리소스 모델과 선형 타입 시스템을 정적 분석의 출발점으로 삼는다. 먼저 바이트코드 수준에서 ControlFlowGraph 클래스를 이용해 기본 블록과 점프 명령을 식별, 전체 프로그램의 모든 실행 경로를 그래프로 구성한다. 이 그래프는 조건 분기와 루프를 정확히 포착함으로써 조건부 자원 누수와 같은 미묘한 버그를 탐지할 수 있다. 이어서 DataFlowAnalysis 모듈이 도달 정의(reaching definitions)와 살아있는 변수(live variable) 분석을 수행한다. 도달 정의 분석은 변수 정의가 프로그램 전역에 어떻게 전파되는지를 워크리스트 방식으로 반복 계산하고, 살아있는 변수 분석은 역방향으로 변수의 사용 가능성을 추적한다. 두 분석 결과는 서로 보완되어, 초기화되지 않은 변수 사용과 동시에 자원의 비정상적인 소멸·복제 여부를 검증한다.
특히 Move의 선형 자원 특성을 고려해 CrossModuleAnalysis 클래스가 전역 호출 그래프와 능력 매트릭스를 구축한다. 호출 그래프는 모듈 간 함수 호출 관계를 노드와 엣지로 표현하고, 능력 매트릭스는 각 모듈이 보유한 권한(ability)과 접근 가능한 자원 타입을 매핑한다. 이를 통해 권한 누수, 무단 접근, 상태 오염 등 단일 모듈 분석으로는 포착하기 어려운 크로스 모듈 취약점을 식별한다. 예를 들어, A 모듈이 특정 Capability를 획득하고 이를 B 모듈에 전달했지만, B 모듈에서 해당 Capability가 적절히 소멸되지 않아 자원 탈취가 가능한 경우를 자동으로 탐지한다.
MoveScanner는 다섯 가지 핵심 취약점 카테고리를 정의한다. ① 리소스 누수 – 자원이 생성된 뒤 적절히 소멸되지 않아 전역 상태에 남는 경우, ② 권한 결함 – Capability가 과도하게 노출되거나 검증되지 않은 경로를 통해 전달되는 경우, ③ 산술 오버플로우 – 정수 연산 시 경계 검증이 누락된 경우, ④ 잘못된 모듈 인터페이스 – 공개 함수가 예상치 못한 타입이나 구조를 반환·수신하는 경우, ⑤ 예외 처리 부재 – panic이나 abort가 발생했을 때 자원 정리 루틴이 실행되지 않는 경우. 각 카테고리는 자원 흐름 추적과 타입 검증을 결합한 규칙 기반 엔진으로 구현되었으며, false positive를 최소화하기 위해 능력 매트릭스와 실행 경로 조건을 교차 검증한다.
실험에서는 Aptos, Sui, Diem 등 세 개의 주요 Move 기반 체인에서 추출한 120여 개의 실제 계약과 공개된 취약점 벤치마크를 대상으로 평가했다. 기존 도구인 MoveCheck와 VerMove가 놓친 30% 이상의 취약점을 포착했으며, 전체 정확도는 88.2%에 달했다. 특히 크로스 모듈 권한 누수와 복합적인 리소스 흐름 오류를 높은 재현율로 탐지한 점이 주목할 만하다. 논문은 또한 기존 연구에서 다루지 않았던 12가지 새로운 위험 유형(예: 일회성 사용 패턴 위반, 리소스 래퍼 오버플로우, 능력 전파 순환 등)을 정의하고, 이를 탐지하기 위한 추가 규칙을 제시한다.
한계점으로는 정적 분석 특성상 동적 환경(예: 런타임 가스 변동, 외부 오라클 호출)에서 발생할 수 있는 일부 버그를 놓칠 수 있다는 점을 인정한다. 향후 연구에서는 형식 검증(formal verification)과 동적 트레이싱(dynamic analysis)을 결합한 하이브리드 프레임워크를 구축해 계약 전체 수명 주기 동안 지속적인 보안 검증을 목표로 한다.
댓글 및 학술 토론
Loading comments...
의견 남기기