Odai Frontline|DeFi 프로토콜 Pickle Finance는 허점으로 인해 거의 2,000만 달러의 손실을 입었습니다.

余YU
本文约2273字,阅读全文需要约9分钟
관계자들은 LP가 문제가 해결될 때까지 Jar에서 자금을 인출할 것을 권장한다고 말합니다.

이 기사는The Block、Cointelegraph

오데일리 번역기 |

~에 따르면The Block이 기사는

오데일리 번역기 |

~에 따르면0x70178102AA04C5f0E54315aA958601eC9B7a4E08。

보고서에 따르면 DeFi 프로토콜 Pickle Finance는 토요일 버그로 인해 DAI에서 거의 2,000만 달러를 잃었습니다.이 취약점 악용은 DAI 예치금을 통해 수익을 얻기 위해 Compound 프로토콜을 사용하는 Pickle Finance의 DAI pJar 전략과 관련된 것으로 보고되었습니다.악용 자금이 주소로 이체되었습니다., 화이트 햇 해커이자 DeFi Italy의 공동 설립자, 버그로 인한 Pickle Finance의 거의 2,000만 달러 손실에 대해

에밀리아노 보나시 라고

, 공격자는 기존 Jar와 동일한 인터페이스를 가지고 있지만 악을 행하는 스마트 계약인 "Evil Jar"를 배포했습니다. 그런 다음 공격자는 자신의 "evil Jar"와 실제 cDAI Jar 간에 자금을 교환하여 2,000만 달러 상당의 예치금을 훔쳤습니다.보조 제목:

공식 답변: LP는 문제가 해결될 때까지 Jar에서 자금을 인출할 것을 권장합니다.

11월 22일, Pickle Finance는 DAI PickleJar 전략이 악용되었다는 보고가 있다고 트윗했습니다. 우리는 이 문제를 적극적으로 조사하고 있으며 추가 업데이트를 제공할 것입니다. 문제가 해결될 때까지 모든 LP가 Jar에서 자금을 인출할 것을 권장합니다.https://vfat.tools/pickle/구체적인 동작은 다음과 같다

1) 농장에서 방출:

입장https://github.com/pickle-finance/contracts#pickle-jars-pjars, 지갑을 연결하십시오. 아래로 스크롤하여 농장을 찾고 UNSTAKE를 클릭합니다. 이렇게 하면 Pickle 보상도 청구됩니다. 이제 Jar에서 압축을 풀어야 합니다.

2) 항아리에서 철수:

입장

3) Jar를 나타내는 Etherscan 페이지에서 CONTRACT -> WRITE CONTRACT -> CONNECT TO WEB3(connect to WEB3)를 클릭합니다. 팝업이 표시됩니다. "확인"을 클릭합니다. 연결이 되지 않을 경우 "CONNECT TO WEB3"를 다시 클릭하면 연결됩니다.

4) 옵션 15를 입력하고 파란색 버튼 "쓰기"를 클릭합니다. 그런 다음 평소와 같이 메타마스크 트랜잭션을 완료합니다(빠른 가스 사용).

5) 자금을 인출해야 하는 모든 Jar에 대해 이 과정을 반복합니다.

보조 제목

후속 업데이트

22일 오후 슬로미스트 보안팀은 해당 사건에 대해 최대한 빠른 시일 내에 후속 조치를 취하고 분석했다고 밝혔으며, 간략한 분석 과정은 다음과 같다.

1. 프로젝트의 Controller 컨트랙트에 있는 swapExactJarForJar 함수는 토큰 교환을 위해 두 개의 임의의 Jar 컨트랙트 주소를 전달할 수 있습니다.이 중 _fromJar, _toJar, _fromJarAmount 및 _toJarMinAmount는 모두 사용자가 제어할 수 있는 변수입니다.공격자는 이 기능을 사용하여 _fromJar를 채우고 _toJar는 자신의 주소로, _fromJarAmount는 공격자가 계약을 추출하기 위해 설정한 DAI의 양, 약 2천만 DAI입니다.

2. swapExactJarForJar 함수를 사용한 교환 과정에서 계약은 들어오는 _fromJar 계약과 교환된 자산을 지정하는 데 사용되는 _toJar 계약의 token() 함수를 통해 해당 토큰을 얻습니다. _fromJar 컨트랙트와 _toJar 컨트랙트 모두 공격자에 의해 전달되기 때문에 token() 함수를 사용하여 얻은 값도 제어가 가능합니다.여기서 _fromJar 컨트랙트와 _toJar 컨트랙트에서 얻은 토큰은 DAI입니다.

3. 이때 교환이 발생하는데 Controller 컨트랙트는 transferFrom 함수를 사용하여 _fromJar 컨트랙트에서 일정량의 ptoken을 전송하지만 fromJar 컨트랙트는 공격자가 제어하는 ​​주소이므로 여기에서 전송되는 ptoken은 공격자의 것이다. 위조 화폐. 동시에 _fromJar 컨트랙트에서 컨트랙트가 획득한 토큰은 DAI이기 때문에 컨트랙트는 컨트랙트에 있는 자금이 교환에 충분한지 여부를 판단하고 그렇지 않은 경우 전략 풀에서 일정량의 토큰을 상환합니다. 컨트롤러 계약으로 전송합니다. 이 공격에서 컨트랙트의 DAI는 교환하기에 충분하지 않으며, 이때 컨트랙트는 전략 풀에서 부족한 몫을 인출하여 공격자가 설정한 2000만 DAI를 구성합니다.4. 교환은 계속된다 컨트롤러 컨트랙트는 공격자가 설정한 2천만 DAI를 구성하기 위해 정책 풀에서 DAI를 제안한 후 _fromJar의 인출 기능을 호출하여 3단계에서 공격자가 전송한 가짜 ptoken을 소각합니다. 그리고 컨트랙트는 현재 컨트랙트에서 _toJar 컨트랙트에서 지정한 토큰의 잔량을 판단하는데 _toJar 컨트랙트에서 지정한 토큰이 DAI이므로 Controller 컨트랙트에서 컨트랙트의 DAI 잔량을 판단하게 됩니다. 세 번째 단계로 Controller 계약은 2천만 DAI를 모았으므로 DAI의 잔액은 2천만입니다. 이때 Controller 컨트랙트는 _toJar 컨트랙트의 입금 기능을 호출하여 공격자가 관리하는 _toJar 컨트랙트로 2천만 DAI를 전송합니다. 이 시점에서 공격자는 이익을 완료했습니다.,요약: 이 공격은 공격자가 Controller 컨트랙트에서 swapExactJarForJar 함수를 호출할 때 _fromJar, _toJar의 컨트랙트 주소를 위조하고, 컨트랙트에서 실제 DAI와 교환하여 위조 통화를 전송함으로써 공격 프로세스를 완료합니다.또한, Pickle Finance 공격의 경우,