2023년 7월 18일(베이징 시간), Ocean BNO는 플래시 론 공격을 받았고 공격자는 약 50만 달러의 이익을 챙겼습니다.
SharkTeam은 이번 사건에 대해 처음으로 기술 분석을 실시하고 보안 예방 조치를 요약하여 후속 프로젝트가 이를 통해 블록체인 산업의 보안 방어선을 공동 구축할 수 있기를 바랍니다.
1. 이벤트 분석
공격자 주소: 0xa6566574edc60d7b2adbacedb71d5142cf2677fb
공격 계약: 0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd
공격받은 계약: 0xdCA503449899d5649D32175a255A8835A03E4006
공격 트랜잭션: 0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9
공격 과정: (1) 공격자(0xa6566574)는 PancakeSwap Flash Loan을 통해 286,449 BNO를 빌렸습니다.
(2) 그런 다음 공격받은 컨트랙트(0xdCA50344)의 stakeNft 함수를 호출하여 2nft를 담보로 합니다.
(3) 그런 다음 공격받은 컨트랙트(0xdCA50344)의 서약 기능을 호출하여 277856 BNO 코인을 서약합니다.
(3) 그런 다음 공격받은 컨트랙트(0xdCA50344)의 서약 기능을 호출하여 277856 BNO 코인을 서약합니다.
(4) 공격받은 컨트랙트(0xdCA50344)의 emergencyWithdraw 함수를 호출하여 모든 BNO를 추출합니다.
(5) 그런 다음 공격받은 컨트랙트(0xdCA50344)의 unstakeNft 함수를 호출하고, 두 개의 약속된 nft를 검색하고 추가 BNO 토큰을 받습니다.
(6) 위 과정을 반복하여 추가 BNO 토큰을 지속적으로 획득
(7) 플래시 론을 상환한 후 모든 BNO 토큰을 50.5W BUSD로 교환하고 수익으로 시장을 떠납니다.
2. 취약점 분석
이번 공격의 근본 원인은 공격받은 컨트랙트(0xdCA50344)의 보상 계산 메커니즘과 긴급 출금 기능의 상호작용 로직에 문제가 있어 사용자가 원금 출금 후 추가 보상 토큰을 받게 되는 것이다.
2. 취약점 분석
이번 공격의 근본 원인은 공격받은 컨트랙트(0xdCA50344)의 보상 계산 메커니즘과 긴급 출금 기능의 상호작용 로직에 문제가 있어 사용자가 원금 출금 후 추가 보상 토큰을 받게 되는 것이다.
컨트랙트는 토큰의 긴급 인출을 위한 EmergencyWithdraw 기능을 제공하고 공격자의 allstake 총 모기지와 rewardDebt 총 부채를 청산하지만 공격자의 nftAddition 변수를 청산하지 않으며 nftAddition 변수도 allstake 변수를 통해 계산됩니다.
unstakeNft 함수에서 사용자의 현재 보상은 여전히 계산되며 nftAddition 변수가 0으로 재설정되지 않으면 pendingFit 함수는 여전히 추가 BNO 보상 값을 반환하여 공격자가 추가 BNO 토큰을 얻도록 합니다.
3. 보안 권장 사항
이 공격에 대응하기 위해 개발 과정에서 다음 예방 조치를 따라야 합니다.
(1) 보상을 계산할 때 사용자가 원금을 인출했는지 확인하십시오.
(2) 프로젝트가 시작되기 전에 제3자 전문 감사 팀의 기술 지원을 받아야 합니다.
회사 소개
SharkTeam의 비전은 Web3 세계의 보안을 포괄적으로 보호하는 것입니다. 이 팀은 전 세계의 숙련된 보안 전문가와 선임 연구원으로 구성되어 있으며 블록체인 및 스마트 계약의 기본 이론에 능숙하고 스마트 계약 감사, 온체인 분석 및 비상 대응을 포함한 서비스를 제공합니다. Polkadot, Moonbeam, 폴리곤, OKC, Huobi Global, imToken, ChainIDE 등과 같은 블록체인 생태계의 다양한 분야의 핵심 플레이어들과 장기적인 협력 관계를 구축했습니다.
공식 홈페이지: https://www.sharkteam.org
트위터: https://twitter.com/sharkteamorg
모든 댓글