개요
개요
공격 분석
2023년 4월 13일, Yearn Finance가 해킹되어 약 1,000만 달러의 손실이 발생했습니다. 이 기사에서는 공격 프로세스와 취약점의 원인을 분석합니다.
https://etherscan.io/tx/0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d
공격 분석
다음은 공격 트랜잭션입니다.
공격자는 Balancer에서 500만 DAI, 500만 USDC, 200만 USDT를 빌려 플래시 론을 시작했습니다.
그런 다음 Curve에서 공격자는 500만 DAI를 695,000 USDT로, 350만 USDC를 151 USDT로 교환했습니다.
공격자는 현재 APR을 확인하기 위해 IEarnAPRWithPool의 추천 기능을 호출합니다. 이 시점에서 Aave의 APR만 0이 아닙니다.
다음으로 공격자는 800,000 USDT를 공격 계약 0x9fcc1409b56cf235d9cdbbb86b6ad5089fa0eb0f로 전송했습니다. 이 계약에서 공격자는 Aave: Lending Pool V1의 상환 기능을 여러 번 호출하여 다른 사람들이 부채를 상환할 수 있도록 하여 Aave의 APR이 0이 되도록 했습니다.
공격자는 yUSDT의 예금 기능을 호출하고 900,000 USDT를 담보로 820,000 yUSDT를 획득했습니다.
다음으로 공격자는 bZx iUSDC의 mint 기능을 호출하고 156,000 USDC를 사용하여 152,000 bZx iUSDC를 발행하고 Yearn yUSDT로 전송했습니다.
공격자는 Yearn:yUSDT의 인출 기능을 호출하여 820,000 yUSDT를 1,030,000 USDT로 변환합니다. 이 시점에서 공격자가 전송한 bZx iUSDC만 계약에 남습니다.
다음으로 공격자는 Yearn:yUSDT의 재조정 기능을 호출하여 bZx iUSDC를 파괴합니다.
그런 다음 Curve에서 공격자는 70,000 yUSDT를 5,990,000 yDAI로, 4억 yUSDT를 4,490,000 yUSDC로, 1,240,133,244,352,200 yUSDT를 1, 360,000 yTUSD로 교환했습니다.
취약점 분석
그런 다음 각각 yearn: yDAI 및 yearn: yUSDC에서 인출을 호출하고 678만 DAI 및 562만 USDC를 인출하고 플래시 론을 반환합니다.
취약점 분석
이 공격에서 가장 중요한 점은 공격자가 100,000 USDT를 사용하여 1,252,660,242,850,000 yUSDT를 발행했다는 것입니다. 예금 기능의 구현을 확인하십시오.
공유 수는 변수 풀과 관련이 있으며, 풀이 작을수록 공유가 커지고 풀의 가치는 _calcPoolValueInToken에서 얻습니다.
공격자가 rebalance 함수를 호출한 후 컨트랙트에는 USDC만 존재하지만 _balance()는 USDT의 잔고를 구하고 그 안에 USDC의 잔고는 포함되어 있지 않으므로 이때 풀은 1이다(공격자가 이체). :
이는 명백히 프로젝트 측의 구성 오류입니다.yUSDT 계약은 모두 USDT 토큰이어야 하지만 그 받침점 변수는 USDC와 관련된 bZx IUSDC 토큰이므로 yUSDT의 USDC는 잔액에 포함되지 않습니다."newProvider != provider"공격자가 재조정 기능을 호출하여 bZx iUSDC 토큰을 소각할 수 있는 이유는 무엇입니까? 재조정 기능의 구현을 확인하십시오.
_withdrawFulcrum()에서 사용 및 소각 작업이 있음을 알 수 있으므로
추천()의 구현이 설정됩니다.
공격자는 IIEarnManager(apr).recommend(token)의 반환 값을 0으로 제어하여 newProvider를 조작합니다.
어떻게 다 0으로 만들까 이 함수의 반환값은 각 DeFi에서 계산된 APR과 관련이 있다. :
값을 0으로 반환하려면 apr.calculateInterestRates 함수의 첫 번째 반환 값이 0이어야 합니다.
_totalBorrowsVariable은 0, 즉 Aave: Lending Pool Core V1에는 현재 부채가 없습니다. 이 조건을 달성하기 위해 공격자는 풀에 있는 모든 사람의 부채를 상환합니다.
요약하다
Yearn 공격 사건의 근본 원인은 프로젝트 당사자의 구성 오류였습니다. 공격자는 일련의 미묘한 방법으로 취약점을 악용하여 약 1,000만 달러의 수익을 올렸습니다.
회사 소개
At Eocene Research, we provide the insights of intentions and security behind everything you know or don't know of blockchain, and empower every individual and organization to answer complex questions we hadn't even dreamed of back then.
