크림 파이낸스(Cream Finance) - REKT



조사관 rekt가 다시 돌아왔습니다.

1880만 달러가 은밀한 킬러에게 도난당했고, 이번에는 초창기 DeFi 프로토콜이 당했습니다.

크림 파이낸스(Cream Finance)Trail of Bits로부터 2021년 1월 28일에 오딧(audit)을 받았습니다(저희의 leaderboard에 없는 몇 안되는 오딧(audit)업체 입니다)

그러나, 가장 강력한 오딧(audit)도 프로토콜이 바뀌어 버리면 아무 의미가 없어집니다.

2021년 2월 10일에, 크림 프로포절(Cream proposal)AMP 토큰을 담보 수단으로 추가했고, 허점이 발생했습니다.

Credit: @peckshield

418,311,571 AMP 토큰과 1,308.09 ETH 가 크림 파이낸스(Cream Finance)의 AMP 토큰 컨트랙트에서 도난당했습니다.

AMP 토큰 컨트랙트는 ERC77-베이스의 ERC1820을 도입하였고, 이는 _callPreTransferHooks 라는 기능을 재진입(reentrancy)을 위해 사용하는 것이었습니다.

AMP 토큰 컨트랙트의 재진입(reentrancy) 취약성은 해커들이 기존 borrow() 기능이 업데이트되기 전에, 두 번째 borrow() 기능을 token transfer() 기능 안에 추가할 수 있게 만들었습니다:

해킹당한 예시 트랜잭션 (17개 중 한 개)

공격 컨트랙트: A, B 그리고 해커의 지갑.

위의 예시를 보면, 해커는:

1: A 컨트랙트를 사용하여 플래시 론으로 500 WETH를 대출하고 크림(Cream)에서 담보금으로 사용하여, 24170 crETH를 대출받습니다.

2: crETH를 사용하여 1948만 AMP를 대출받습니다.

3: 재진입(reentrancy) 버그를 사용하여 추가 borrow() 기능을 token transfer()기능 안에 추가하고, 기존의 borrow()가 업데이트되기 전에 355 ETH를 가져갑니다.

4: A가 대출받은 AMP의 절반(974만)을 가지고 있는 B 컨트랙트를 생성합니다.

5: B 컨트랙트는 A 대출의 일부를 상환하여, 187 WETH를 돌려받고 A 컨트랙트로 전송합니다.

6: A 컨트랙트는 재진입(reentrancy)을 통해 대출받은 ETH를 사용하여 플래시 론의 나머지를 상환하고, 이 트랜잭션을 통해 41 ETH와 974만 AMP를 수익으로 남깁니다.

비슷한 과정을 17개의 트랜잭션을 통해 진행하고, 총 6000 ETH에 가깝게 빼돌립니다.

이 기사를 작성할 당시, 훔친 ETH는 (현재 대략 1800만 달러의 가치) 해커의 주소에 남아있었습니다: 0xce1f4b4f17224ec6df16eeb1e3e5321c54ff6ede

크림(Cream)은 좋은 평판을 가졌던 적이 없습니다. 아마도 이것이 많은 사람이 이번 해킹이 첫 번째가 아니고 두 번째나 세 번째일 것으로 믿는 이유일 것입니다

그들이 알파 파이낸스(Alpha Finance) 사건에 연관된 적은 있었지만, 이번이 크림 파이낸스(Cream Finance)가 직접 공격받은 첫 번째 사건입니다.

안 좋은 평판을 차치하고서라도, 오랜 세월 동안 사용되어 보증되었던 프로토콜들도 취약점이 있는 토큰이 추가될 때 문제가 발생할 수 있음을 깨달아야 합니다.

그러나, @muditgupta 님이 말씀하셨듯이;

...아마 [크림(Cream)] 은 단순히 대출 기능에 재진입(reentrancy) 보호를 추가했으면 될 일이었던 것 같네요.

어떻게 이렇게 간단할 수 있을까요?


기사 공유하기

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

기부 (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

disclaimer:

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