최근 발생한 디파이(De-fi, 탈중앙화 금융) 서비스 유니스왑(Uniswap)과 디포스(dForce)에서 발생한 해킹 사고가 ‘예고된 재난’이라는 지적이 나오는 가운데, 해커가 탈취한 자금을 다시 돌려주고 있다. 이를 두고 해커가 디파이 서비스의 보안 취약점을 경고하기 위해 공격을 감행했다는 해석도 나온다.
지난 18일(현지시간) 디파이 서비스 유니스왑(Uniswap)과 디포스(dForce)는 해킹으로 잇따라 자금을 탈취 당했다. 암호화폐 보안 업체 팩실드에 따르면, 유니스왑은 23만 달러(2억 9,000만 원) 가량을, 디포스는 2,500만 달러(305억 원)에 달하는 자금을 탈취 당한 것으로 추산된다. 두 서비스에 대한 해킹 공격은 시간 차를 두고 발생했으나 전문가들은 공격이 연관돼있을 것으로 보고 있다.
유니스왑은 암호화폐를 교환할 수 있는 탈중앙화 교환 플랫폼이다. 일반적인 탈중앙화 거래소(DEX)에선 내가 가진 암호화폐를 구매하려는 다른 이용자가 나타나야 거래가 이루어지지만, 유니스왑은 ‘유동성 풀’에서 좀 더 빠르게 암호화폐를 거래할 수 있도록 한다. 유동성 풀이란 이용자들이 이더리움(ETH)을 비롯한 다른 토큰들을 채워놓은 풀(Pool)을 말한다. 유동성 공급자들은 소액의 거래 수수료를 가져가고, 보유한 암호화폐를 다른 암호화폐로 바꾸려는 이용자는 암호화폐가 채워져 있는 유동성 풀을 이용해 교환한다.
이날 공격 당한 건 유니스왑의 imBTC 유동성 풀이다. imBTC는 비트코인(BTC) 가격을 추종하는 이더리움 기반 토큰으로, 이더리움의 토큰 발행 표준 ERC-777로 발행됐다. ERC-777 자체에는 결함이 없었지만, ERC-777 스마트 컨트랙트와 유니스왑 서비스의 스마트 컨트랙트가 호환되는 과정에 보안 취약점이 있었다. 해커는 이 보안 취약점을 이용해 공격을 감행했고, imBTC 풀에서 자금을 탈취해갔다.
이때 해커가 이용한 공격 방식은 재진입공격(Reentrancy Attack)이다. 재진입공격이란 해커가 토큰을 전송하는 등 특정 행위를 한 다음, 공격 대상이 그 행위를 인식하기 전에 같은 행위를 반복하는 공격 방식을 말한다. 쉽게 말하면 자금을 빼간 뒤 자금이 빠져나간 것이 공격 대상(여기서는 유니스왑)의 데이터베이스에 반영되기 전에 또 자금을 빼가는 형태다.
유니스왑이 공격 받은 사실을 인지한 건 imBTC 유동성 공급자인 토큰론(Tokenlon) 팀이었다. 토큰론 팀은 imBTC를 이용하는 다른 디파이 서비스들에게 이 사실을 알렸지만, 그중 하나였던 디포스의 Lendf.me는 비슷한 공격을 받았다. Lendf.me가 탈취당한 자금은 300억 원대로 유니스왑보다 규모도 훨씬 커졌다.
Lendf.me는 암호화폐를 담보로 맡기고 다른 암호화폐를 대출할 수 있는 랜딩(Lending) 서비스다. 해커는 ERC-777 스마트 컨트랙트와 Lendf.me 서비스의 스마트 컨트랙트가 호환되는 과정에서 발생하는 보안 취약점을 다시 활용했다. Lendf.me에선 imBTC를 맡기고 다른 암호화폐를 대출할 수 있다. 이 때 해커는 imBTC 입금을 명령하는 공급(Supply) 함수 사이에 출금(Withdraw) 함수를 넣어 imBTC를 빼갔고, imBTC가 담보로 입금되는 것처럼 보이게 하면서 실제 입금은 하지 않았다. Lendf.me 서비스 상에선 imBTC 담보가 입금된 것처럼 나타나므로 이 담보를 이용해 다른 암호화폐를 대출할 수 있었다. 또 앞서 빼갔던 imBTC를 담보로 넣어 암호화폐를 대출하는 것도 가능했다. 해커는 이 같은 방식으로 300억 원 어치 암호화폐를 가져갔다.
디파이 서비스들이 당한 이번 해킹은 예측 가능했던 사고였다. ERC-777을 활용하는 과정에서 나타날 수 있는 보안 취약점은 블록체인 기업 컨센시스가 지난해 유니스왑의 스마트 컨트랙트를 감사하는 과정에서 나온 지적이었다.
컨센시스는 지난해 4월 유니스왑 스마트 컨트랙트 감사 결과를 미디엄 블로그에 공지했다. 블로그 글에서 컨센시스는 “토큰 데이터가 업데이트되기 전 재진입공격이 발생할 수 있다”며 “예를 들어 ERC-777 토큰 데이터가 업데이트되기 전 재진입공격이 발생하면 유동성 풀에서 자금을 탈취하기는 더 쉬워진다”고 지적했다.
이에 디파이 서비스들이 스마트 컨트랙트 감사를 더 철저히 받고 리스크를 관리해야 한다는 지적이 나온다. 탈중앙화를 지향하는 디파이 서비스의 특성상, 사람의 관리 대신 스마트 컨트랙트에 의존하기 때문이다.
모종우 그로우파이 공동창업자는 “스마트 컨트랙트에 대한 의존도가 높은 것은 디파이 서비스의 문제점 중 하나”라며 “스마트 컨트랙트의 보안 취약점은 일반 이용자는 물론 개발자도 발견하기 힘들다”고 말했다. 이어 그는 “아무리 탈중앙화를 내세운다 하더라도 운영상 리스크를 줄이기 위해서는 스마트 컨트랙트 감사 등 보험적 장치를 마련해야 한다”고 말했다.
남두완 메이커다오 한국대표도 “스마트 컨트랙트에 대한 의존도를 줄이면 탈중앙성도 줄어들기 때문에 디파이 서비스가 스마트 컨트랙트를 줄이는 것은 어렵다”면서도 “스마트 컨트랙트 감사 같은 보완 장치를 통해 위험을 줄여야 한다”고 강조했다.
눈여겨볼 점은 해커가 탈취한 자금을 다시 돌려줬다는 점이다. 21일 현재 이더스캔에 따르면 해커는 Lendf.me 관리자 지갑으로 자금을 계속 보내고 있다. 현재는 탈취한 자금의 일부를 돌려준 상태이므로 얼마나 돌려줄지는 계속 지켜봐야 한다.
이를 두고 업계에서는 해커가 디파이 서비스의 보안 취약점을 경고할 목적으로 공격을 감행했다는 해석이 나온다. 한 암호화폐 업계 관계자는 "최근 들어 디파이 분야에서 해킹 사건이 자주 발생하고 있는데, 스마트 컨트랙트의 안정성과 피해 보험 등 여러 안전 장치의 부재로 인해 예전부터 우려하던 일이 터진 것"이라며 "이런 우려를 경고하기 위해 공격을 감행했을 수 있다"고 말했다.
/박현영 기자 hyun@decenter.kr
- 박현영 기자
- hyun@decenter.kr