1억 9,500만 달러 규모의 Euler Finance 해킹에 대한 심층 분석

2023년 3월 13일, 오일러 파이낸스의 펀드 풀은 플래시 론의 공격을 받았으며 추정 총 손실액은 약 1억 9,500만 달러입니다. 이 수치는 또한 2023년 현재까지 Web3 공간의 다른 모든 보안 사고로 인한 총 자산 손실의 두 배 이상입니다.
오일러 파이낸스(Euler Finance)의 자체 설명에 따르면 플랫폼은 "사용자가 거의 모든 암호화폐 자산을 빌려주고 빌릴 수 있는 이더리움의 비수탁 프로토콜"입니다.
이 공격의 주된 이유는 Euler Pool 컨트랙트의 'donateToReserve'에 취약점이 있기 때문입니다. 이 기능은 호출자의 포지션 상태를 확인하지 못하기 때문에 사용자는 레버리지 예치금의 일부를 자발적으로 포기하여 자신의 포지션을 불균형하게 만든 다음 오일러의 특징적인 청산 규칙을 사용하여 자신의 포지션을 청산하여 수익을 올릴 수 있습니다.

공격자는 플래시 론에서 빌린 자산을 사용하여 먼저 Euler 대출 프로토콜의 고유한 'mint' 기능과 Euler 자금 풀 계약의 취약한 'donateToReserves' 기능을 통해 높은 레버리지와 부실 상황을 만들었습니다. 그 후, 공격자는 "무료"로 많은 수의 파생 eToken을 얻기 위해 동일한 거래에서 청산인으로서 자신이 생성한 부실 포지션을 청산했습니다. 마지막으로 출금으로 펀드 풀이 소진되고 여러 오일러 풀에 대한 공격을 반복하여 모든 펀드 풀을 소진시킨다.
공격 과정
공격 과정
① 공격자 flash는 AAVE로부터 3천만 DAI를 대출받았다.
②공격자는 eDAI 컨트랙트를 통해 Euler에게 2천만 DAI를 예치하고 2천만 eDAI를 받는다. 공격자가 2,000만 DAI를 예치하기 전에 오일러 풀의 DAI 잔고는 890만이었습니다.
③`eDAI.mint()`를 호출합니다. 이 특별한 '민트' 기능은 Eule Financer의 고유한 기능으로 사용자가 반복적으로 빌리고 갚을 수 있도록 합니다. 이는 차입 주기를 생성하는 방법이며 그 결과 레버리지 차입 포지션이 생성됩니다.
④ '민트' 호출 후 2억 dDAI, 1억 9,560만 eDAI를 받았다. (참고: dToken은 부채 토큰을 나타내고 eToken은 모기지 자산을 나타냅니다.)
, eDAI 풀의 1,000만 DAI를 Euler에게 상환하면 1,000만 dDAI가 소멸됩니다. 그럼 다시 전화해"repay", eDAI 풀의 1,000만 DAI를 Euler에게 상환하면 1,000만 dDAI가 소멸됩니다. 그럼 다시 전화해"mint", 공격 계약을 위해 2억 dDAI와 1억 9,560만 eDAI의 형태로 또 다른 차입 포지션을 만듭니다. 이때 공격자의 위치는 3억 9천만 dDAI와 4억 eDAI이다.
⑥ 'donateToReserves'(취약한 기능은 2022년 7월 도입)를 호출하여 1억 eDAI를 Euler에게 전송합니다. 이 법의 부수적 지위에 대한 적절한 점검이 없기 때문에,"donate"후자의 공격자는"범죄자"(불건전한 부채 수준을 가진 주소) 위험 조정 부채가 담보 가치를 훨씬 초과하여 청산될 수 있습니다. 이때 공격자의 위치는 3억 9천만 dDAI와 3억 eDAI이다.
⑦공격자가 배치한 청산인 계약은 "위반자"를 청산하기 시작합니다. Euler Finance의 청산 논리의 특별한 특징은 청산된 사람의 대출 상태가 극도로 좋지 않을 때 청산인은 그 과정에서 최대 20%의 "할인"을 얻을 수 있다는 것입니다.
⑧ 청산을 통해 청산인은 2억 5,900만 dDAI의 "부채"와 3.1 eDAI의 "자산"을 얻었습니다. 청산 시 양도된 부채 총액은 자산보다 훨씬 적습니다. 청산인은 약 4,500만 개의 eDAI 자산을 확보했습니다.
⑨ 청산인은 획득한 eDAI를 통해 약정에서 3,890만 DAI의 담보를 모두 빼내고 플래시론을 상환하여 미화 800만 달러의 차익을 챙겼다.
공격자는 현재 주소 1에 1,350만 달러 상당의 ETH, 주소 2에 1억 4,800만 달러, 4,300만 DAI를 보유하고 있습니다.
주소 1:
https://etherscan.io/address/0x B 2698 C 2D 99 aD 2c 302 a 95 A 8 DB 26 B 08 D 17 a 77 cedd 4
주소 2:
https://etherscan.io/address/0x b 66 cd 966670 d 96 2C 227 B 3 EABA 30 a 87 2D bFb 995 db
기적적으로 첫 번째 공격 트랜잭션이 MEV 봇에 의해 의도치 않게 가로채졌습니다. 봇은 DAI에서 879만 달러를 벌었습니다. 공격자의 계약서에 인출 주소가 사망으로 기록되어 있고, MEV 로봇은 자금을 반환하려는 과정에서 가로챈 자금을 공격자의 주소로만 보낼 수 있다는 점은 안타깝습니다.
두 번째에서 다섯 번째 공격으로 해커는 1억 7,700만 달러 상당의 자산을 챙겼습니다.
마지막에 쓰기
마지막에 쓰기
현재 이 이벤트는 2023년 Web3 공간에서 가장 큰 해킹입니다. Euler Finance는 트윗에서 사건의 진위를 인정하고 현재 보안 전문가 및 법 집행 기관과 협력하고 있다고 말했습니다.
Euler Finance 팀의 전반적인 보안 수준과 인식은 업계에서 비교적 높은 수준이며 많은 보안 회사와 협력했습니다. 이 프로젝트는 감사를 받았으며 버그 바운티 프로그램의 지원도 받았지만 프로젝트가 해커의 손아귀에서 벗어나지 못했습니다.
따라서 CertiK 보안 전문가는 새로 추가된 기능도 감사해야 함을 다시 한 번 상기시킵니다. 위에서 언급한 계약 취약점은 https://forum.euler.finance/t/eip-14-contract-upgrades/305에 의해 도입되어 심각한 결과를 초래했습니다.
따라서 감사는 한 번만 하는 것이 아니라 계약에 새로운 기능을 추가할 때 새로 추가된 기능을 다시 감사해야 합니다. 감사되지 않은 "개미집".


