<DAO, 조직 문화를 바꿔다오!> 29편
DAO가 있었는데 없어졌다. 그리고 그 안의 돈도 없어졌다. 농담으로 하는 소리가 아니라 실제로 많은 DAO들이 겪은 일이다. 이익을 기대하고 DAO에 돈을 맡겼던 여러 이용자들의 잔고가 ‘0’이 되어버리는 일들이 발생한 것이다.
최초의 DAO조차 해킹으로 인해 역사의 뒤안길로 사라졌다. 이후에도 여러 DAO들이 코드의 허점을 노린 공격을 받았고 대부분 비슷한 운명에 처했다. 이로 인해 ‘DAO는 안전하지 않다’는 인식이 다소 퍼져 있는 상태다. 조직의 근간을 이루는 코드를 오픈소스 형태로 제공하는 DAO의 특성상 해킹에 노출되기 더 쉽다. 조금이라도 실수가 있을 경우 누군가 그 실수를 악용해 DAO의 설계를 완전히 바꿀 수도 있기 때문이다. 만약 조폐공사 건물의 설계도가 모두에게 공개된다면 이를 본 누군가가 숨겨진 통로를 찾아내 돈을 빼내는 것에 비유할 수 있다.
2013년 이더리움 백서에 등장한 개념인 DAO는 2016년에야 마침내 현실에 모습을 드러낸다. ‘더 다오(the DAO)’가 바로 그 주인공이다. 이더리움 개발자인 스테판 튜얼(Stephan Tual)과 블록체인 공유경제 기업 '슬락잇(Slock.it)' 멤버들은 2016년 4월 더 다오를 설립했다.
더 다오는 금융기관을 거치지 않고 투자자들이 주도하는 벤처펀드를 표방했다. 2016년 5월 총 1만 1000명으로부터 1150만 개의 이더리움(ETH)를 모금했다. 이는 당시 전 세계 가상자산 시장에 유통된 이더리움 중 14%에 해당하며, 약 1억 5000만 달러(약 1933억 500만 원) 상당의 가치를 지녔다.
그렇게 모은 돈은 일종의 자원봉사자인 ‘큐레이터(Curator)’의 검증을 거쳐 공동의 투자에 활용됐다. 큐레이터는 제안서를 제출한 사람들의 신원을 확인하고 그 프로젝트가 합법적인지를 검토한 후에 제안을 ‘투자가 가능한 명단(Whitelist)’에 포함했다. 큐레이터가 벤처캐피털의 심사역처럼 활동한 것이다.
제안에 참여한 구성원들은 투자 성공 시 그 수익을 DAO 토큰으로 분배받았다. DAO 토큰은 1) 의결권을 가진 거버넌스 토큰 2) 투표용 임시 토큰 이렇게 두 가지로 배분됐다. 임시 토큰 보유자는 계약자(Contractor)가 제시한 제안에 투표할 수 있었다. 투자할 의향이 없는 구성원은 임시 토큰을 ETH로 환불할 수 있었다. 그 환불 기능을 ‘SplitDAO(스플릿)’이라고 한다.
문제는 스플릿에서 발생했다. 한 해커가 스플릿의 취약점을 발견하고 재귀호출을 활용한 공격을 감행했다. 스플릿을 요청하고 스플릿이 실행된 상태에서 환불된 ETH가 지급되기 전 스플릿을 요청하는 작업을 반복하는 것이다. 공격은 분산원장에 환불 내역이 업데이트되기 전에 진행됐다. 원래라면 거스름돈이 한 번만 나오는 자판기를 발로 차서 거스름돈을 계속 뱉어내게 하는 것과 유사하다. 그렇게 오작동을 일으켜 해커가 가로챈 금액은 약 360만 ETH 이상, 당시 시가로 5000만 달러에 달했다.
재귀함수 공격을 도식도로 그려보면 다음과 같다.
결과적으로 해커는 탈취한 ETH를 자신의 지갑으로 빼돌리지 못했다. 스플릿 승인 후 48일이 지나야 자금 출금이 가능하다는 안전장치 덕분이었다. 해킹을 당한 사실이 27일 만에 발각됐기에 자금은 그대로 지갑에 남아있었다.
더 다오 이외에도 여러 블록체인 프로토콜이 코드 취약점으로 인한 공격을 받아왔다. 템플 DAO는 이용자가 가격 변동성에 최소한으로 노출되도록 설계된 프로토콜 DAO였으나 역시나 코드에 취약점이 있었다. 2022년 11월 공격자는 스테이킹 콘트랙트의 구 버전을 현재 서비스 중인 스테이킹으로 위조하는 방식으로 230만 달러 상당의 가상자산을 가로챘다.
해킹은 아니지만 코드 실수 인한 피해가 발생한 사례도 있었다. DAO 형태로 운영되는 컴파운드랩스는 2021년 9월 콘트랙트 업데이트 과정에서 발생한 오류로 약 8000만 달러 상당의 COMP 토큰을 과다 지급했다. 컴파운드랩스는 법인이 아니라는 점에서 이용자에게 잘못된 토큰을 반환을 요청할 법적 권한이 없었다.
<표> 코드 실수로 인한 DAO 피해 사례
해킹 기술과 보안 기술의 싸움은 마치 창과 방패의 겨루기를 보는 듯하다. ‘해킹’이 처음으로 범죄와 관련된 용어로 규정된 1975년 이후 창으로 찌르면 방패로 막고, 이를 뚫기 위해 더 강한 창이 나오고 방어하기 위해 더 강한 방패가 나오는 일이 반복되고 있다. 용어가 처음 등장함 1955년에는 ‘기술 노하우 공유’라는 의미가 있던 점을 고려하면 아이러니한 모습이다.
DAO를 포함한 가상자산 생태계로 해킹과의 전쟁을 통해 진화하고 있다. 그러나 위에서 언급한 대로 소스 코드가 공개되는 특성상 완벽한 보안 시스템을 구축하기란 어렵다. 대신 업계는 오딧(코드 감사) 또는 버그 바운티 등으로 코드 오류를 줄여나가고 있다.
코드 오류는 보안을 해치는 주요 요인 중 하나다. 2004년 미국 국립 취약점 데이터 베이스(NVD)에 등록된 프로그램 취약점에 대한 데이터 2500건 중 64%가 코드 오류로 인해 발생했다. 이를 막기 위한 방법으로 오딧(코드 감사)이 주목받고 있다. 오딧은 대상 프로그램의 소스 코드를 읽고 코드의 안정성을 보장하는 제어 기능이 로직 플로우의 주요 위치에 설정되어 있는지를 확인하는 작업이다.
블록체인 및 가상자산 오딧은 기존 오딧과 달리 ▲합의 메커니즘 효율성 ▲개인 키 관리 효능 ▲시스템 확장성 ▲데이터 기밀성 등도 중요하게 점검해야 한다. 이미 블록체인/가상자산 오딧을 전문으로 제공하는 업체들도 존재한다. 서틱, 오픈제플린, 페시미스틱 시큐리티, 해시엑스 등이 대표적인 사례다. 그중 서틱은 웹사이트를 통해 몇몇 DAO에 대한 오딧 결과를 점수로 환산한 데이터를 제공하고 있다.
아래는 ‘코어 다오’에 대한 서틱의 오딧 감사 결과 리포트 이미지이다.
버그 바운티는 소프트웨어의 취약점을 발견하고 이를 제보한 사람(버그 사냥꾼)에게 보상금을 주는 프로그램을 의미한다. 구글, 마이크로소프트, 메타(구 페이스북) 등의 IT 업체들은 버그 사냥꾼에게 적게는 100 달러, 많게는 10만 달러까지 제공한다.
블록체인/가상자산 업계에서는 플레이 투 언(P2E) 게임의 대표주자 ‘액시 인피니티’의 개발사 스카이마비스가 2022년 3월 ‘로닌 브릿지 해킹’ 사태를 통해 약 6억 달러가량을 탈취당한 지 한 달 후인 2022년 4월 스마트 컨트랙트 관련 취약점을 제보한 사람에게 최대 100만 달러의 사례금을 내건 바 있다. 이외에 버그 바운티 프로그램을 전문적으로 진행하는 업체로는 햇츠 파이낸스, 이뮨파이 등이 있다.
[표] 블록체인 전문 오딧 업체
[표] DAO 전문 버그 바운티 프로그램
다음 글에서는 이런 보안 문제 이외에도 발생할 수 있는 거버넌스 공격에 대해 다뤄보고자 한다.