느린 안개 기술: Cover 프로토콜 해킹 간략 분석

느린 안개 안전
2020-12-29 11:16:35
수집
12월 29일, 해킹 공격으로 인해 Cover 프로토콜 토큰 가격이 폭락했다.

2020년 12월 29일, 느린 안개 지역 정보 Cover 프로토콜 가격 폭락에 따라, 느린 안개 보안 팀의 전체 공격 프로세스에 대한 간략한 분석은 다음과 같습니다.

  1. Cover 프로토콜의 Blacksmith 계약에서 사용자는 deposit 함수를 통해 BPT 토큰을 담보로 제공할 수 있습니다;
  2. 공격자는 첫 번째 deposit - withdraw 후 updatePool 함수를 통해 풀을 업데이트하고 accRewardsPerToken을 사용하여 누적 보상을 기록합니다;
  3. 이후 _claimCoverRewards 함수를 통해 보상을 분배하고 rewardWriteoff 매개변수를 사용하여 기록합니다;
  4. 공격자가 첫 번째 withdraw 후에도 소량의 BPT를 담보로 남겨둡니다;
  5. 이때 공격자는 두 번째 deposit을 진행하고 claimRewards를 통해 보상을 인출합니다;
  6. 문제는 rewardWriteoff의 구체적인 계산에서 발생하며, 공격자가 두 번째 deposit - claimRewards를 진행할 때 Pool 값이 memory로 정의됩니다. 이때 memory에서 가져온 Pool은 공격자가 첫 번째 withdraw 시 updatePool로 업데이트한 값입니다;
  7. memory에서 가져온 Pool 값이 오래된 값이므로, 그에 해당하는 accRewardsPerToken 기록도 오래된 값이 miner에 할당됩니다;
  8. 이후 새로운 updatePool을 진행할 때, 공격자가 첫 번째 withdraw 후 풀의 lpTotal이 줄어들었기 때문에, 마지막으로 얻는 accRewardsPerToken은 커지게 됩니다;
  9. 이때 공격자에게 할당된 accRewardsPerToken은 오래된 작은 값이며, rewardWriteoff 계산 시 얻는 값도 작게 나오지만, 공격자가 claimRewards를 진행할 때 사용하는 것은 풀 업데이트 후의 accRewardsPerToken 값입니다;
  10. 따라서 구체적인 보상 계산 시 이 새로운 구형 매개변수 간의 차이로 인해, 큰 값이 계산될 수 있습니다;
  11. 그래서 마지막으로 계산 결과에 따라 공격자에게 보상을 주기 위해 추가로 더 많은 COVER 토큰이 발행되어 COVER 토큰이 증가하게 됩니다.

구체적인 accRewardsPerToken 매개변수 차이 변화는 아래 그림과 같습니다:

image

관련 태그
체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축