ERC20 토큰의 관리 권한을 바로잡을 수는 없을까? (with 취약점)

“zk Capital에서 보내주는 주간 메일(This Week in Blockchain Research Issue #119)에서 하나를 골라 읽어보았다.”

이 글은 2021년 7월 17일 arXiv에 올라온 ‘Rectifying Administrated ERC20 Tokens [1]’ 논문에 관한 내용을 다룬다.


현재 수백만개의 이더리움 스마트 컨트랙트를 통해 수천억 달러에 달하는 자산이 운용되고 있다. 그 중에서도 ERC20 토큰은 이더리움에서 가장 많이 쓰이고 있는 스마트 컨트랙트 유형이다.

이더리움에는 Externally Owned Accounts (EOAs)와 Contract Accounts (CAs), 이 두 가지 유형의 계정이 존재한다.


  1. EOA의 경우 연결된 private key로 제어하며, 다른 EOA나 CA에게 메시지를 보낼 수 있다. 하지만 사용자가 지정한 코드를 실행할 수는 없다.
  2. CA의 경우 사용자가 지정한 코드를 실행할 수는 있지만 owner를 결정하기 위한 private key를 가지진 않는다.

EOA 컨트랙트는 개발자에 의해 배포가 되는데, 이 안에 소유권, 역할 기반의 접근 제어 및 기타 특수 권한에 대한 내용을 수동으로 정의한다. 논문에서는 수많은 스마트 컨트랙트가 OpenZeppelin Contracts 라이브러리의 여러 루틴을 이용하여 위와 같은 내용들을 정의하고 있다고 한다.

최근 연구 자료[2]에 따르면 약 580만 개의 스마트 컨트랙트 중 적어도 210만 개 이상이 OpenZeppelin Contracts 라이브러리의 onlyOwner 함수 변경자(modifier)를 사용하고 있으며, 이는 특정한 유저(ex. owner)만이 함수 변경자로 구현된 스마트 컨트랙트 함수를 호출할 수 있도록 한다.



자세히 보기

The Eye of Horus, 이더리움 스마트 컨트랙트에 대한 공격 탐지 분석 프레임워크

본 내용은 The Eye of Horus: Spotting and Analyzing Attacks on Ethereum Smart Contracts [1] 논문에 대한 내용을 다루고 있다.


이더리움은 블록체인 상 튜링 완전한(turing-complete) 스마트 컨트랙트 개념을 도입함으로써 디지털 자산을 거래하는데에 큰 변혁을 일으켰다. 프로그램의 일종인 스마트 컨트랙트는 블록체인을 거쳐 실행 및 저장되며, 변조 방지(tamper-resistant) 특성으로 인해 한 번 배포되면 수정이 불가능하다.

지난 수 년간 이더리움이 꾸준히 성장해오는 동안 수많은 스마트 컨트랙트들이 배포되었고, 이 가운데 취약한 컨트랙트를 이용해 자금을 탈취하려는 시도들도 꾸준히 발생했다. 많은 사람들에게 잘 알려진 The DAO 해킹 사건이나 Parity wallet 해킹 사건 등으로 인해 상당한 자금이 해커에 의해 도난당하거나 이더리움 블록체인 네트워크 상에 영원히 동결되어 자산을 사용할 수 없는 사태가 벌어지기도 했다.

이러한 상황에 맞춰 스마트 컨트랙트 취약점을 찾기 위해 많은 연구가 이루어졌고 OYENTE, Vandal, VeriSmart, SODA 등 정적, 동적 분석을 이용한 다양한 취약점 탐지 툴들이 생겨났다. 하지만 논문에서는 대부분의 툴들이 스마트 컨트랙트의 바이트 코드 분석에만 초점을 맞추고 있으며, 각 컨트랙트 별 트랜잭션이나 행동들에 관해서는 잘 다루고 있지 않다고 주장하고 있다.

또한, 대부분은 이더리움 클라이언트를 수정해야 하거나, 길고 복잡한 공격 탐지 스크립트를 작성해야 한다는 것을 전제로 하는 경우가 있다고 하며, 공격 탐지 이후에 도난당한 자산에 대해서 직접적으로 추적하는 툴은 없다라고 표현하고 있다.

이 논문의 저자는 위와 같은 내용을 바탕으로 하여 Horus라는 이름의 공격 탐지 프레임워크를 제안하였다. 해당 프레임워크는 이전 블록체인 데이터로부터 스마트 컨트랙트 공격들을 자동으로 탐지하고 분석할 수 있는 기능을 가지고 있다. 또한, 이더리움 계정 간 도난당한 자산의 흐름을 추적하고 정량화 할 수 있는 수단도 제공하고 있다.

그렇다면 이 Horus에 대해 자세히 한 번 들여다보도록 하자.



The Horus Framework

자세히 보기

HM-SMR 드라이브 상 고성능 및 공간 효율성을 달성하는 키-밸류 DB

본 논문[1]에서는 블록체인에 대한 내용을 다루지는 않는다. 블록체인에 대한 개념을 위주로 생각하고 글을 보는 사람이라면 가볍게 읽는 것을 추천한다.



글쓴이의 경우 빅데이터와 블록체인을 연관 지어 무엇인가를 해보고자 열심히 생각은 하고 있지만 분산 네트워크 특성상 용량 문제나 여러 비효율적인 측면 때문에 현실성이 조금 떨어진다는 의견이 많다 보니 아이디어를 생각해내기가 참 어려운 상황이다.

비트코인이나 이더리움과 같은 블록체인 네트워크 환경에서는 LevelDB 같은 키-밸류 데이터베이스를 이용하고 있는데, LevelDB의 경우 주기적인 Compaction(압축)을 진행하다 보니 성능 측면에서 부족한 면이 있다. 이는 블록체인 네트워크 상에서 더 빠르고 확실한 데이터 처리를 위해 개선되어야 할 점이라고 생각한다.

특히 빅데이터를 다루기 위해서 이러한 키-밸류 DB의 성능을 향상할 수 있는 방향을 먼저 찾아보고자 한다. 블록체인 상에서 빅데이터를 효율적으로 다룰 수 있는 아이디어를 찾는 것은 그러한 환경이 먼저 갖춰진 그 후의 일이 될 것 같다.



만약 이도 저도 안 되면 킹공지능을 깊이 공부하는 수밖에 없을 듯하다. 연결할 수 있는 것이 인공지능 밖에 없다.



이 글에서는 HM-SMR 드라이브 상 고성능 및 공간 효율성을 달성하는 키-밸류 DB인 GearDB에 대한 간략한 소개와 아키텍처 정도만 소개할 예정이다. 평가에 대한 요소는 글만으로는 그 가치를 직접 판단하기 어려운 부분이 있어 생략하도록 하겠다.



자세히 보기

블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 분쟁 해결 시스템

혹시 그 외에 또 다른 기능은 없을까? 했는데 있다.



[그림 7] 분쟁 해결을 위한 Sequence diagram



바로 dispute handling (분쟁 해결) 기능이다. 엔티티 중 arbitrator(중재자)가 맡아 진행하는 일로, 만약 구매자가 데이터를 다운로드 받는 동안 문제가 생기는 경우 이를 해결해준다. 하지만 dispute handling에도 예외적인 상황은 있다. 3가지 가능성을 한 번 살펴보자.


우선 첫 번째로, 모두가 만족하는 문제가 없는 경우이다. 구매자가 정상적으로 IPFS와 스마트 컨트랙트를 이용하여 이더리움을 지불하고 데이터를 받았다면 중재자의 개입 없이도 문제 없이 진행될 수 있다.

두 번째는 구매자의 잘못으로 인해 다운로드를 실패한 경우이다. 예를 들어, 다운로드를 받다가 네트워크가 끊겼다던지, 강제 종료되는 상황이 되었다던지 하는 경우 기존의 데이터를 다시 받을 때 가스비 혹은 추가 구매비 등을 지급해야 하는 경우가 생길 수 있다. 구매자가 이러한 상황에 대한 환불 요청을 하는 경우 트랜잭션이 정상적으로 진행되었는지를 확인하여 로그상 문제가 없다면 환불해주지 않는다.

세 번째는 위와 반대인 시스템의 문제로 다운로드를 실패한 경우이다. 분산된 네트워크 특성상 서버가 다운되는 현상은 발생하지 않을 확률이 높지만 일부 share를 가진 네트워크의 서버가 다운되었다던지 혹은 기타 변수로 인해 문제가 생긴 경우 arbitrator는 구매자에게 100% 환불을 해주어야 할 의무가 있다.


자세히 보기

블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 개념과 리뷰 시스템

This is the first story that I published in studying Blockchain. Celebrate it!


디지털 컨텐츠가 증가함에 따라 데이터는 기하급수적으로 증가하고 있다. 특히 연구자 혹은 많은 데이터를 필요로 하는 사람들에게 데이터의 중요성은 더욱더 커지고 있는 상황이다.

이 글에서는 데이터를 공유하는 데 있어 우리가 어떤 부분을 생각해야 하는지, 그리고 현존하는 시스템은 어떤 문제를 가지고 있는지 제시하며 블록체인과 InterPlanetary File System (IPFS)을 이용한 안전한 데이터 공유 플랫폼의 시스템 구조와 시뮬레이션 결과 등을 소개하고 있다 [1].





데이터 공유 (Data sharing)는 연구적 혁신으로부터 최대한의 이익을 얻기 위한 가장 기초적인 단계라고 할 수 있다. 특히, 이 논문에서는 3가지 W를 설명하고 있는데, 바로 what(무엇을), when(언제) 그리고 where(어디서)이다.

즉, 데이터를 공유하는 데 있어 자신이 가지고 있는 혹은 다른 사람으로부터 어떤 데이터를 나눌 것인지, 언제 그 데이터를 나눌 것인지, 그리고 어디서 데이터를 나눌 것인지를 뚜렷하게 고려해보아야 한다는 것이다. 이 부분에 대해서 깊이 생각해보지는 않았지만 데이터를 공유하는 과정에서 보면 당연하면서도 매우 중요하게 작용하고 있는 요소라고 할 수 있다.


자세히 보기