Phân tích an toàn hợp đồng NFT: Tổng quan sự kiện nửa đầu năm 2022 và thảo luận về các vấn đề phổ biến
Trong nửa đầu năm 2022, các sự kiện an ninh trong lĩnh vực NFT xảy ra thường xuyên, gây ra thiệt hại kinh tế lớn. Theo thống kê, trong nửa năm này đã xảy ra 10 sự kiện an ninh NFT nghiêm trọng, tổng thiệt hại lên tới 64,9 triệu đô la. Các phương thức tấn công chủ yếu bao gồm khai thác lỗ hổng hợp đồng, rò rỉ khóa riêng và lừa đảo. Đáng lưu ý, các cuộc tấn công lừa đảo trên nền tảng Discord đặc biệt hoành hành, gần như mỗi ngày có máy chủ bị tấn công, khiến nhiều người dùng gánh chịu thiệt hại do nhấp vào các liên kết độc hại.
Phân tích sự kiện an toàn điển hình
Sự kiện TreasureDAO
Vào ngày 3 tháng 3, nền tảng giao dịch TreasureDAO đã bị tấn công, hơn 100 NFT đã bị đánh cắp. Vấn đề nằm ở hàm buyItem của hợp đồng TreasureMarketplaceBuyer. Hàm này khi tính toán tổng giá chưa kiểm tra loại mã thông báo, mà trực tiếp nhân số lượng với đơn giá. Điều này đã cho phép kẻ tấn công có thể gọi hàm buyItem của hợp đồng TreasureMarketplace để mua mã thông báo với số tiền thanh toán ERC-20 bằng 0.
Nguyên nhân gốc rễ là sự nhầm lẫn logic do việc sử dụng đồng ERC-1155 và ERC-721 cùng nhau. Đồng ERC-721 bản thân nó không có khái niệm về số lượng, nhưng hợp đồng lại tính giá mua bằng số lượng, và trong quá trình chuyển nhượng cuối cùng không có sự phân tách logic.
Sự kiện airdrop APE Coin
Vào ngày 17 tháng 3, các hacker đã thu được hơn 60.000 APE Coin airdrop thông qua một khoản vay chớp nhoáng. Vấn đề nằm ở hợp đồng airdrop của AirdropGrapesToken. Hợp đồng sử dụng alpha.balanceOf() và beta.balanceOf() để xác định quyền sở hữu NFT BAYC/MAYC của người gọi, nhưng cách này chỉ có thể lấy trạng thái quyền sở hữu NFT của người dùng tại một thời điểm, và trạng thái này có thể bị thao túng thông qua khoản vay chớp nhoáng. Kẻ tấn công đã lợi dụng lỗ hổng này, vay BAYC NFT thông qua khoản vay chớp nhoáng và nhận được airdrop tương ứng.
Sự kiện Revest Finance
Vào ngày 27 tháng 3, dự án Revest Finance đã bị tấn công, thiệt hại khoảng 120.000 đô la Mỹ. Đây là một cuộc tấn công điển hình bằng cách tái nhập ERC-1155. Vấn đề nằm ở hợp đồng Revest. Khi người dùng sử dụng depositAdditionalToFNFT() để bổ sung tài sản thế chấp FNFT, hợp đồng cần phải hủy FNFT cũ trước, sau đó mới đúc FNFT mới. Tuy nhiên, trong quá trình đúc, hàm min() không kiểm tra xem FNFT cần đúc đã tồn tại hay chưa, và biến trạng thái fnftId được tự tăng sau hàm _mint(). Trong _min() có một cuộc gọi bên ngoài ẩn của ERC-1155 là _doSafeTransferAcceptanceCheck(), điều này đã tạo ra lỗ hổng tái nhập.
Sự kiện NBA lợi dụng
Vào ngày 21 tháng 4, dự án NBA đã bị tấn công. Vấn đề nằm ở cơ chế xác minh chữ ký của hợp đồng The_Association_Sales. Chủ yếu có hai mối nguy cơ an ninh: giả mạo chữ ký và tái sử dụng chữ ký. Tái sử dụng chữ ký xảy ra do hợp đồng không lưu trữ chữ ký đã được sử dụng, dẫn đến kẻ tấn công có thể nhiều lần sử dụng lại cùng một chữ ký. Giả mạo chữ ký là do tham số info của vData memory trong quá trình truyền tham số không thực hiện kiểm tra msg.sender, khiến cho chữ ký có thể bị giả mạo.
Sự kiện Akutar
Vào ngày 23 tháng 4, hợp đồng AkuAuction của dự án NFT Akutar đã bị khóa 11539ETH (khoảng 34 triệu USD) do lỗi. Hợp đồng này có hai lỗ hổng logic:
Hàm hoàn tiền processRefunds sử dụng hàm call để thực hiện hoàn tiền và lấy kết quả hoàn tiền làm điều kiện yêu cầu. Kẻ tấn công có thể cố ý revert trong fallback, dẫn đến việc không thể thực hiện hoạt động hoàn tiền của toàn bộ hợp đồng.
Hai điều kiện kiểm tra trong hàm hoàn tiền không xem xét trường hợp người dùng có thể đấu thầu nhiều NFT, dẫn đến việc các hoạt động hoàn tiền sau này của bên dự án không bao giờ có thể thực hiện.
Sự kiện XCarnival
Vào ngày 24 tháng 6, giao thức cho vay NFT XCarnival đã bị tấn công, hacker đã thu lợi 3087 Ether (khoảng 3,8 triệu USD). Vấn đề nằm ở hàm pledgeAndBorrow của hợp đồng XNFT. Hàm này không kiểm tra xem địa chỉ xToken do kẻ tấn công gửi vào có nằm trong danh sách trắng của dự án hay không khi thế chấp NFT, và không kiểm tra trạng thái của các bản ghi thế chấp khi cho vay, dẫn đến việc kẻ tấn công có thể sử dụng nhiều lần các bản ghi thế chấp không hợp lệ để vay tiền.
Các câu hỏi thường gặp về kiểm toán hợp đồng NFT
Sử dụng và tái sử dụng chữ ký:
Dữ liệu ký thiếu xác thực thực hiện lại, như thiếu nonce người dùng, dẫn đến việc dữ liệu ký có thể được sử dụng lại để đúc NFT.
Kiểm tra chữ ký không hợp lý, như không kiểm tra trường hợp người ký là địa chỉ không, dẫn đến bất kỳ người dùng nào cũng có thể thông qua kiểm tra để đúc tiền.
Lỗ hổng logic:
Quản trị viên hợp đồng có thể đúc tiền theo cách đặc biệt mà không bị giới hạn tổng số lượng, dẫn đến lượng NFT thực tế vượt quá mong đợi.
Khi đấu giá NFT, người chiến thắng có thể sử dụng tấn công phụ thuộc vào thứ tự giao dịch để sửa đổi giá thầu, nhận NFT với giá thấp.
Tấn công tái nhập ERC721/ERC1155:
Sử dụng chức năng thông báo chuyển khoản (hàm onERC721Received), hợp đồng NFT gửi cuộc gọi đến hợp đồng mục tiêu chuyển khoản có thể dẫn đến tấn công tái nhập.
Phạm vi ủy quyền quá lớn:
Yêu cầu cấp quyền _operatorApprovals khi đặt cược hoặc đấu giá, thay vì cấp quyền cho từng token riêng lẻ, làm tăng rủi ro bị đánh cắp NFT.
Kiểm soát giá:
Giá NFT phụ thuộc vào số lượng token nắm giữ của một hợp đồng, kẻ tấn công có thể lợi dụng vay chớp nhoáng để đẩy giá token lên cao, dẫn đến việc NFT thế chấp bị thanh lý bất thường.
Vì sự cố an toàn hợp đồng NFT xảy ra thường xuyên, và các lỗ hổng được phát hiện trong quá trình kiểm toán thường phù hợp với các cuộc tấn công thực tế, việc tìm kiếm các công ty an ninh chuyên nghiệp để tiến hành kiểm toán toàn diện hợp đồng NFT trở nên đặc biệt quan trọng.
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
16 thích
Phần thưởng
16
6
Đăng lại
Chia sẻ
Bình luận
0/400
BrokeBeans
· 21giờ trước
Hợp đồng lại có sự cố rồi, ai dám mua nữa đây?
Xem bản gốcTrả lời0
CryptoNomics
· 21giờ trước
*thở dài* áp dụng phân tích chuỗi Markov, những cuộc hack này hiển thị 73,4% Tính tương quan với việc kiểm toán hợp đồng kém. thống kê là điều không thể tránh khỏi.
Xem bản gốcTrả lời0
blockBoy
· 21giờ trước
Tsk, ngày nào cũng có lỗ hổng.
Xem bản gốcTrả lời0
ILCollector
· 21giờ trước
Ai, mấy chục triệu đô lại biến mất như vậy, thật sự thấy tiếc cho những người đang cắt lỗ.
Xem bản gốcTrả lời0
SorryRugPulled
· 21giờ trước
Lại bị dc câu cá hỏng rồi.
Xem bản gốcTrả lời0
GweiTooHigh
· 21giờ trước
Lại thấy hợp đồng bị lợi dụng, không có điểm dừng.
Phân tích rủi ro an toàn hợp đồng NFT: Tổng quan sự kiện nửa đầu năm 2022 và các điểm cần chú ý trong kiểm toán
Phân tích an toàn hợp đồng NFT: Tổng quan sự kiện nửa đầu năm 2022 và thảo luận về các vấn đề phổ biến
Trong nửa đầu năm 2022, các sự kiện an ninh trong lĩnh vực NFT xảy ra thường xuyên, gây ra thiệt hại kinh tế lớn. Theo thống kê, trong nửa năm này đã xảy ra 10 sự kiện an ninh NFT nghiêm trọng, tổng thiệt hại lên tới 64,9 triệu đô la. Các phương thức tấn công chủ yếu bao gồm khai thác lỗ hổng hợp đồng, rò rỉ khóa riêng và lừa đảo. Đáng lưu ý, các cuộc tấn công lừa đảo trên nền tảng Discord đặc biệt hoành hành, gần như mỗi ngày có máy chủ bị tấn công, khiến nhiều người dùng gánh chịu thiệt hại do nhấp vào các liên kết độc hại.
Phân tích sự kiện an toàn điển hình
Sự kiện TreasureDAO
Vào ngày 3 tháng 3, nền tảng giao dịch TreasureDAO đã bị tấn công, hơn 100 NFT đã bị đánh cắp. Vấn đề nằm ở hàm buyItem của hợp đồng TreasureMarketplaceBuyer. Hàm này khi tính toán tổng giá chưa kiểm tra loại mã thông báo, mà trực tiếp nhân số lượng với đơn giá. Điều này đã cho phép kẻ tấn công có thể gọi hàm buyItem của hợp đồng TreasureMarketplace để mua mã thông báo với số tiền thanh toán ERC-20 bằng 0.
Nguyên nhân gốc rễ là sự nhầm lẫn logic do việc sử dụng đồng ERC-1155 và ERC-721 cùng nhau. Đồng ERC-721 bản thân nó không có khái niệm về số lượng, nhưng hợp đồng lại tính giá mua bằng số lượng, và trong quá trình chuyển nhượng cuối cùng không có sự phân tách logic.
Sự kiện airdrop APE Coin
Vào ngày 17 tháng 3, các hacker đã thu được hơn 60.000 APE Coin airdrop thông qua một khoản vay chớp nhoáng. Vấn đề nằm ở hợp đồng airdrop của AirdropGrapesToken. Hợp đồng sử dụng alpha.balanceOf() và beta.balanceOf() để xác định quyền sở hữu NFT BAYC/MAYC của người gọi, nhưng cách này chỉ có thể lấy trạng thái quyền sở hữu NFT của người dùng tại một thời điểm, và trạng thái này có thể bị thao túng thông qua khoản vay chớp nhoáng. Kẻ tấn công đã lợi dụng lỗ hổng này, vay BAYC NFT thông qua khoản vay chớp nhoáng và nhận được airdrop tương ứng.
Sự kiện Revest Finance
Vào ngày 27 tháng 3, dự án Revest Finance đã bị tấn công, thiệt hại khoảng 120.000 đô la Mỹ. Đây là một cuộc tấn công điển hình bằng cách tái nhập ERC-1155. Vấn đề nằm ở hợp đồng Revest. Khi người dùng sử dụng depositAdditionalToFNFT() để bổ sung tài sản thế chấp FNFT, hợp đồng cần phải hủy FNFT cũ trước, sau đó mới đúc FNFT mới. Tuy nhiên, trong quá trình đúc, hàm min() không kiểm tra xem FNFT cần đúc đã tồn tại hay chưa, và biến trạng thái fnftId được tự tăng sau hàm _mint(). Trong _min() có một cuộc gọi bên ngoài ẩn của ERC-1155 là _doSafeTransferAcceptanceCheck(), điều này đã tạo ra lỗ hổng tái nhập.
Sự kiện NBA lợi dụng
Vào ngày 21 tháng 4, dự án NBA đã bị tấn công. Vấn đề nằm ở cơ chế xác minh chữ ký của hợp đồng The_Association_Sales. Chủ yếu có hai mối nguy cơ an ninh: giả mạo chữ ký và tái sử dụng chữ ký. Tái sử dụng chữ ký xảy ra do hợp đồng không lưu trữ chữ ký đã được sử dụng, dẫn đến kẻ tấn công có thể nhiều lần sử dụng lại cùng một chữ ký. Giả mạo chữ ký là do tham số info của vData memory trong quá trình truyền tham số không thực hiện kiểm tra msg.sender, khiến cho chữ ký có thể bị giả mạo.
Sự kiện Akutar
Vào ngày 23 tháng 4, hợp đồng AkuAuction của dự án NFT Akutar đã bị khóa 11539ETH (khoảng 34 triệu USD) do lỗi. Hợp đồng này có hai lỗ hổng logic:
Sự kiện XCarnival
Vào ngày 24 tháng 6, giao thức cho vay NFT XCarnival đã bị tấn công, hacker đã thu lợi 3087 Ether (khoảng 3,8 triệu USD). Vấn đề nằm ở hàm pledgeAndBorrow của hợp đồng XNFT. Hàm này không kiểm tra xem địa chỉ xToken do kẻ tấn công gửi vào có nằm trong danh sách trắng của dự án hay không khi thế chấp NFT, và không kiểm tra trạng thái của các bản ghi thế chấp khi cho vay, dẫn đến việc kẻ tấn công có thể sử dụng nhiều lần các bản ghi thế chấp không hợp lệ để vay tiền.
Các câu hỏi thường gặp về kiểm toán hợp đồng NFT
Sử dụng và tái sử dụng chữ ký:
Lỗ hổng logic:
Tấn công tái nhập ERC721/ERC1155:
Phạm vi ủy quyền quá lớn:
Kiểm soát giá:
Vì sự cố an toàn hợp đồng NFT xảy ra thường xuyên, và các lỗ hổng được phát hiện trong quá trình kiểm toán thường phù hợp với các cuộc tấn công thực tế, việc tìm kiếm các công ty an ninh chuyên nghiệp để tiến hành kiểm toán toàn diện hợp đồng NFT trở nên đặc biệt quan trọng.