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)만이 함수 변경자로 구현된 스마트 컨트랙트 함수를 호출할 수 있도록 한다.



자세히 보기