전병곤 교수 연구진,
암호화폐 이더리움 핵심 오류를 찾은 퍼징(fuzzing) 기술로 세계 선도
전병곤 교수 및 양영석 박사가 조지아 공과대학 김태수 교수와의 공동연구를 통해 이더리움 컨센서스 버그를 찾는 다중 트랜잭션 차등 퍼저를 개발하였다.
‘플러피’라고 명명된 이 시스템은 철저하게 테스팅 및 관리되는 이더리움에서 극도로 드물게 발생하는 컨센서스 버그 2개를 발견했다. 전병곤 교수 연구진은 버그들을 이더리움 재단에 리포트하였고, 이더리움 개발자들은 버그들을 수정한 새로운 버전의 이더리움 클라이언트를 배포하였다.
버그 리포트 및 수정 4개월 후, 리포트한 버그 중 한개의 버그가 2020년 11월 11일에 이더리움 네트워크에서 발동되었다. 해당 버그는 구버전의 게스(Geth) 이더리움 클라이언트로 하여금 이더리움 블록체인을 하드 포크하게 만들었다.
업데이트를 하지 않고 구버전 게스(Geth) 클라이언트를 사용하던, 가장 큰 이더리움 인프라 서비스인 인퓨라(Infura)가 마비되었으며, 연쇄적으로 메타마스크(MetaMask), 유니스왑(Uniswap), 컴파운드(Compound) 등 주요 이더리움 서비스들이 마비되었다. 그 결과 바이낸스를 포함한 전세계 암호화폐 거래소에서 이더리움 기반 가상자산 서비스가 일시중단되었다. 이 사건은 코인데스크(CoinDesk)와 디크립트(Decrypt) 등 해외 주요 블록체인 언론사에서 집중적으로 보도되었고, 2016년 이더리움 DAO 해킹사건 이후 최악의 사건으로 평가받는다.
블록체인 분야는 실생활의 많은 분야에 빠르게 적용되는 핵심 기술 중 하나다. 블록체인 ‘컨센서스’는 탈중앙화된 클라이언트 노드들이 하나의 블록체인에 합의하는 것이다. ‘컨센서스 버그’는 특정 블록체인 클라이언트로 하여금 블록체인을 하드포크하여, 다른 클라이언트들과 합의하지 못 하게 하는 버그이다. 하드포크가 발생하면 근본적인 블록체인의 불변성과 신뢰성이 깨지기 때문에, 컨센서스 버그를 미연에 방지하는 것이 블록체인 안전성에 매우 중요하다.
이더리움 컨센서스 버그를 찾는 기존 퍼징 방식은 블록체인 스테이트와 한 개의 트랜잭션을 반복적으로 생성하고 테스트하는 방식이다. 하지만 해당 방식은 무한한 컴퓨팅 자원을 사용하더라도, 이더리움 클라이언트 코드 내에 깊이 숨겨진 버그들을 근본적으로 찾지 못하는 한계를 갖는다.
이에 전병곤 교수 연구진은 다중 트랜잭션 차등 퍼저 플러피를 제안했다. 한번에 여러개의 트랜잭션을 연이어서 테스트하여 플러피는 이더리움 클라이언트 코드에 깊이 숨겨진 컨센서스 버그를 찾는다. 시스템 최적화를 통해 플러피는 기존 퍼저와 비교해 510배 이상 퍼징 처리량과 2.7배 이상 코드 커버리지를 달성한다.
전병곤 교수는 "이번에 개발한 퍼저로 기존에 찾는 것이 불가능한 이더리움의 버그를 찾을 수 있었다"며 "세계에서 두 번째로 큰 암호화폐인 이더리움의 안정성을 높이는 매우 영향력인 큰 연구이고 그 공헌을 인정받아 OSDI 논문으로 채택되었다”라고 말했다.
이 연구 결과는 오는 7월 OSDI(USENIX Symposium on Operating Systems Design and Implementation)에서 발표된다.
"Finding Consensus Bugs in Ethereum via Multi-transaction Differential Fuzzing", Youngseok Yang, Taesoo Kim, and Byung-Gon Chun.