địa chỉ hợp đồng
Thông tin liên quan
địa chỉ hợp đồng
TreasureMarketplaceBuyer:
0x812cda2181ed7c45a35a691e0c85e231d218e273
TreasureMarketplace:
0x2e3b85f85628301a0bce300dee3a6b04195a15ee
Phân tích chi tiết lỗ hổng
1. Người dùng mua NFT thông qua chức năng buyItem trong hợp đồng TreasureMarketplaceBuyer. Chức năng này trước tiên sẽ tính toán tổng giá mua và nhập Mã thông báo cần thiết để thanh toán vào hợp đồng, sau đó gọi buyItem trong hợp đồng TreasureMarketplace để mua NFT từ thị trường đến hợp đồng TreasureMarketplaceBuyer và sau đó chuyển NFT cho người dùng từ hợp đồng TreasureMarketplaceBuyer.
2. Trong hợp đồng TreasureMarketplace:
Có thể thấy rằng nếu tham số _quantity đến là 0, bạn có thể chuyển trực tiếp yêu cầu (listedItem.quantity >= _quantity,"not enough quantity"Phân tích giao dịch tấn công
Phân tích giao dịch tấn công
Chỉ có chi tiết của một giao dịch tấn công được hiển thị ở đây và phương thức của các giao dịch tấn công khác là như nhau, vì vậy tôi sẽ không nhắc lại chúng ở đây.
Giao dịch tấn công:
https://arbiscan.io/tx/0x82a5ff772c186fb3f62bf9a8461aeadd8ea0904025c3330a4d247822ff34bc02
kẻ tấn công:
0x4642d9d9a434134cb005222ea1422e1820508d7b
Chi tiết tấn công:
Như có thể thấy từ hình bên dưới, kẻ tấn công gọi hàm buyItem trong hợp đồng TreasureMarketplaceBuyer và đặt tham số _quantity đến bằng 0.
tóm tắt
tóm tắt
Cốt lõi của lỗ hổng này là trước khi chuyển NFT của chuẩn ERC-721 đã thiếu phán đoán rằng tham số _quantity đến không phải là 0, dẫn đến có thể chuyển NFT của chuẩn ERC-721 trực tiếp và việc mua NFT khi tính giá Chi phí yêu cầu được tính bằng 0. Để đối phó với các lỗ hổng như vậy, nhóm bảo mật SlowMist khuyến nghị rằng trước khi chuyển NFT của tiêu chuẩn ERC-721, cần phải đánh giá đúng về số lượng đến để tránh những sự cố như vậy xảy ra lần nữa.