이더리움의 '치명적 오류' 잡았다

전병곤 서울대 교수팀
버그 찾는 시스템 '플러피' 개발

암호화폐 이더리움의 핵심 오류를 발견한 전병곤(왼쪽) 서울대 컴퓨터공학부 교수와 양영석 박사가 웃으며 기념 촬영을 하고 있다.

국내 연구팀이 세계 2위 암호화폐인 이더리움에서 치명적으로 작동하는 핵심 오류를 발견하고 추가로 발생할 수 있는 버그를 찾아내는 시스템을 개발했다.


서울대 공대는 컴퓨터공학부 전병곤 교수와 양영석 박사가 미국 조지아공대 김태수 교수와의 공동 연구를 통해 이더리움 컨센서스 버그를 찾는 다중 트랜잭션 차등 퍼져를 개발했다고 7일 밝혔다.


‘플러피’라고 명명된 이 시스템은 이더리움에서 매우 드물게 발생하는 컨센서스 버그 두 개를 발견했다. 전 교수팀은 이 내용을 이더리움재단에 전달해 수정하도록 했으나 수정한 지 4개월 뒤인 지난해 11월 두 개의 버그 중 한 개가 이더리움 네트워크에서 발동됐다. 해당 버그는 수정 이전 버전의 게스(Geth) 이더리움 클라이언트가 이더리움 블록체인을 기존의 블록체인과는 호환이 되지 않는 새로운 방식으로 변경(하드포크)되도록 만들었다.


이에 따라 업데이트하지 않고 옛 버전 게스 클라이언트를 사용하던 가장 큰 이더리움 인프라 서비스인 인퓨라가 마비됐다. 메타마스크·유니스와프·컴파운드 등 주요 이더리움 서비스도 마찬가지였다. 그 결과 바이낸스를 포함한 세계 암호화폐 거래소에서 이더리움 기반 가상자산 서비스가 일시 중단됐다. 전 교수는 “이 사건은 2016년 이더리움 DAO 해킹 사건 이후 최악이라는 평가를 받는다”고 설명했다.


기존에 이더리움 컨센서스 버그를 찾는 퍼징 방식은 블록체인 스테이트와 한 개의 트랜잭션을 반복적으로 생성하고 테스트하는 것이나 이더리움 클라이언트 코드 내에 깊이 숨겨진 버그들을 근본적으로 찾지 못하는 한계가 있다. 전 교수팀이 다중 트랜잭션 차등 퍼져 ‘플러피’를 제안한 것도 이 때문이다. 플러피는 한 번에 여러 개의 트랜잭션을 연이어 테스트해 이더리움 클라이언트 코드에 깊이 숨겨진 컨센서스 버그를 찾는다. 시스템 최적화를 통해 플러피는 기존 퍼져와 비교해 510배 이상의 퍼징 처리량과 2.7배 이상의 코드 커버리지를 달성한다.


전 교수는 “이번에 개발한 퍼져로 기존에 찾는 것이 불가능했던 이더리움의 버그를 찾을 수 있었다”며 “이더리움의 안정성을 높이는 데 매우 영향력이 큰 연구”라고 설명했다. 이 연구 결과는 오는 7월 OSDI에서 발표될 예정이다.


/고광본 선임기자 kbgo@sedaily.com

<저작권자 ⓒ 서울경제, 무단 전재 및 재배포 금지>