피클 파이낸스가 공격을 받아 미화 2천만 달러에 가까운 DAI를 잃었습니다.엄격한 감사 없이 DeFi가 어디 있습니까?
PeckShield
2020-11-23 02:58
本文约2753字,阅读全文需要约11分钟
11월, 해커들은 DeFi 프로토콜인 Pickle Finance(사워 오이)를 공격하여 DAI에서 거의 2,000만 달러를 벌었습니다.

이번 주에는 "과학자"(DeFi의 양모를 전문화하기 위해 기술력과 지식 임계 값을 사용하는 해커)가 매우 바쁩니다.

텍스트

오늘 오전 2시 37분, 사람들이 잠든 사이에 해커들이 DeFi 프로토콜인 Pickle Finance(사워 오이)를 공격하여 거의 2,000만 달러에 달하는 DAI를 얻었습니다.

보조 제목

CCTV DeFi에 또 한번 탑승한 암호화폐는 "과학자"들의 현금 인출기가 되었는가?
11월 18일 비트코인이 18,000달러를 돌파하면서 다시 CCTV에 암호화폐가 등장했다.

CCTV에 따르면 투자 수익률 측면에서 암호화폐는 올해 진정한 '1위' 투자 상품이다. Bloomberg Galaxy Crypto Index는 약 65% 상승하여 금 가격과 글로벌 주식, 채권 및 상품 시장의 수익률이 20% 이상 상승한 것을 능가했습니다. 높은 상승의 주요 원인은 169.40% 상승한 이더리움의 가격 급등입니다.

CCTV는 "이더리움 가격 상승은 탈중앙화 금융 도구(DeFi) 사용 증가와 전염병 이후 여러 국가에서 도입한 막대한 경기 부양 조치로 인해 투자자들이 비트코인, 이더리움 및 기타 암호화폐를 선택하게 됐다"고 설명했다. 투자. 가치를 보존하십시오."

한편으로는 암호화폐 시장이 좋은 소식을 자주 전하는 반면, DeFi 프로젝트는 엄격한 감사를 받지 않았기 때문에 자주 공격을 받습니다.

무슨 일이에요?

무슨 일이에요?

PeckShield는 추적 및 분석을 통해 공격자가 StrategyCmpdDaiV2.getSuppliedUnleveraged() 함수를 통해 미화 1,972만 달러의 자산 잔액을 쿼리했음을 발견했습니다.

그런 다음 공격자는 입력 유효성 검사 취약점을 악용하여 StrategyCmpdDaiV2의 모든 DAI를 Pickle Jar로 추출합니다. 이 취약점은 두 개의 미리 결정된 가짜 Jar를 포함하는 ControllerV4.swapExactJarForJar() 함수에 있습니다. 주어진 Jar가 확인되지 않은 경우 이 단계는 다음 배포를 위해 모든 예치된 DAI를 Pickle Jar로 추출합니다.

다음으로 공격자는 추출된 DAI를 StrategyCmpdDaiV2에 배포하기 위해 Earn() 함수를 호출합니다. 내부 버퍼 관리에서 해커는 세 번에 걸쳐 적립() 함수를 호출하여 StrategyCmpdDaiV2에서 총 950,818,864.8211968 cDAI를 생성했습니다.

처음으로 Earn() 함수를 호출하여 1976만 DAI를 입금하고 903,390,845.43581639 cDAI를 발행합니다.

988,000 DAI를 예치하고 45,169,542.27179081 cDAI를 발행하기 위해 두 번째로 Earn() 함수를 호출합니다.

텍스트

세 번째로 Earn() 함수를 호출하여 49,000 DAI를 입금하고 2,258,477.11358954 cDAI를 발행합니다.

그런 다음 공격자는 ControllerV4.swapExactJarForJar() 함수를 호출하여 임의의 코드 실행을 통해 StrategyCmpdDaiV2의 모든 cDAI를 추출합니다. 이 단계에서 _execute() 함수는 _target 및 _data의 두 가지 매개 변수를 가집니다. _target은 대상 주소를 나타냅니다. 즉 그림에서 주황색으로 표시된 부분 _target은 흰색 주소로 공격자가 이 주소를 임의로 제어할 수 없으며 여기서는 흰색 계약인 CurveProxyLogic을 사용합니다. 완전히 제어되는 것은 그림에서 보라색으로 표시된 부분인 매개변수 _data인데, _data에는 _execute() 함수가 호출할 수 있는 add_liquidity() 함수와 add_liquidity()에 전달되는 모든 매개변수가 포함되어 있습니다.

이 시점에서 우리는 주황색 상자에 있는 curve, curveFunctionSig, curvePoolSize, curveUnderlyingIndex로 돌아갑니다. 여기서 curve는 주소입니다. 즉, 주황색 상자의 끝에서 두 번째 줄에 있는 curve.call() 함수는 모든 계약을 실행할 수 있습니다. 따라서 공격자는 Curve를 StrategyCmpdDaiV2로 설정하고, curveFunctionSig는 방금 지정한 계약 외에도 계약을 호출하는 함수도 지정할 수 있음을 나타내며 공격자는 이 작업을 통해 StrategyCmpdDaiV2.withdraw() 함수를 성공적으로 호출합니다.

마지막으로 ControllerV4.swapExactJarForJar() 함수로 다시 실행하면 추출된 cDAI가 악성 _toJar에 입금되고 _toJar.deposit() 함수에서는 950,818,864.8211968 cDAI가 모두 해커 주소로 즉시 전송된다.

보조 제목

DeFi는 엄격한 감사 없이 어디까지 갈 수 있습니까?

피클파이낸스(피클오이) 공격에 대응해 자사 감사업체 해치는 올해 10월 자사 코드에 대한 감사를 실시했지만 공격자가 악용한 취약점은 스마트 컨트랙트가 아닌 새로 생성한 스마트 컨트랙트에서 발생했다고 트위터를 통해 밝혔다. 보안 감사 대상. 이 취약점 공격과 관련된 코드는 이전에 감사된 controller-v3.sol이 아닌 controller-v4.sol의 swapExactJarForJar에 존재하며 스마트 계약에는 swapExactJarForJar가 포함되어 있지 않습니다.

이와 관련해 펙쉴드 관계자는 “일부 디파이 프로젝트는 1차 스마트 컨트랙트 보안 감사를 한 후 메인넷을 빠르게 런칭하기 위해 새로 추가되는 스마트 컨트랙트에 대한 감사를 생략할 수 있다”고 말했다. 이 공격은 결국 작은 손실로 끝납니다. DeFi는 다양한 위험을 방지하기 위해 온라인에 들어가기 전에 코드를 철저히 감사하고 조사해야 합니다.”

PeckShield
作者文库