알파 파이낸스(Alpha Finance) - REKT



Defi 마법은 가장 수익성이 높은 것으로 남아있습니다.

이제 말씀드릴 내용은 저희의 가장 극적인 이야기 중 하나입니다.

현존하는 가장 큰 Defi 해킹으로 이어진 혼란과 비난의 가짜 마법 이야기입니다.

교묘하고 복잡한 DeFi 속임수로 약 3750만 달러가 알파 파이낸스(Alpha Finance)의 볼트(vault)를 대상으로 한 다중 트랜잭션 공격으로 도난당했으며, 그 와중에 영향을 받은 것은 Iron Bank로 알려졌습니다.

알파 파이낸스(Alpha Finance)를 살해한 사건은 거울의 방에서 이루어졌습니다. 점점 더 얽히고설켜지는 Defi 프로토콜들의 특성과 복잡한 공격방법들이 합쳐져서, 누가 피해를 받았고 누가 책임을 지고 보상을 해야 하는지 명확하게 판단하기도 어려운 지경에 이르렀습니다.

공격자들의 컨트랙트는 Homora code를 생성하여, 그들의 악의적인 컨트랙트가 시스템의 내부 부채를 확인하는 컨트랙트 중 하나라고 "믿게" 만들어 수치를 조작하였습니다.

이것은 프로토콜과 공격자 사이의 개인적인 전쟁이었습니다. 보안이 뚫린 컨트랙트는 아직 공지되지도 않았었고, 당연히 유저들은 사용할 수 없었으며, 이는 외부에서 직접 공격받은 것이 아님을 의미합니다. 이제껏 이렇게 대담한 내부자의 소행은 본 적이 없었고, 알파 파이낸스(Alpha Finance)측은 “최우선 용의자”를 빠르게 지목해내었습니다.

저희는 왜 아직 준비되지 않은 컨트랙트가 메인넷에 올라가 있었는지를 알파 파이낸스(Alpha Finance)측에 질문하였고, 그들의 답변은 다음과 같았습니다;

"저희는 sUSD 풀과 같은 여러 개의 풀을 다음 주에 런칭하기 위해 준비하고 있었고, 그러므로 UI레벨이 아닌 컨트랙트 레벨에 올려두었었습니다."

고래들은 이러한 착오들 속에 자신들의 자산을 지키기 위해 빠르게 움직였습니다. SBF는 크림 파이낸스(Cream Finance)에서 $4억어치의 FTT를 출금하였고, Three Arrows Capital$300만 $ALPHA를 아마도 매도를 목적으로 바이낸스로 전송하였습니다.

공격에 연관된 모든 토큰은 그 가치가 폭락했습니다.

알파 Homora 거버넌스 토큰 ALPHA는 $2.25 에서 $1.78 로 폭락했습니다.

Iron Bank 거버넌스 토큰 CREAM은 $288.32 에서 $193.51 로 폭락했습니다. 이러한 성격의 플래시 론(flash loan) 공격들을 가능하게 했던 근원적인 거버넌스인 AAVE는, 당일 $518 에서 최하 $492 까지 폭락했습니다.

하지만, 토큰의 가격이 이 이야기의 가장 흥미로운 부분은 아닙니다...

알파 파이낸스(Alpha Finance)팀은 굉장한 사후 분석툴을 만들었고, 그들이 찾아낸 것은 놀라웠습니다. 합동 수사에서 밝혀진 내용들은, 관리 부실의 깊이가 예상보다 더 심각하다는 것을 나타내고 있었습니다.

알파 파이낸스(Alpha Finance)가 이들의 혐의를 공개할지는 미지수지만, 그들이 당초에 최우선 용의자가 있다고 말했던 진술은 곧 엄청난 파장이 올 것을 시사합니다.

공식적인 사후 분석 보고서에서, 공격자가 공격에 성공하기 위해서는 다음과 같은 정보들이 필수적으로 필요했음을 확인할 수 있었습니다:

  • UI에도 없고, 공식적으로 발표되지 않은 상태로 다음 배포에서 공개될 예정이었던 HomoraBankv2의 sUSD pool이 컨트랙트에 올라가 있었다는 사실을 알았어야 함.
  • sUSD 대출 풀에 유동성이 없었음, 따라서 공격자는 총 부채와 총 부채 지분을 모두 조작할 수 있었습니다.
  • 대여량 계산 기능에 반올림 계산 오류가 존재함, 공격자가 유일한 대출자일 때 영향을 미치게 됩니다.
  • 총 부채 지분을 늘리지 않은 채로 resolveReserve 기능이 총 부채량을 늘릴 수 있음 그리고 그 기능은 풀에 대한 수익을 받기 위한 것으로, 누구나 사용할 수 있습니다.
  • HomoraBankv2 는 invariant가 담보 > 차용 조건만 만족하는지를 체크하면 모든 커스텀 스펠(spell)을 허용함 (스펠(spell)은 연(Yearn)의 전략(strategy)와 비슷한 개념입니다).

수많은 유저들이 지켜보고 있는 와중에, 도둑은 결정적인 증거들을 남겼으며, 드문 일이지만 피해자들이 공격자를 직접 지목할 수 있었습니다.

위에서 나열한 공격을 위해 필요한 정보들을 보면, 이 공격을 위해서는 내부 정보가 필수적이었음을 알 수 있습니다. 그러나 프로토콜의 범위가 넓고, 오딧(audit)을 위해 연관된 여러 회사가 있기에 내부자는 다양한 곳에서 접근할 수 있었습니다.

rekt는 회사의 혐의를 제기하려는 것은 아니지만, 알파 파이낸스(Alpha Finance)가 이 상황을 어떻게 해결해나가는지를 계속 확인해나갈 것입니다.

어떻게 이런 일이 일어났는지 알파 파이낸스(Alpha Finance)측에서 설명한 내용은 다음과 같습니다:

1. 공격자는 악의적인 스펠(spell)을 생성합니다. (스펠(spell)은 연(Yearn)의 전략(strategy)과 유사한 개념) https://etherscan.io/tx/0x2b419173c1f116e94e43afed15a46e3b3a109e118aba166fcca0ba583f686d23

2. 공격자는 ETH -> UNI 스왑을 진행하여, 유니스왑(Uniswap) 풀에 ETH + UNI 유동성을 제공합니다(그리고 ETH/UNI LP 토큰을 받습니다). 같은 트랜잭션에서, 유니스왑(Uniswap)에서 ETH -> sUSD 스왑을 진행하고 sUSD를 크림(Cream)의 Iron Bank에 입금합니다. (그리고 cysUSD를 받습니다) https://etherscan.io/tx/0x4441eefe434fbef9d9b3acb169e35eb7b3958763b74c5617b39034decd4dd3ad

3. HomoraBankV2가 다음과 같은 악의적인 스펠(spell)을 시행하도록 호출합니다(포지션 883을 생성): 1000e18 sUSD를 차용 UNI-WETH LP를 WERC20에 입금하고, 담보로 사용(담보 > 차용 체크를 우회하기 위함) 이 프로세스에서, 공격자는 1000e18 sUSD 부채 지분을 확보 (공격자가 첫 번째 대출자이므로) https://etherscan.io/tx/0xcc57ac77dc3953de7832162ea4cd925970e064ead3f6861ee40076aca8e7e571

4. HomoraBankV2가 다음과 같은 악의적인 스펠(spell)을 시행하도록 다시 호출합니다(포지션 883으로): 1000000098548938710983 sUSD 상환(이자가 발생한 실제 부채는 1000000098548938710984 sUSD), 총 지분에서 1을 뺀 액수를 상환. 그 결과, 공격자는 1minisUSD 부채와 1 부채 지분을 소유. https://etherscan.io/tx/0xf31ee9d9e83db3592601b854fe4f8b872cecd0ea2a3247c475eea8062a20dd41

5. sUSD 은행에서 resolveReserve 를 호출하여, 19709787742196 부채를 발생, 총 지분은 1유지. 현재 상태: 총 부채 = 19709787742197, 총 지분 = 1 https://etherscan.io/tx/0x98f623af655f1e27e1c04ffe0bc8c9bbdb35d39999913bedfe712d4058c67c0e

6. HomoraBankV2가 다음과 같은 악의적인 스펠(spell)을 시행하도록 다시 호출합니다(16번 반복해서 호출하고, 각 호출 시마다 차용량을 두 배로 늘림): Borrow 19709787742196 minisUSD 를 차용하여 공격자에게 전송 (매번 두 배씩, 차용이 성공될 때마다 총 부채량이 두 배로 늘어나므로). 각 차용은 총 부채보다 1 적게 시행하여, 차용 지분 =0 으로 유지하여, 프로토콜이 부채 대출이 없게 인식하도록 함. 트랜잭션의 마지막에서는, 공격자가 크림(Cream)의 Iron Bank에 19.54 sUSD를 입금. https://etherscan.io/tx/0x2e387620bb31c067efc878346742637d650843210596e770d4e2d601de5409e3

7. 위의 프로세스 반복: HomoraBankV2가 다음과 같은 악의적인 스펠(spell)을 시행하도록 다시 호출합니다(10번 반복해서 호출하고, 각 호출 시마다 차용량을 두 배로 늘림). 트랜잭션의 마지막에서, 공격자가 1321 sUSD를 크림(Cream)의 Iron Bank에 입금. https://etherscan.io/tx/0x64de824a7aa339ff41b1487194ca634a9ce35a32c65f4e78eb3893cc183532a4

8. 에이브(Aave)의 플래시 론(Flashloan) 사용 (1,800,000 USDC ) 1,800,000 USDC 를 1,770,757.56254472419047906 sUSD로 스왑, 그리고 크림(Cream)에 입금하여 공격자가 악의적인 스펠(spell)을 활용할 수 있도록 충분한 유동성을 제공 1,322.70 sUSD에서 677,223.15 sUSD까지 차용량을 두배씩 늘림 (총 10번 시행. 커브(Curve)에서 1,353,123.59 sUSD 를 1,374,960.72 USDC 로 스왑 크림(Cream)에서 426,659.27 USDC 차용 (위에서 공격자가 sUSD를 이미 입금하였으므로 가능) https://etherscan.io/tx/0x7eb2436eedd39c8865fcc1e51ae4a245e89765f4c64a13200c623f676b3912f9

9. 8번 단계를 반복하되, ~1000만 USDC 사용 (마지막에는 USDC 차용을 하지 않음) https://etherscan.io/tx/0xd7a91172c3fd09acb75a9447189e1178ae70517698f249b84062681f43f0e26e

10. 1000만 USDC로 반복 (마지막에는 USDC 차용을 하지 않음) https://etherscan.io/tx/0xacec6ddb7db4baa66c0fb6289c25a833d93d2d9eb4fbe9a8d8495e5bfa24ba57

**11.**13,244.63 WETH + 3.6M USDC + 5.6M USDT + 4.26M DAI 차용 에이브(Aave)에 스테이블 코인 입금 (aToken을 받아 USDC와 USDT가 동결되지 않도록 하기 위함) 커브(Curve) a3Crv 풀에 aDAI, aUSDT, aUSDC 입금 https://etherscan.io/tx/0x745ddedf268f60ea4a038991d46b33b7a1d4e5a9ff2767cdba2d3af69f43eb1b

12. 커브(Curve)의 유동성 게이지에 a3Crv LP 토큰 추가 https://etherscan.io/tx/0xc60bc6ab561af2a19ebc9e57b44b21774e489bb07f75cb367d69841b372fe896

13. 나머지 트랜잭션은 Tornado Cash와 GitCoin Grants로 전송. 1k ETH 는 크림(Cream)과 알파(Alpha)의 생성자(deployer)주소로 전송.

이런 이야기는 이제껏 한 번도 없었고, 굉장히 흥미롭습니다.

여태까지 흑/백을 가려야 하는 사건에서는 사건의 모호함 때문에 피해자들이 비난의 화살을 특정한 곳으로 돌리게되는 것은 매우 드물었습니다.

몇 주 전에 Alpha Homora와 Yearn의 파트너쉽을 주도했던 Andre Cronje는, 오늘 공격과 관련하여 글을 올렸습니다:

시간을 들여서 이번 공격을 공부해보세요. 9개의 트랜잭션과 4가지 다른 조작 방식, 그 중에 하나는 정확한 부채 계산이 포함되어있습니다. 이 공격을 알아내기 위해서는 수 시간이 필요했습니다. 알파(Alpha) 팀은 공격을 발견한 즉시 헛점을 보완하기 위한 활동을 시작하였으며, 이는 최초 발견 이후 몇 분 만에 이루어졌습니다.

그리고 Banteg의 답글:

이 과정은 완전히 미쳤습니다. 이 공격은 아무 생각 없이 평소에 컨트랙트를 보던 사람이 할 수 있을 만한 일이 절대 아닙니다. 특히 이런 공지되지 않았던 부분에 대해서는 더욱이요.

아마 이번 공격으로 연(Yearn)의 또다른 인수가 이루어질지도 모릅니다; Cronje의 이름이 이와 같은 사후 분석 보고서에 벌써 4번이나 올라갔으며, 각각의 패턴이 전부 비슷해 보입니다...

익명의 해커에 의해 좌지우지되는 시대는 얼마나 남았을까요?

이러한 일이 가능한 용의자는 적고, 공격자들을 파악해내기는 점점 쉬워지고 있습니다. 특히 이번 사례는 평소보다 용의 선상에 더 적은 사람만 존재합니다.

“신뢰하지 말고, 인증하세요” 이것은 코드를 작성할 때는 완벽한 주문이지만, 탈중앙화 금융의 상층부의 늘어나는 사회적 피해망상을 막아주지는 못합니다. 우리는 암호화폐와 DeFi가 성장하는 전례 없는 시기에 살고 있으며, 제대로 일하지 않으면 그 대가가 매우 클 것입니다. DeFi 개발자들의 정신적인 로딩은 하루하루 늘어나고 있습니다. 제국은 몇 줄의 코드로 세워지며, 금융의 미래가 눈 앞에 펼쳐지고 있습니다.

개발자들은 하늘을 향해 질주하고 있지만, 부패한 내부자들은 프로젝트의 기반에 구멍을 뚫어 해커들이 지하에서 일하는 것을 돕습니다.

건물 하나가 무너지면, 주변에서 보고 배우게 됩니다. 흩날린 먼지가 채 가라앉기도 전에 구경꾼들은 사라지고, 끈질긴 팀들은 이전보다 기반을 더욱 튼튼하게 다지기 위해서 그들만의 레이스를 다시 시작할 것입니다.

피할 수 없는 실수로 그들의 익명성이 벗겨지기 전까지 얼마나 이런 상황을 유지할 수 있을까요?


기사 공유하기

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

기부 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

disclaimer:

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