제로아워 기술 |BTB 공격 이벤트 분석 ||

배경 소개

2024년 11월 18일, 우리는 BNB 스마트 체인에 대한 공격을 모니터링했으며, 공격받은 프로젝트는 BTB 였습니다. 공격 트랜잭션은

https://bscscan.com/tx/0xfb6df4053c2f1000cb03135064af19a79a87cf25efe612ae5f3468390d6be216

이 공격으로 인해 총 약 5,000달러의 손실이 발생했습니다.

공격 및 사고 분석

먼저, 공격자는 flashloan을 사용하여 팬케이크SwapV3에서 100,000 BUSD를 대출했습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

이후 공격자는 팬케이크SwapV2를 사용해 대출받은 100,000 BUSD를 1,263,427 BTB로 교환했습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

그런 다음 공격자는 BTB의 거래소BTTBoUSDT를 사용하여 3,052 BTB를 4,999 BUSD로 교환했습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

공격받은 스마트 컨트랙트의 함수 교환BTTBoUSDT 코드를 살펴보겠습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

팬케이크SwapV2의 BTB와 BUSD 쌍의 보유량에 따라 교환 가격이 결정되는 것을 볼 수 있습니다. 이러한 방식으로 공격자는 pacakeSwap을 사용하여 대량의 BTB 또는 BUSD를 교환하여 BTB 가격을 조작할 수 있습니다. 공격자는 flashloan으로 빌려준 100,000 BUSD를 BTB로 교환하는데 사용한 것을 확인할 수 있습니다.

따라서 공격자가 PancakeSwapV2를 사용하여 대량의 BUSD를 BTB로 교환하기 전에

예비0은 다음과 같습니다:

1,327,362,530,716,302,619,951,383,

예비1은 다음과 같습니다:

5047758199614262100984,

상환 후 Reserve0은 다음과 같습니다.

63934622394514316973499,

예비1은 다음과 같습니다:

105047758199614262100984.

제로아워 기술 |BTB 공격 이벤트 분석 ||

getPrice에 getAmountOut을 구현하면 공격자가 BTB를 상환하기 전후의 BTB 가격 변동을 계산할 수 있습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

우리는 BTB의 가격이 1 BTB = 0.00379143964708692 BUSD에서 1 BTB = 1.6381204893766859 BUSD로 증가한 것으로 계산했습니다. 가격이 400배 이상 인상되었습니다.

따라서 공격자는 3052 BTB를 사용하여 4999 BUSD로 교환했습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

마지막으로 공격자는 남은 1,260,375 BTB를 사용하여 팬케이크SwapV2에서 99,964 BUSD를 상환했습니다.

제로아워 기술 |BTB 공격 이벤트 분석 ||

공격자는 플래시론 대출금과 이자 100,100 BUSD를 반환한 후 4,863 BUSD의 수익을 냈습니다.

요약

이 취약점의 원인은 프로젝트 팀이 BTB를 BUSD로 교환을 완료할 때 오래된 가격 오라클을 사용했기 때문에 공격자가 BTB의 가격을 쉽게 조작하고 먼저 BTB를 대량으로 구매한 후 BTB의 가격을 인상할 수 있었기 때문입니다. 매진하다. 드디어 차익거래가 완료되었습니다. 프로젝트 당사자는 가격 오라클 및 코드 운영 로직을 설계할 때 다자간 검증을 수행하고 계약이 온라인화되기 전에 교차 감사를 위해 여러 감사 회사를 선택하는 것이 좋습니다.