빈스톡 (Beanstalk) - REKT



1억8100만 달러가 빈스톡에서 사라졌지만, 공격자는 7600만 달러만 가질 수 있었습니다.

rekt.news는 수익이 아닌 피해금을 산정하기 때문에, 이번 사건은 저희 리더보드에서 #5위를 차지하게 되었습니다.

악의적인 거버넌스 프로토콜이 플래시 론을 사용하여 강행되었고, 공격자는 모든 자산을 자신에게 보내는 데에 투표하였습니다.

또 다른 ~24800 ETH 는 토네이도 캐시로 보내졌고, 25만 달러는 우크라이나 전쟁 자금으로 보내졌습니다.

범죄의 급증은 언제까지 이어지는 걸까요?

Credit: Igor Igamberdiev, 펙쉴드, Kelvin Fichter

이번 사건은 프로포절 실행 시 지연 시간이 설정되지 않았다는 취약점을 활용하여 플래시 론을 통해 진행된 거버넌스 공격이었습니다.

공격자는 일시적으로 악의적인 긴급 프로포절을 통과시킬만한 보팅 파워를 갖춰서, 프로토콜의 돈을 빼냈습니다.

공격은 순간적으로 일어났지만, 일부 준비 과정이 필요했습니다:

…$BEAN 컨트랙트의 모든 거버넌스 실행은 ~1일의 지연 시간이 있습니다. 공격자는 사실 어제 두 개의 거버넌스 프로포절을 세팅해두었었습니다.

첫 번째 프로포절(proposal #18)은 컨트랙트의 모든 돈을 훔쳐갔습니다. 그다음 프로포절(proposal #19)은 25만 달러어치의 $BEAN을 우크라이나 기부 주소로 전송했습니다. 이 우크라이나 프로포절은 Bip18(Bip19가 아닌)로 명명되었습니다...

지연 시간이 지나자, 공격이 실행될 수 있었습니다:

공격자는 시냅스 프로토콜 브릿지[최초에는 토네이도였지만]로부터 자금을 조달했습니다.

그들은 플래시 론을 사용하여 다음의 자금을 대출했습니다:

Aave로부터 3.5억 DAI, 5억 USDC, 그리고 1.5억 USDT;

유니스왑 v2에서 3200만 BEAN;

스시스왑에서 1160만 LUSD.

이 토큰들은 거버넌스 투표를 위해서 BEAN으로 커브 풀에 유동성으로 추가되었습니다.

그다음에, 프로토콜 컨트랙트의 모든 자금을 공격자에게 옮기는 허위 BIP-18 프로포절을 제안하고 투표했습니다.

다음 단계에서는 유동성을 제거하고, 플래시 론을 상환하고, 모든 훔친 자금을 2만4800 WETH ($7600만)으로 전환하여 토네이도 캐시로 전송하였습니다.

해커: 0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4

해커 컨트랙트: 0x79224bc0bf70ec34f0ef56ed8251619499a59def

BIP18: 0xe5ecf73603d98a0128f05ed30506ac7a663dbb69

BIP18 프로포절 트랜잭션: 0x68cdec0ac76454c3b0f7af0b8a3895db00adf6daaf3b50a99716858c4fa54c6f

펙쉴드는 단계별 설명을 올렸습니다

해커는 initAddress를 사용하여 악의적인 프로포절 BIP를 제안했습니다.

해킹 트랜잭션을 런칭합니다: 0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

  1. 플래시 론으로 350,000,000 DAI, 500,000,000 USDC, 150,000,000 USDC, 32, 425,202 BEAN, 그리고 11,643,065 LUSD를 대출받습니다

  2. Vyper_contract_bebc.add_liquidity를 사용하여 350,000,000 DAI, 500,000,000 USDC, 150,000,000 USDT 유동성을 제공하고 979,691,328 3Crv를 받습니다

  3. LUSD3CRV-f.exchange를 사용하여 15,000,000 3Crv를 15,251,318 LUSD로 변환합니다

  4. BEAN3CRV-f.add_liquidity를 사용하여 964,691,328 3Crv를 795,425,740 BEAN3CRV-f로 변환합니다

  5. BEANLUSD-f.add_liquidity를 사용하여 32,100,950 BEAN과 26,894,383 LUSD를 변환하여 58,924,887 BEANLUSD-f를 받습니다

  6. 795,425,740 BEAN3CRV-f 과 58,924,887 BEANLUSD-f를 Diamond에 입금합니다

  7. Diamond.vote (bip=18)

  8. Diamond. emergencyCommit(bip=18) 그리고 해커가 제안한 _init contract가 실행되어 36,084,584 BEAN과 0.54 UNI-V2_WETH_BEAN, 874,663,982 BEAN3CRV-f, 그리고 60,562,844 BEANLUSD-f이 해커의 컨트랙트로 전송됩니다

  9. BEAN3CRV-f.remove_liquidity_one_coin으로 874,663,982 BEAN3CRV-f 유동성을 제거하고 1,007,734,729 3Crv를 받습니다

  10. BEANLUSD-f.remove_liquidity_one_coin으로 60,562,844 BEANLUSD-f 유동성을 제거하고 28,149,504 LUSD를 받습니다

  11. 플래시 론으로 대출받은 LUSD 11,795,706 와 BEAN 32,197,543을 상환합니다

  12. LUSD3CRV-f.exchange으로 16,471,404 LUSD를 16,184,690 3Crv로 스왑합니다

  13. 16,184,690 3Cry를 소각하고 522,487,380 USDC, 365,758,059 DAI, 그리고 156,732,232 USDT를 받습니다

  14. 플래시 론으로 대출받은 150,135,000 USDT, 500,450,000 USDC, 그리고 350,315,000 DAI를 상환합니다

  15. UNI-V2_WETH_BEAN 0.54를 소각하여 10,883 WETH 와 32,511,085 BEAN을 받습니다

  16. 250,000 USDC를 우크라이나 암호화폐 기부계좌로 기부합니다

  17. 15,443,059 DAI를 15,441,256 USDC로 스왑합니다

  18. 37,228,637 USDC를 11,822 WETH로 스왑합니다

  19. 6,597,232 USDT를 2,124 WETH로 스왑합니다

  20. 수익금 24,830 WETH가 해커에게 전송됩니다

그리고 토네이도로 전송되었습니다.

내부자의 소행이라는 의심을 피하고자, 프로토콜 뒤에 익명으로 있던 Publius는, 디스코드에 게시된 성명서를 통해 그들의 신분을 세 그룹으로 공개하기로 결정을 내렸습니다.

Omniscia는 간절하게 이번 공격은 그들의 오딧 범위 밖에서 벌어진 일임을 주장하였으나, 그들의 리포트는 거버넌스 컨트랙트도 포함하고 있긴 했습니다.

어찌 되었든 이런 취약점이 미리 알려지지 않았다는 점이 놀라운데, 왜냐하면 DeFi 거버넌스에서 플래시 론 공격이 새로운 종류의 위협이아닌, 이미 알려진 위협이었기 때문입니다. 온체인 거버넌스 프로포절 실행 시 지연 시간을 두는 것은 이러한 사태를 막을 수 있는 한 가지 방법입니다.

이번 사건은 토큰 보유자들로 하여금 거버넌스 프로포절을 더 유심히 감시하게 할 것입니다.

그러나, 일반적인 사용자는 이렇게 엄청나게-선동했던 빈스톡 같은 프로젝트가 더 경험이 많은 사람들의 관찰하에 놓여있기를 기대하고 있었을 것입니다.

남에게 기대지 말고 항상 스스로 공부하고 알아보셔야 합니다


기사 공유하기

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

기부 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

disclaimer:

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