가격 99% 폭락·무한발행... 디파이 공격 살펴보니
헥슬란트 리서치센터 디파이 보고서
이 기사를 공유합니다
함지현
함지현 2021년 7월24일 14:25
출처=코인데스크코리아
출처=코인데스크코리아

디파이(DeFi, 탈중앙화금융) 서비스를 노린 공격을 막기 위해 디파이의 핵심 알고리즘인 스마트계약에 취약점이 있는지 점검해야 한다는 지적이 제기됐다.

헥슬란트 리서치센터가 이달 '보안사고 사례로 알아보는 디파이 생태계 취약점' 보고서를 발간했다. 헥슬란트 리서치센터는 모듈화된 기능을 레고처럼 조립하는 디파이 특성상 보안 위험성이 높으며, 이런 위험성은 대중이 디파이에 접근하는데 걸림돌이 된다고 지적했다.

이번 보고서는 ▲스마트계약 ▲오라클 ▲포크 등 주요 위험 요소를 진단하고, 이를 노린 공격이 어떻게 진행됐는지 분석했다.

 

스마트계약 위험

스마트계약 위험은 코드가 설계된 의도와는 다르게 실행되거나 스마트계약 프로그래밍에 결함이 생기거나, 공격자가 취약점을 악용할 경우 발생한다.

보고서에 따르면, 스마트계약을 겨냥한 대표적인 해킹 사례는 렌드프닷미 해킹, 커버 프로토콜 로직 버그 공격 등이 있다.

이더리움 기반 디파이 대출 프로토콜 '렌드프닷미(Lendf.me)'는 2020년 4월19일 재진입성 공격으로 인해 약 300억원에 달하는 피해를 입었다. 재진입성 공격이란, 먼저 요청한 거래가 처리되기 전 다른 새로운 거래를 시도하는 이중 처리 시도로 프로젝트의 잔고를 바닥내는 방식이다.

공격자는 렌드프닷미 유동성 풀(머니마켓)에 입금 주문을 넣은 후 후크(본래 함수 진행 중간에 다른 함수를 호출하고 이를 처리하는 것)를 발생시켰다. 주문이 이중으로 들어간 것이다. 실제로 돈이 빠져나갔음에도 인출 주문이 머니마켓에 반영되지 않았다. 그 결과, 공격자는 본인의 잔액이 없음에도 계속해서 출금 주문을 호출해 토큰을 탈취할 수 있었다.

커버 프로토콜은 2020년 12월 스마트계약의 근간이 되는 로직에서 발생한 버그로 커버(COVER) 토큰이 4000경개까지 무한 발행됐다. 디파이에 대한 공격으로 인한 손실을 구제하는 디파이 보험 프로토콜이 오히려 공격을 받은 것이다. 

보고서에 따르면, 커버 프로토콜 계약은 특정 상황에서 정합성(데이터가 서로 모순이 없이 일관되게 일치하는 것)이 훼손되는 로직 버그를 안고 있었다. 로직 버그는 코드 설계에서 발생한 실수를 의미한다. 

공격자는 이를 이용해 커버 프로토콜의 메모리(임시 저장 공간)와 스토리지(영구 저장 공간)간 데이터 차이를 이용해 커버 토큰을 추가로 발행되게끔 했다. 커버 프로토콜은 커버 토큰을 리워드로 지급할 때 참조 데이터를 임시 저장공간인 메모리에서 가져왔다. 그 과정에서 코드 오류로 스토리지에는 지급된 보상 수량이 반영됐으나, 메모리에는 그 내용이 누락됐다. 이로써 보상이 추가로 발행된 것이다. 

렌드프닷미 재진입 공격 다이어그램. 출처=헥슬란트 리서치센터
렌드프닷미 재진입 공격 다이어그램. 출처=헥슬란트 리서치센터

오라클 위험

오라클은 스마트계약에 필요한 외부 데이터를 수집해서 블록체인에서 입력하는 데이터 피드로, 외부 세계와 블록체인을 이어주는 다리 역할을 한다. 그런데 오라클이 부정확하거나 조작된 데이터를 넣을 경우, 아무리 스마트계약 코드가 완벽하다 할지라도 문제가 생길 수 있다. 이를 오라클 위험이라고 한다. 

보고서는 오라클 위험으로 플래시론 공격을 예시로 들었다.

최지혜 헥슬란트 리서치센터장은 "플래시론 공격은 해킹은 아니지만 외부의 시세조종으로 디파이 계약 결과가 조작될 수 있기에 오라클 위험으로 분류했다"며 "공격자가 공격하려는 AMM이 어디의 가격을 참조하는지 알게 되면 인위적으로 풀의 교환 비율을 조작해 정상적인 가격 비율을 훨씬 벗어난 가격으로 주문을 체결할 수 있다"고 설명했다. 

플래시론은 무담보 대출을 받고 블록 1개가 생성되는 시간에 서로 다른 시장의 재정 거래를 통해 차익을 실현할 수 있는 기술이다. 다만, 이용자가 차익거래로 얻은 이익이 상환해야 할 이자보다 적을 경우 거래가 무효화되는 롤백(현재의 데이터가 유효하지 않거나 망가졌을 때 기존 데이터로 되돌리는 행위) 상태가 된다. 

보고서에 따르면,  공격자들은 무담보로 대규모 대출을 받아 시장 조작을 하는 식으로 플래시론 공격을 일으키며, 그 과정에서 AMM 알고리즘을 이용한다. 

AMM은 두 개의 암호화폐가 거래쌍을 이뤄 유동성 풀을 구성한다. 누군가 AMM 내 한 토큰의 가격을 순간적으로 무너뜨리면 나머지 거래쌍 토큰과의 교환 가치가 변한다. 이로 인해 그 무너뜨린 사람은 막대한 양의 거래 토큰을 얻는 구조다. 

플래시론 공격 과정을 간단하게 정리하면 다음과 같다

  1. 무담보로 대규모 대출
  2. 시장 조작
  3. AMM의 거래쌍을 무너뜨려 비이상적 수익 확보
  4. 3단계 수익 극대화 혹은 상환 자산으로 스왑
  5. 1단계 대출 상환
  6. 수익 실현

플래시론 공격이 실제로 일어난 사례가 팬케이크버니 파이낸스 폭락 사태다. 팬케이크버니는 바이낸스 스마트 체인(BSC) 기반 디파이 프로토콜로, 이자농사(Yield Farming) 최적화 서비스를 제공한다. 2021년 5월 AMM 팬케이크 스왑을 통한 플래시론 공격으로 팬케이크버니의 토큰 버니(BUNNY)의 가격이 99%나 폭락했다.

보고서에 따르면, 공격자는 BSC 기반 팬케이크스왑의 유동성 풀 7개와 디파이 대출 플랫폼 포튜브를 통해 랩드 바이낸스코인(WBNB)과 BUSD-T(BUNNY와 스테이블코인 테더(USDT)와 1:1 가치를 지니는 토큰)을 플래시론으로 빌렸다. 

이후 해커는 플래시론의 대출 기간이 끝나는 짧은 시간 동안 팬케이크버니가 발행한 AMM의 BUNNY와 BUSD-T 거래 쌍이 있는 유동성 풀에서 BUSD-T 가격을 순간적으로 무너뜨려 막대한 양의 BUNNY 토큰을 얻었다. 그 결과, 전체 물량의 약 69%에 달하는 660만개가 넘는 BUNNY 토큰이 1분만에 팔렸다.  

출처=헥슬란트 리서치센터
출처=헥슬란트 리서치센터

 

포크 위험

포크는 개발자들이 소스코드를 통째로 복사해 독립적인 블록체인을 개발하는 것이다.

디파이 생태계는 코드를 투명하게 공개하는 만큼, 뱀파이어 공격에 노출될 수 있다. 누군가가 어떤 서비스의 코드를 복제해 스마트계약까지 동일한 서비스를 선보이는 게 가능하다는 의미다. 유사 서비스를 만든 후 자체 토큰을 발행해 해당 플랫폼으로 거래량과 사용자를 흡수하는 경우도 발생한다.

보고서는 셰프노미(ChefNomi)가 2020년 8월 유니스왑의 오픈소스 코드를 바탕으로 스시스왑을 구현한 일을 대표 사례로 들었다. 셰프노미는 이더리움 블록당 자체 토큰인 스시(SUSHI)를 1000개 제공하는 인센티브를 신세틱스(SNX)-ETH , 와이언파이낸스(YFI)-ETH 등 유동성 풀에 배포했다. 그 결과, 스시스왑은 유니스왑의 유동성 중 약 55%를 가져오는 데 성공했다.

그렇다면 디파이 취약점을 막는 방법은 무엇이 있을까.

보고서는 디파이 플랫폼 사업자에게 ▲실시간 시장 모니터링 ▲분산형 오라클 적용 ▲스마트계약 검사 ▲다중 서명 계약 또는 로직 적용 등을 제안했다. 

특히 분산형 오라클을 사용할 경우 플래시론 피해를 최소화할 수 있다는 게 연구진의 의견이다. 분산형 오라클은 다양한 탈중앙화 거래소(DEX)와 외부 프로토콜 시세를 토대로 가격 피드를 형성한다. 스마트계약이 의지하는 데이터 전부가 오염될 가능성이 낮은 것이다

최지혜 센터장은 "공격자가 디파이 설계의 허점을 이용해 자금을 탈취하더라도 합의된 코드가 실행된 것인 만큼 제재 대상을 특정하기 어렵다"며 "이를 대비하기 위해 스마트계약과 관리 절차의 취약점을 점검해 사고 위험을 최소화해야 한다"고 조언했다.     

제보, 보도자료는 contact@coindeskkorea.com



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.