Who owns Web3? — 스마트 컨트랙트와 통제권
요약
본 글은 스마트 컨트랙트(Smart Contract)의 전반적인 개념과 통제권로부터 파생된 문제 사례들을 짚어보고, 이를 통해 거버넌스와의 상관관계에 대해 살펴봅니다.
스마트 컨트랙트의 정의
스마트 컨트랙트(Smart Contract)란, 블록체인 상에서 실행할 수 있는 자동화된 형태의 계약을 의미합니다. Ethereum이 등장하기 전까지의 블록체인은 활용범위가 제한적이었지만, Ethereum이 스마트 컨트랙트라는 기능을 가지게 되면서 다방면으로 블록체인을 활용하는 시도가 생겨났습니다.
스마트 컨트랙트에는 크게 두 종류가 있습니다. 한번 배포되고 나면 수정이 불가능한 컨트랙트가 있고, Delegatecall을 활용해 업그레이드 가능한 컨트랙트(Upgradable contract)와 같이 배포 이후에도 수정이 가능한 컨트랙트가 있습니다.
스마트 컨트랙트의 쓰임새 및 사례
스마트 컨트랙트는 중앙화된 서버 없이 블록체인에서 금융 상품이나 서비스를 구현할 수 있도록 하는 핵심 기술입니다. 대표적인 이용 사례로는 DeFi(Decentralized Finance) 및 NFT 시장의 온체인(On-chain) 구현을 들 수 있습니다. DeFi의 다양한 상품의 거래 및 유동화/비유동화, 각 NFT별 특성 설정 및 발행에 관여합니다.
스마트 컨트랙트의 통제권
앞서 언급했듯 스마트 컨트랙트는 블록체인 사용성의 가장 중요한 부분을 차지합니다. 그렇다면, 스마트 컨트랙트는 대체 누가 관리하고 배포하는 것일까요?
Ethereum 상에 존재하는 계정은 두 가지로 분류됩니다.
EOA(Externally Owned Account)
CA(Contract Account)
서비스 제공자, 프로젝트 혹은 재단은 EOA를 통해 자신의 프로젝트 내에서 사용될 작성된 스마트 컨트랙트를 배포합니다. 배포된 스마트 컨트랙트는 이용자들의 거래 자동화에 사용되며, 프로젝트 내의 사용성에 크게 기여합니다. 스마트 컨트랙트 개발자는 컨트랙트에 통제권(Ownership) 기능을 추가해 특정 소유자 계정에게 컨트랙트 관리 권한을 부여하도록 할 수 있습니다. 소유자(Owner)는 일반적으로 초기 스마트 컨트랙트 배포자의 계정으로 설정되지만, 여러 명의 소유자를 추가하거나 통제권 포기로 인해 소유자가 존재하지 않을 수도 있습니다. 컨트랙트에 통제권 기능이 존재하지 않거나 통제권이 소멸하여 특정 계정이 특수한 권한을 가지지 않는 경우, 해당 컨트랙트는 탈중앙화되었다고 볼 수 있습니다.
탈중앙화의 장단점
대개 스마트 컨트랙트는 프로젝트 및 재단의 주체가 관리하지만, NFT의 경우 개인이 관리하기도 합니다. 하지만 이는 탈중앙화의 특성과는 부합되지 않는 듯 보입니다. 특정 주체가 스마트 컨트랙트를 관리 및 유지/보수를 한다는 것은 양날의 검이 될 수 있습니다. 블록체인 시스템 철학의 맥을 관통하는 핵심은 탈중앙화와 개인의 권리인데, 스마트 컨트랙트를 특정 주체가 장악하게 된다면 중요한 가치를 잃게 될 수도 있기 때문입니다.
토큰을 발행하는 프로젝트들은 토큰을 할당받아 프로젝트의 건전성과 발전성을 유지하는 동시에 토큰 가치의 상승을 통해 이익을 발생시키는 데 목적을 둡니다. 하지만, 프로젝트가 운영하는 서비스의 스마트 컨트랙트의 통제 권한을 프로젝트 측에서만 통제하고 있다면, 그 권한을 통해 러그풀(Rug Pull)과 같은 사기 행위를 자행할 수 있는 위험성도 존재합니다.
스마트 컨트랙트의 통제권에 관한 이슈는 프로젝트 뿐만 아니라 서비스를 이용하는 이용자에게도 매우 중대한 문제입니다.
블록체인은 단일 장애점(Single point of failure)을 회피하기 위한 도구로써 작용할 수 있는데, 만일 스마트 컨트랙트의 통제 권한을 단일 주체가 통제하고 있거나 소유자들이 소수일 경우에는 관리 측면에서는 효율적일 수 있으나 보안 문제가 발생하기 쉽다는 단점이 존재합니다.
스마트 컨트랙트 통제권 취약점과 그 사례
스마트 컨트랙트 통제권 취약점은 공격자가 통제권을 조작하여 컨트랙트를 장악할 수 있는 스마트 컨트랙트의 보안 취약점을 말합니다. 이로 인해 스마트 컨트랙트의 코드, 데이터 또는 자금이 무단으로 변경 및 제한될 수 있으며, 서비스 이용자에게 자금 손실이나 기타 피해를 일으킬 수 있습니다. 스마트 컨트랙트 통제권은 거버넌스와도 밀접한 관련이 있어, 거버넌스 시스템이 장악당했을 때도 통제권과 프로토콜 자산에 대한 피해를 입을 수 있습니다.
Ronin Bridge
첫 번째로는, Axie Infinity로 유명한 Ronin Bridge 해킹 사례가 있습니다. Ronin Bridge는 Axie Infinity를 위한 Ethereum의 사이드 체인(Side-chain)이며, 2022년 3월에 발생한 해킹 사건으로 인해 약 6억 달러 상당의 자산이 탈취되었습니다.
사이드 체인이란? — 사이드 체인은 메인체인의 확장성 개선을 위한 메인 체인에 결합 및 종속되어 있는 체인입니다. 대부분의 사이드 체인은 확장성이 낮은 블록체인의 확장성을 개선하여 보다 높은 가용성을 이용자들에게 제공하기 위해 만들어집니다.
Ronin Bridge는 L1 블록체인처럼 블록을 검증하는 검증자(Validator)가 존재합니다. 사건이 발생하기 전까지 검증자의 수는 9명이었으며, 현재는 검증자의 수를 대폭 늘려 16명이 되었습니다. 사건 발생 당시, 검증자 중 5명 이상이 서명하게 되면 Ronin Bridge의 통제권을 발동할 수 있었는데, 검증자의 자격으로 노드를 운영하고 있던 Sky Mavis(Ronin Network 개발사)는 총 4개의 검증자 노드를 운영했습니다. 사실상, 1명의 검증자 서명이 추가되면 네트워크를 2개의 주체가 장악할 수 있는 구조였습니다.
공격자는 스피어 피싱 공격을 통해 Sky Mavis 직원에게서 검증자 노드에 접근할 수 있는 권한을 획득했고, 이를 통해 4개의 노드를 장악, 이후 백도어를 찾아내 Axie DAO의 검증자 노드의 접근 권한까지 획득하게 됩니다.
총 5개의 검증자 노드 접근 권한을 가지고 있었던 공격자는, 통제 권한을 이용해 네트워크 상의 자산을 탈취할 수 있었습니다.
스피어 피싱이란? — 특정 개인이나 집단을 노리고 공격하는 피싱 기법이며, 공격자는 관계자나 지인인 것처럼 피해자에게 접근합니다. 이메일을 이용한 수법이 가장 많습니다.
시사점
위 사건은 중앙화된 스마트 컨트랙트 통제권의 문제점이 여실히 드러난 해킹 사건으로 볼 수 있습니다. 소셜 해킹이라고도 해석할 수 있지만, Ronin Network를 관장하는 검증자들의 수가 9명보다 많았다면, 혹은 Sky Mavis측이 4개의 검증자 역할을 하지 않았다면 공격자는 네트워크를 장악할 수 없었거나 처음부터 해킹을 피해갈 수 있었을지 모릅니다.
스마트 컨트랙트의 통제권과 거버넌스는 아주 밀접한 관계입니다. 서로 종속되지 않으며, 상호 의존적입니다. 만일 Governance Contract나 Validator Contract를 관리하는 주체가 특정되어 있다면 공격의 위험에 노출될 확률이 높기 때문에, 통제권의 분산화가 중요합니다. 특히 다양한 멀티체인 자산들이 교환되는 장인 Bridge의 경우에는, 통제권의 취약성에 대해 매우 중요한 문제로 다루어야 합니다. Ronin Bridge 해킹의 사례처럼 사실상 2개의 주체가 장악되었을 때 탈취할 수 있게끔 통제권을 설정한 것은 치명적인 보안 문제점으로 볼 수 있습니다.
Ronin Network와 같이 사이드 체인을 구축할 경우, zkEVM처럼 트랜잭션 검증 시 Validator의 의존도가 낮은 확장 솔루션 사용을 고려해보는 것도 방법이 될 수 있습니다.
Curve Finance — 완전히 탈중앙화된 스마트 컨트랙트 통제권
Curve Finance는 탈중앙화 스테이블 스왑 거래소입니다. Curve는 거버넌스 토큰인 CRV만 있다면 누구나 프로토콜의 발전에 대한 제안을 할 수 있으며 투표권을 행사할 수 있습니다. 그리고 DAO 멤버로서, Curve의 스마트 컨트랙트 통제권을 행사할 수도 있습니다. 물론 제안과 투표 과정을 거쳐 반영되는 구조입니다.
Curve는 특이하게 Emergency DAO라는 소그룹 DAO가 존재합니다. Emergency DAO가 하는 역할은 Curve 내의 자금이 훼손될 위험이 있을 때 Curve Finance 내에 존재하는 스마트 컨트랙트의 통제권을 행사할 수 있으며, 이때 인출을 제외한 모든 기능을 비활성화할 수 있습니다.
총 9명의 멤버로 구성된 Emergency DAO가 대부분의 Curve 스마트 컨트랙트의 비활성화 권한을 갖고 있다는 것은, 언뜻 보면 중앙화된 프로토콜이라고 생각할 수 있지만 Emergency DAO는 CRV만 가지고 있다면 누구나 멤버가 될 수 있는 Curve DAO에 의해 제어됩니다.
즉, Curve Finance의 전체적인 통제권은 탈중앙화된 Curve DAO가 가지고 있는 것입니다.
2021년, Emergency DAO가 USDM이라는 스테이블 코인에 게이지(gauge) 부여를 중단시킨 사건이 있었습니다. 해당 사건은 부실한 담보 기반으로 스테이블 코인을 만든 프로젝트에 의한 거버넌스 공격 사건이었습니다. 부실 담보를 바탕으로 발행한 스테이블 코인을 다른 코인으로 교환한 뒤 Curve Finance의 거버넌스를 장악하려는 시도였는데, Emergency DAO가 공격을 알아차리고 해당 풀의 비활성화 권한을 활성화했습니다. 덕분에 해당 풀의 자금이 탈취되는 것을 막을 수 있었습니다.
시사점
위와 같은 사례는 탈중앙화를 바탕으로 한 의사 결정이 잘 작동한 사례라고 할 수 있습니다. 탈중앙화는 모든 사람이 평등한 결과를 낼 수 있는 것이 아니라, 모든 사람이 평등한 참여 기회를 갖는 것입니다. 그러한 측면에서 Curve DAO에 의해 통제되는 Emergency DAO는 탈중앙화의 의사 결정으로 볼 수 있습니다.
교훈과 제안점
DeFi 서비스를 운영하는 프로젝트나 재단이라면 스마트 컨트랙트의 통제권을 탈중앙화 하여 거버넌스 중앙화의 보안 문제점을 회피하는 것이 관건입니다. Layer 2에서 서비스를 하거나 그 서비스가 설령 중앙화가 필요한 Bridge라 하더라도 이러한 지점을 고려해야 합니다. 기술을 이용해 탈중앙화를 달성하는 방법도 있는데 예를 들어, Relic Protocol을 이용해 탈중앙화된 무신뢰성(Trustless) Bridge를 구현할 수 있습니다. Curve Finance와 같은 탈중앙화 금융 프로토콜의 경우에는 그 특성상, 비교적 유동적인 선택을 신속하게 해야할 때가 많기 때문에 다양한 이용자들이 의사결정을 할 수 있는 구조입니다. 따라서, Curve Finance와 같은 프로토콜은 스마트 컨트랙트 통제 권한을 설정할 때 탈중앙성을 고려해야 합니다.
결론
스마트 컨트랙트 통제권은 블록체인과 DApp(Decentralized Application)에 있어 중요합니다. 사용자 보호를 위한 중앙화와 보안 향상을 위한 탈중앙화 사이의 균형을 맞추는 것은 복잡한 과제입니다. 따라서, 프로젝트의 무결성, 신뢰성, 사용자 보호를 위해서는 상황에 따른 스마트 컨트랙트 통제 권한 보안 조치, 지속적인 감사가 필수적입니다.
ChainLight 팀은 스마트 컨트랙트의 통제 권한에 관련된 감사 서비스도 제공합니다.
ChainLight의 최신 감사 보고서는 👉 https://chainlight.io
참고 자료
https://blog.roninchain.com/p/back-to-building-ronin-security-breach
https://gov.curve.fi/t/the-curve-emergency-dao-has-killed-the-usdm-gauge/2307
https://resources.curve.fi/governance/understanding-governance
✨ We are ChainLight!
ChainLight 팀은 풍부한 실전 경험과 깊은 기술 이해를 바탕으로 새롭고 효과적인 블록체인 보안 기술을 연구합니다. 연구 결과를 바탕으로 Web3 생태계의 각종 보안 위험 요소와 취약점을 사전 파악하여 제거하는 혁신적인 보안 감사 서비스를 제공합니다. 보안 감사 이후에도 온체인 데이터 모니터링 및 취약점 탐지 자동화 서비스를 이용한 지속적인 디지털 자산 위험 관리 솔루션을 제공합니다.
ChainLight 팀은 사용자들이 탈중앙화 서비스를 안전하게 활용할 수 있도록 Web3 생태계 위협으로부터의 보호에 힘쓰고 있습니다.
ChainLight의 더 다양한 정보를 보고 싶으시다면? 👉 Twitter 계정도 방문해 주세요.
🌐 Website: chainlight.io | 📩 TG: @chainlight | 📧 chainlight@theori.io
Originally published at https://blog.theori.io on August 14, 2023.