버거스왑(BurgerSwap) - REKT



해커들이 이번 주에 똑같은 식사를 네 번이나 해서 우리를 정말 망쳐놨습니다.

고전이 정말 싫증 날 수도 있나요?

버거스왑이 최근 몇 주 동안 같은 방법으로 해킹된 프로토콜 피해자 명단의 새로운 자리를 차지했습니다.

시장이 폭락하기 시작하면서부터, 이러한 종류의 해킹이 드라이브-스루 편의점의 이달의 맛이 되었지만, 아직도 프로토콜들은 컨트랙트의 허점이 있는지 완전히 의식하지 못하고 있는 것 같습니다. 이는 마치 두 팔 벌려 해킹을 환영하고 있는 것처럼 보이는데, 이들은 카운터에서 뒤로 돌아서 있으면서 사람들이 비용을 내지 않고 떠나는 것을 놀라워하는 척하고 있습니다.

이것은 가장 쉬운 일도 훌륭하게 망칠 수 있음을 보여줍니다. 버거스왑은 유니스왑의 코드를 복사하기만 하면 됐었는데, 그 와중에 빠진 부분들이 있었습니다.

이 질문은 꼭 해야 할 것 같습니다. 부주의함 때문이었을까요? 아니면 뭔가 조금 더 더러운 이유였을까요?

다시 버거 만드는 거로 되돌아와서,

5월 28일 오전 3시쯤 (UTC+8), 단지 14번의 서빙 만으로 720만 달러가 도난당했습니다.

도둑들은 다음의 것들을 들고 도망쳤습니다:

  • 4,400 WBNB ($160만)
  • 22,000 BUSD ($2만2천)
  • 2.5 ETH ($6천8백)
  • 1,400,000 USDT ($140만)
  • 432,000 BURGER ($320만)
  • 142,000 xBURGER ($100만)
  • 95,000 ROCKS

그리고 각 공격은 이렇게 진행되었습니다:

  1. 팬케이크 스왑에서 6000 WBNB ($200만) 플래시 스왑합니다.

  2. 버거스왑에서 대부분의 WBNB를 92,000 BURGER로 스왑합니다.

  1. 해커들은 그들의 가짜 코인을 만들어서(non-standard BEP-20 토큰), 100개의 가짜 코인과 45,000 BURGER로 된 새로운 거래 페어를 만듭니다.

  2. 100개의 가짜 토큰들을 3번 단계에서 만든 풀을 통해 4,400 WBNB로 스왑합니다.

  3. 공격자는 그다음 45,000 BURGER를 4,400 WBNB로 스왑을 또 한 번 진행합니다.

  1. 공격자는 위의 두 단계를 거쳐 총 8,800 WBNB 를 얻게 되었습니다.

  2. 493 WBNB 를 버거스왑에서 108,700 BURGER 로 스왑합니다.

  3. 플래시 스왑을 상환합니다.

Credit: @FrankResearcher

이 공격은 공격자가 재진입이 가능하였고, 스왑에서 토큰들의 개수를 계산하는 역할을 하는 리저브가 업데이트되기 전에 두 번째 스왑이 가능함으로써 성공적일 수 있었습니다.

흥미롭게도, 이것은 x*y=k 체크가 없었기에 가능했습니다. 오리지널 univ2pair 컨트랙트에는 있지만, 이 경우에는 없어진 상태였습니다.

버거스왑의 개발자들이 코딩할 때 부주의했다고 생각하지는 않지만, 이를 없애고 나서 대체할 무언가를 만들었나요? x*y>k 체크가 없다면 누구든 원하는 아웃풋 사이즈의 스왑을, 인풋 토큰 한 가지로만 지불하면서 진행할 수 있습니다.

이번 주에 BSC 프로젝트들이 해킹당한 숫자는 이미 일반적인 수준을 넘어섰습니다. 이 모든 상황은 작년 가을에 ETH에서 발생했던 상황을 기묘하게 연상시킵니다. 아무도 다시 원치 않았던, 실망스러운 스페셜 오더였죠.

고객들은 거스름돈을 덜 받는 것을 좋아하지 않습니다. 이 카피캣 사업가들은 이미 시판되고 검증받은 레시피를 모방하여 돈을 벌려고 했으나, 그들이 돈을 벌 수 있게 해주는 고객들의 건강을 고려하지 않고 제품에 들어가는 재료들을 신경 쓰지 않았기에, 이번 사건에 대해 연민을 가지기는 굉장히 어렵습니다.

마치, 맥도날드나 버거킹에서 햄버거를 먹는 사람들한테, 소화 과정의 일부는 당신들 책임도 있지 않나요? 하는 것과 같습니다.

버거스왑은 그들의 고객들을 위해 세부적인 보상방안을 마련 중이라고 주장했습니다. 이 모든 일로 배가 꺼졌던 사람들에게 환영받을 만한 소식입니다.


기사 공유하기

REKT는 익명 작성자들에 의한 공공 플랫폼이며, REKT에 작성된 관점이나 내용에 대해서 그 어떤 책임도 지지 않습니다.

기부 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

disclaimer:

REKT는 당사 웹 사이트의 익명의 작성자 또는 REKT에 의해 게시되거나 관련된 서비스에서 게시되는 콘텐츠에 대해 어떠한 책임도 지지 않습니다. 당사는 익명 작성자들의 행동 및 게시물에 대한 규칙을 제공하지만, 익명의 작성자가 웹 사이트 또는 서비스에 게시, 전송 혹은 공유한 내용을 통제하거나 책임지지 않으며, 귀하가 웹 사이트 또는 서비스에서 직면할 수 있는 불쾌함, 부적절함, 음란함, 불법 또는 기타 해로운 콘텐츠에 대해서도 책임을 지지 않습니다. REKT는 당사 웹 사이트 또는 서비스 사용자의 온라인 또는 오프라인 행위에 대한 책임을 지지 않습니다.