Hợp đồng NFT ERC721 cung cấp hai tùy chọn để chuyển NFT: transferFrom và safeTransferFrom . Bạn có thể thắc mắc liệu safeTransferFrom có an toàn hơn transferFrom không? Câu trả lời là có hoặc không. Hãy chia nhỏ nó ra:
Sự an toàn của
safeTransferFrom: Phương pháp này bao gồm kiểm tra để đảm bảo người nhận có thể xử lý chính xác NFT ERC721. Điều này có nghĩa là NFT ít có khả năng bị "kẹt" hơn nếu người nhận là hợp đồng thiếu chức năng xử lý NFT cần thiết.Cảnh báo về an toàn: Mặc dù
safeTransferFromcung cấp biện pháp bảo vệ cho chính NFT nhưng nó không đảm bảo sự an toàn cho hợp đồng của bạn. Trên thực tế, nó có thể gây ra lỗ hổng cho các cuộc tấn công reentrancy. Điều này là do nó kích hoạt một chức năng trong hợp đồng người nhận nếu người nhận là một hợp đồng khác.
Tổng quan
Kẻ tấn công : https://optimistic.etherscan.io/address/0x1fd0a6a5e232eeba8020a40535ad07013ec4ef12 Hợp đồng tấn công: https://optimistic.etherscan.io/address/0xe4d41bdd6459198b33cc795ff280cee02d91087b Hợp đồng dễ bị tổn thương: https://optimistic.etherscan.io /địa chỉ/0x5499178919c79086fd580d6c5f332a4253244d91 Tấn công TX: https://optimistic.etherscan.io/tx/0xf4fc3b638f1a377cf22b729199a9aeb27fc62fe2983a65c4d14b99ee5c5b2328
Phân tích khai thác
Lỗ hổng bị khai thác bắt nguồn từ lỗ hổng reentrancy trong hàm withdrawNft do nó sử dụng safeTransferFrom khi trả về NFT.
Phần kết luận
Mẫu kiểm tra-Hiệu ứng-Tương tác : Mẫu này nhấn mạnh việc cập nhật các biến trạng thái của hợp đồng của bạn trước khi thực hiện bất kỳ lệnh gọi bên ngoài nào. Điều này ngăn kẻ tấn công thao túng trạng thái của hợp đồng trong cuộc gọi bên ngoài.
ReentrancyGuard : Cân nhắc sử dụng cơ chế
ReentrancyGuardtrong tất cả các chức năng công khai/bên ngoài. Điều này thêm một công cụ sửa đổi ngăn các chức năng được nhập lại trước khi cuộc gọi ban đầu hoàn tất.
Để bảo mật tối đa, bạn nên áp dụng cả hai phương pháp trong hợp đồng của mình bất cứ khi nào có thể. Mặc dù ReentrancyGuard phải chịu một khoản chi phí gas nhỏ nhưng nó cung cấp thêm một lớp bảo vệ chống lại các cuộc tấn công reentrancy.
Cảm ơn đã đọc Verichains! Đăng ký miễn phí để nhận bài viết mới và hỗ trợ công việc của tôi.







