승인 오류 취약점: HedgeyFinance 공격 분석

이 기사는 기계로 번역되었습니다
원문 표시

2024년 4월 19일, HedgeyFinance는 악용으로 인해 약 4,500만 달러의 손실을 입었습니다. 캠페인 계약의 설계 오류로 인해 공격자가 상당한 양의 자산을 직접 훔칠 수 있었습니다.

이 블로그에서는 사용자가 자신의 프로젝트에서 유사한 취약점을 예방할 수 있도록 이더리움 네트워크에 대한 첫 번째 공격을 분석합니다.

Verichains를 읽어주셔서 감사합니다! 새로운 게시물을 받고 내 작업을 지원하려면 무료로 구독하세요.

개요

공격자:

https://etherscan.io/address/0xded2b1a426e1b7d415a40bcad44e98f47181dda2

취약한 계약:

https://etherscan.io/address/0xbc452fdc8f851d7c5b72e1fe74dfb63bb793d511

거래 공격:

https://etherscan.io/tx/0xa17fdb804728f226fcd10e78eae5247abd984e0f03301312315b89cae25aa517

https://etherscan.io/tx/0x2606d459a50ca4920722a111745c2eeced1d8a01ff25ee762e22d5d4b1595739

익스플로잇 분석

첫 번째 거래 이후 공격 방법은 놀라울 정도로 간단했습니다. 공격자는 대량의 USDC를 빌려 잠긴 캠페인을 만든 후 즉시 취소했습니다.

두 번째 거래에서 공격자는 HedgeyFinance 계약에서 자신의 주소로 USDC를 직접 전송하는 계약을 실행했습니다.

두 번째 트랜잭션의 단순성은 악용의 근본 원인이 1단계의 createLockedCampaigncancel 기능에 있음을 강력하게 시사합니다.

createLockedCampaign 함수 조사

잠긴 캠페인을 생성하는 동안 소유자는 tokenLocker를 지정할 수 있습니다. 이 tokenLocker는 승인을 받으면 새로 생성된 캠페인과 관련된 모든 토큰을 전송할 수 있습니다. 이 동작은 잠재적인 취약점으로 보입니다.

함수 설명에는 누군가가 추가 토큰을 청구하는 것을 방지하려는 의도가 명시되어 있지만 보상 토큰에 대한 액세스만 제한하는 것으로 보입니다. 결정적으로 이 함수는 이전 단계에서 부여된 승인을 취소하지 않습니다. 이러한 감독을 통해 공격자는 이전 단계의 승인을 유지하면서 캠페인 내에서 스테이킹된 모든 토큰을 철회할 수 있습니다.

이러한 지속적인 승인을 통해 공격자는 계약에서 토큰을 원하는 위치로 쉽게 전송할 수 있습니다.

createLockedCampaign 함수를 역으로 분석하면 승인 논리에 결함이 있음이 분명해집니다. 잠긴 캠페인에 언제든지 토큰을 전송할 수 있는 기능을 부여하는 것은 예상되는 동작과 모순됩니다. 이 설계 결함은 HedgeyFinance 공격의 근본 원인입니다.

교훈

HedgeyFinance 익스플로잇은 스마트 계약 내에서 토큰 승인을 신중하게 관리하지 못할 경우 발생할 수 있는 심각한 결과를 강조합니다. 주요 내용은 다음과 같습니다.

출처
면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
라이크
즐겨찾기에 추가
코멘트