CertiK: Pickle Finance는 거의 2,000만 달러의 손실을 입었습니다. 공격 분석
CertiK
2020-11-23 08:15
本文约3168字,阅读全文需要约13分钟
피클 파이낸스가 해킹을 당해 화폐 가격이 반토막이 났습니다. 무슨 일이에요? 이 기사에서는 이 공격 이벤트에 대한 자세한 분석을 제공합니다.

베이징 시간으로 11월 22일 오전 2시 37분, CertiK 보안 연구팀은 Skynet을 통해 Pickle Finance 프로젝트가 공격을 받아 총 1억 3천만 RMB에 달하는 1,975만 DAI가 손실되었음을 발견했습니다.

피클 파이낸스가 9월 10일 채굴을 시작한 이후로 존재감이 없었습니다.

푸드 아미의 급격한 흥망성쇠 경험으로 투자자들은 피클 프로젝트의 갑작스러운 출현에 대해 어느 정도 경계를 유지하고 있습니다.

그러나 9월 14일 V God의 개인 플랫폼을 확보한 후 Pickle Gherkin은 새로운 DeFi 게임 플레이와 격동의 DeFi 물결에서 다양한 승인을 통해 평지에서 시작 가격이 10배 증가했습니다.

"방금 10,000달러짜리 피클을 5달러에 팔았는데 잠을 잤더니 60달러나 되었어요??? 이거???"

투자자들이 이 새로운 유형의 푸드 토큰 구매를 준비하고 있거나 이미 깊이 관여하고 있는 것처럼, 11월 23일에 나온 뉴스는 투자자들을 충격에 빠뜨렸습니다.

Messari 데이터에 따르면, Pickle Finance가 해킹당한 이후 네이티브 토큰인 PICKLE은 $10.17로 50.12% 급락한 후 소폭 회복되었으며 현재 시장 가치는 $11.41입니다.

보조 제목

전체 공격 프로세스는 다음과 같습니다.

전체 공격 프로세스는 다음과 같습니다.

1단계: 공격자는 StrategyCmpdDAIV2.getSuppliedUnleveraged() 함수를 사용하여 주소 0xcd892a97951d46615484359355e3ed88131f829d의 StrategyCmpdDAIV2 계약에서 인출할 수 있는 Dai 금액을 획득하고 Amount_A로 기록됩니다.

2단계: 공격자는 주소 0x6847259b2b3a4c17e7c43c54409810af48ba5210에 위치한 ControllerV4 스마트 컨트랙트 내에서 swapExactJarForJar() 함수를 호출하고, 호출 시 1번과 2번의 dirty jar인 Amount_A와 0, [], []을 파라미터로 전달한다.

swapExactJarForJar() 함수

그 중 1번 더티항아리와 2번 더티항아리는 공격자가 직접 배포하고 IJar 인터페이스의 스마트 컨트랙트를 따르므로 token() 함수 및 기타 함수의 논리적 구현은 공격자가 결정한다. 그 자신. 이 단계는 Pickle Finance swapExactJarForJar() 함수가 들어오는 jar가 공식 스마트 계약 주소인지 여부를 확인하지 않기 때문에 설정됩니다.

swapExactJarForJar() 함수에 전달된 jar는 토큰 유형을 정의할 수 있습니다.

인출ForSwap() 함수 호출

swapExactJarForJar() 함수의 실행과 함께 위 289행의 swapExactJarForJar() 함수 중 withdrawForSwap() 함수가 실행되면 일련의 함수 호출 후 0xcd892a97951d46615484359355e3ed88131f829d의 deleverageToMin() 함수와 deleverageUntil()이 최종적으로 실행된다. 기능으로 현재 StrategyCmpdDAIV2에서 출금 가능한 토큰(Amount_A)을 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87 주소의 PickleJar 스마트 컨트랙트로 전송합니다.

deleverageToMin() 함수 및 deleverageUntil() 함수

StrategyCmpdDAIV2 스마트 계약에서 PickleJar 스마트 계약으로 토큰을 전송하는 내부 트랜잭션의 스크린샷
PickleJar 스마트 계약의 적립() 기능

3단계: 주소 0x6949bb624e8e8a90f87cd2058139fcd77d2f3f87에서 PickleJar 스마트 계약의 Earn() 함수를 호출합니다(위 그림 참조).

현재 PickleJar의 pDAI 수를 주소 0x6b175474e89094c44da98b954eedeac495271d0f에서 주소 0x6847259b2b3a4c17e7c43c54409810af48ba5210에 있는 ControllerV4 스마트 계약으로 전송하기 위해 총 세 번의 호출이 이루어집니다. () ControllerV4 계약의 기능(아래 그림 참조) 표시됨), 아래 그림의 152행에 deposit() 함수를 전달하십시오.

이렇게 해서 0xcd892a97951d46615484359355e3ed88131f829d의 StrategyCmpdDAIV2 컨트랙트에 있는 deposit() 함수가 호출되고, PickleJar에 있는 pDAI의 번호를 가진 cDAI가 StrategyCmpdDAIV2로 발행됩니다.

ControllerV4 스마트 계약의 적립() 기능
StrategyCmpdDAIV2 계약의 deposit() 함수

4단계: 주소 0x6847259b2b3a4c17e7c43c54409810af48ba5210에서 ControllerV4 스마트 계약의 swapExactJarForJar() 함수를 다시 호출하고 3번과 4번의 dirty jar와 CurveProxyLogic 스마트 계약의 주소인 0, 0, 매개 변수로 0x20을 전달합니다. .

여기서 0x20은 주입 매개변수이며 목적은 CurveProxyLogic 스마트 계약 주소와 협력하여 주소 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8에서 CurveProxyLogic 스마트 계약의 add_liquiditya() 함수를 실행하는 것입니다.

더러운 병 3번:

0xa2da08093a083c78c21aeca77d6fc89f3d545aed

더러운 병 4번:

0xa445e12d69e8bd60290f6935d49ff39ba31c6115

CurveProxyLogic 스마트 계약 주소: 0x6186e99d9cfb05e1fdf1b442178806e81da21dd8

swapExactJarForJar() 함수는 CurveProxyLogic 스마트 계약 주소와 주입 매개변수를 사용하여 지정된 함수를 실행합니다.
CurveProxyLogic 스마트 계약의 add_liquiditya() 함수

이 단계 후에 StrategyCmpDAIV2의 저장소는 세 번째 단계에서 StrategyCmpDAIV2 스마트 계약에서 ControllerV4 스마트 계약으로 전송됩니다.

지금까지 출금 가능한 모든 토큰은 cDAI 형태로 ControllerV4 스마트 컨트랙트에 저장되어 있으며, 공격자는 cDAI를 출금할 수 있는 자격이 있습니다.

다섯 번째 단계에서 공격자는 주소 0x5d3a536e4d6dbd6114cc1ead35777bab948e3643에서 CErc20Delegator 스마트 계약의 rewardUnderlying() 함수를 호출하고 내부적으로 주소 0xbb8be4772faa655c255309afc3c5207aa7b896fd에서 CErc20을 호출합니다. rewardUnderlying(), rewardUnderlyingInternal() 및 rewardFresh() 함수.

마지막으로 획득한 모든 cDAI를 DAI로 전환하고 모든 DAI를 회수하여 공격을 완료한다.

CErc20Delegator의 rewardUnderlying() 함수

CErc20의 rewardUnderlying() 함수

안전 조언

안전 조언

여러 DeFi 공격은 사실을 보여주었습니다. "감사"는 보안이 보장된다는 의미가 아닙니다.

Pickle Finance가 10월 또는 그 이전에 보안 감사를 통과했다고 해서 모든 새로운 스마트 계약이 실시간 보안 테스트를 받았다는 의미는 아닙니다.

높은 수익에는 높은 위험이 따르며 이 취약점의 발생은 경고이기도 합니다.

완벽한 보안 보장 = 보안 감사 + 실시간 탐지 + 자산 보호 = CertiK 감사 서비스 +CertiK는 보안 오라클을 실시간으로 감지합니다.+CertiK 빠른 스캔+CertiKShield 분산 자산 보호 기금 풀

CertiK의 일련의 보안 서비스 및 도구는 프로젝트 및 사용자의 자산 보안 요구를 충족합니다.

감사가 필요하신 분들은 CertiK공식계정 하단의 대화상자를 클릭하셔서 글을 남겨주시면 무료상담 및 견적을 받아보실 수 있습니다!

CertiK
作者文库