작은 관점에서 SushiSwap 공격 사건에 대한 간략한 분석
慢雾科技
2020-11-30 13:37
本文约1303字,阅读全文需要约5分钟
미친 스시, 숨겨진 위험.

By : yudan@slow fog 보안팀

보조 제목

백그라운드 피드

공격 과정

공격 과정

1. 공격자는 Sushi Swap에서 USDT/WETH와 같은 거래 쌍을 선택한 후 유동성을 추가하여 해당 SLP(USDT/WETH Liquidity Proof, 이하 SLP)를 획득하고 획득한 SLP와 또 다른 소액을 사용합니다. 새로운 Sushi Swap 거래 쌍은 새로운 토큰 풀의 SLP1(WETH/SLP(USDT/WETH) 유동성 증명, 이하 SLP1이라고 함)을 가져와 Sushi Maker 계약으로 전송합니다.

2. Sushi Swap의 변환 기능을 호출하면 들어오는 token0은 첫 번째 단계에서 얻은 SLP이고 token1은 WETH입니다. convert 함수를 호출한 후 Sushi Maker 계약은 SLP1을 소각하기 위해 token0과 token1로 구성된 토큰 풀의 소각 기능을 호출하고 공격자가 첫 번째 단계에서 Sushi Maker 계약에 입력한 SLP1을 소각하고 WETH와 SLP를 얻습니다. .

3. Sushi Maker 계약의 변환 기능은 내부 _toWETH 기능을 호출하여 소각으로 얻은 토큰을 WETH로 변환합니다. 두 번째 단계에서 Sushi Maker 계약이 소각을 통해 SLP와 WETH를 얻었기 때문입니다. 그 중 WETH는 변환할 필요가 없고 SLP만 변환하면 됩니다. 이때 공격자가 첫 번째 단계에서 생성한 트랜잭션 쌍인 SLP/WETH 트랜잭션 쌍을 호출하여 변환이 수행됩니다. Sushi Maker 컨트랙트는 전환 시 모든 balanceOf(token0)를 WETH로 전환하므로 여기에 전달되는 token0은 SLP이므로 컨트랙트는 SLP/WETH 트랜잭션 쌍을 통해 컨트랙트 내 모든 SLP를 전환합니다(교환된 SLP에는 USDT/ 2단계에서 소각 기능을 통해 컨트랙트에서 획득한 WETH 트랜잭션과 SLP의 각 스왑에 의해). SLP / WETH 토큰 풀은 공격자에 의해 생성되며, 공격자는 초기화 시 소량의 WETH만 추가하면 되고, 교환 과정에서 Sushi Maker 계약에서 해당 트랜잭션으로 소량의 WETH를 교환할 수 있습니다. Sushi Maker 거래 쌍의 모든 SLP가 맞습니다.

요약하다

요약하다

공격자는 SLP와 WETH를 사용하여 새로운 토큰 풀을 생성하고, 새로운 토큰 풀의 SLP1을 사용하여 Sushi Maker에서 변환하고, 소량의 SLP를 사용하여 Sushi Maker 계약의 모든 SLP를 자신이 생성한 토큰 풀로 전송하고, 일정 기간 동안 해당 거래 쌍의 모든 취급 수수료가 징수됩니다. 그리고 다른 거래 쌍에 대해 프로세스를 반복하여 계속해서 이익을 얻으십시오.

慢雾科技
作者文库