Four.meme 공격 사건 분석

零시기술
2025-02-13 11:08:43
수집
우리는 four.meme 프로젝트가 해킹 공격을 받아 약 15,000 USD의 손실이 발생한 것을 모니터링했습니다.

저자: 영시기술

배경 소개

four.meme는 Binance Academy에서 인큐베이팅한 pump.fun과 유사한 memecoin 런치패드입니다.

우리는 플랫폼에서 memecoin snowboard(https://four.meme/token/0x4abfd9a204344bd81a276c075ef89412c9fd2f64)가 해킹당한 것을 감지했습니다. 손실액은 약 15,000 USD입니다. 공격 거래는: https://bscscan.com/tx/0x2902f93a0e0e32893b6d5c907ee7bb5dabc459093efa6dbc6e6ba49f85c27f61

공격 및 사건 분석

four.meme 기술 원리

four.meme은 bnb 스마트체인에서 pump.fun과 유사한 memecoin 런치패드입니다. 유사한 런치패드 플랫폼은 주로 세 가지 단계로 나뉩니다:

• 단계 1: 사용자가 플랫폼에서 이름, 로고, 설명, 소셜 계정(선택 사항) 등을 사용자 정의하여 memecoin을 생성합니다.

• 단계 2: 다른 사용자가 플랫폼에서 해당 memecoin을 사고팔 수 있습니다.

• 단계 3: 해당 memecoin의 시가총액이 일정 기준(24 BNB)에 도달하면 DEX(PancakeSwap)로 이전됩니다.

아래에서 각 단계의 구체적인 기술 세부 사항을 자세히 살펴보겠습니다.

단계 1

사용자는 런치패드 플랫폼에서 인터페이스를 통해 생성할 memecoin의 구체적인 정보를 입력합니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

입력이 완료되면 수수료를 지불하여 memecoin의 체인 상 계약이 생성됩니다. 물론 이 계약은 런치패드 공식 계약에 의해 생성되므로 생성된 ERC-20 토큰의 소유자도 런치패드 공식 계약입니다. 아래에서 four.meme의 memecoin 생성 예를 살펴보겠습니다:

먼저 사용자가 수수료를 지불하면 런치패드 공식 계약이 memecoin의 ERC-20 토큰 계약을 배포하고 1,000,000,000의 초기 자금을 민트합니다(해당 memecoin의 예상 가상 풀 총량은 30 BNB입니다).

잘생긴 건 3초, Four.meme 공격 사건 분석

그 후, 생성된 토큰의 소유자도 런치패드 공식 웹사이트의 스마트 계약입니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

이는 런치패드에서 memecoin이 해당 사용자가 생성한 것이지만 실제로 체인 상의 ERC-20 계약의 소유자는 해당 사용자가 아님을 의미합니다. 이렇게 함으로써 사용자가 임의로 민트하는 등의 악의적인 행동을 방지할 수 있습니다. 해당 memecoin 스마트 계약이 체인 상에 배포되면 두 번째 단계로 넘어가고, 플랫폼의 모든 사용자가 매매를 진행합니다.

단계 2

플랫폼의 다른 사용자는 플랫폼을 통해 매매할 수 있지만, 매매 후의 토큰은 transfer를 통해 다른 사용자에게 전송할 수 없습니다. 우리는 체인 상의 ERC-20 토큰의 소스 코드를 살펴볼 수 있습니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

여기서 _beforeTokenTransfer를 통해 매개변수 _mode로 전송을 제한했습니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

이때 우리는 단계 2의 토큰에 해당하는 mode가 1, 즉 MODETRANSFER_RESTRICTED임을 볼 수 있습니다. 이는 제3자에게 전송을 제한합니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

이 조치는 장외 OTC가 가격에 미치는 영향을 방지하기 위한 것입니다. 매매 시, four.meme 계약은 먼저 _mode를 2로 설정한 후 transfer를 통해 사용자에게 전송하고, 전송이 완료된 후 다시 _mode를 1로 설정하여 다른 사용자의 전송을 제한합니다. 이를 통해 구매 후 memecoin의 전송을 완료합니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

단계 3

해당 memecoin의 시가총액이 24 BNB에 도달하면, 이때 Bonding Curve Process가 100%에 도달합니다. 런치패드 공식은 나머지 20%의 memecoin과 24 BNB를 DEX PancakeSwap으로 이전합니다. 이로써 단계 3가 공식적으로 완료됩니다. 아래의 거래는 런치패드 공식이 memecoin을 PancakeSwap으로 이전하는 거래입니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

잘생긴 건 3초, Four.meme 공격 사건 분석

우리는 먼저 런치패드 공식이 memecoin의 mode를 0으로 설정하여 MODENORMAL로 변경하고 사용자가 장외 거래를 할 수 있도록 허용합니다. 그 후 런치패드 공식은 memecoin과 WBNB의 거래 쌍을 생성하고, 마지막으로 23.5BNB(그중 0.5 BNB는 수수료)와 2억 memecoin의 유동성을 해당 거래 쌍에 추가했습니다. 유동성을 추가할 때의 가격은 sqrtPriceX96 = 27169599998237907265358521입니다. sqrtPriceX96의 계산 공식은 다음과 같습니다:

잘생긴 건 3초, Four.meme 공격 사건 분석

따라서 유동성을 추가할 때 해당 memecoin의 가격은 0.0000001175 WBNB이며, 23.5 WBNB를 2억 memecoin으로 나누어도 동일한 가격이 됩니다. DEX로 이전되는 각 코인의 가격은 모두 0.0000001175 WBNB입니다.

공격 원리

four.meme에서 memecoin의 전체 생애 주기를 이해한 후, 공격 프로세스를 자세히 살펴보겠습니다. 먼저 공격자는 미리 초기화된 DEX 거래 쌍을 생성했습니다. 그리고 거래 쌍의 sqrtPriceX96을 10000000000000000000000000000000000000000으로 설정하여 정상 값보다 368058418256012배 높였습니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

해당 memecoin의 bond curve process가 100%에 도달했을 때, 런치패드는 해당 memecoin을 DEX로 이전하면서 createAndInitializePoolIfNecessary를 사용하여 거래 쌍을 생성합니다. 이전에 공격자가 이미 생성하고 초기화한 거래 쌍이기 때문에 공격자가 초기화한 가격에 따라 유동성을 추가하게 됩니다. 이는 해당 memecoin의 가격을 무작위로 높이는 결과를 초래합니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

이때 런치패드는 1개의 memecoin과 23.5 WBNB로 유동성을 추가했습니다. 이후 의심되는 공격자는 1600 memecoin을 사용하여 거래 쌍의 23.4 WBNB를 교환하여 공격을 완료했습니다.

잘생긴 건 3초, Four.meme 공격 사건 분석

요약

이번 취약점의 원인은 Four.meme의 내부에서 bonding curve process가 100%일 때 DEX로 이전하면서 createAndInitializePoolIfNecessary를 사용하여 PancakeSwap 거래 쌍을 생성할 때, 거래 쌍이 이미 미리 생성된 상황을 고려하지 않았기 때문입니다. 공격자가 미리 생성하고 초기화한 거래 쌍을 잘못 사용하여 공격자가 설정한 잘못된 가격으로 유동성을 추가하게 되어, 이전 후 해당 memecoin의 가격이 급등했습니다. 이후 공격자는 손에 쥐고 있던 memecoin으로 풀의 WBNB를 모두 빼내어 공격을 완료했습니다. 프로젝트 측은 경제 모델과 코드 실행 논리를 설계할 때 여러 번 검증하고, 계약이 배포되기 전에 여러 감사 회사를 선택하여 교차 감사하는 것이 좋습니다.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축