계약 주소
관련 정보
계약 주소
TreasureMarketplaceBuyer:
0x812cda2181ed7c45a35a691e0c85e231d218e273
TreasureMarketplace:
0x2e3b85f85628301a0bce300dee3a6b04195a15ee
취약점 상세 분석
1. 사용자는 TreasureMarketplaceBuyer 계약의 buyItem 기능을 통해 NFT를 구매합니다.이 기능은 먼저 총 구매 가격을 계산하고 결제에 필요한 Token을 계약에 입력한 다음 TreasureMarketplace 계약의 buyItem을 호출하여 시장에서 NFT를 구매합니다. TreasureMarketplaceBuyer 계약으로 전환한 다음 TreasureMarketplaceBuyer 계약에서 사용자에게 NFT를 전송합니다.
2. TreasureMarketplace 계약에서:
들어오는 _quantity 매개변수가 0이면 require(listedItem.quantity >= _quantity,"not enough quantity"공격 트랜잭션 분석
공격 트랜잭션 분석
여기에는 하나의 공격 트랜잭션에 대한 세부 정보만 표시되며 다른 공격 트랜잭션의 방법은 동일하므로 여기서는 반복하지 않겠습니다.
공격 트랜잭션:
https://arbiscan.io/tx/0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02
공격자:
0x4642d9d9a434134cb005222ea1422e1820508d7b
공격 세부 정보:
아래 그림에서 볼 수 있듯이 공격자는 TreasureMarketplaceBuyer 계약에서 buyItem 함수를 호출하고 들어오는 _quantity 매개변수를 0으로 만듭니다.
요약하다
요약하다
이 취약점의 핵심은 ERC-721 규격의 NFT를 전송하기 전에 들어오는 _quantity 파라미터가 0이 아니라는 판단력이 부족하여 ERC-721 규격의 NFT를 전송할 수 있다는 점입니다. 가격 산정 시 NFT를 직접 구매하고 필요한 비용을 0으로 계산합니다. 이러한 취약점에 대응하여 SlowMist 보안팀은 ERC-721 표준의 NFT를 전송하기 전에 이러한 문제가 다시 발생하지 않도록 들어오는 수량에 대한 올바른 판단이 필요하다고 권고합니다.