Lỗ hổng triển khai Yêu cầu bình luận Ethereum (ERC)-6492: Tận dụng bỏ qua isValidSignature thông qua hợp đồng được biên dịch trước

Bài viết này được dịch máy
Xem bản gốc
Vào ngày 23 tháng 1 năm 2025, lỗ hổng trong hợp đồng OdosLimitOrderRouter của giao thức ODOS đã bị khai thác, dẫn đến việc mất khoảng 50.000 USD trên EthereumBase. Cuộc tấn công này được gây ra bởi lỗ hổng gọi tùy ý do đầu vào người dùng không được xác minh kết hợp với hợp đồng được biên dịch trước để vượt qua kiểm tra chữ ký. Tổng quan Hợp đồng của kẻ tấn công: https://basescan.org/address/0x22a7da241a39f189a8aec269a6f11a238b6086fc Hợp đồng dễ bị tấn công: https://basescan.org/address/0xb6333e994fd02a9255e794c177efbdeb1fe779c7 Giao dịch tấn công: https://basescan.org/tx/0xd10faa5b33ddb501b1dc6430896c966048271f2510ff9ed681dd6d510c5df9f6 Phân tích lỗ hổng - Kẻ tấn công tập trung vào việc khai thác gọi tùy ý, được sử dụng để triển khai hợp đồng ERC6492. Họ có thể sử dụng gọi tùy ý để đánh cắp Bit từ hợp đồng này bằng cách sử dụng ERC20.transfer nhưng phải vượt qua kiểm tra chữ ký IERC1271Wallet(_signer).isValidSignature, điều này ban đầu dường như là không thể vì mã độ dài của _signer phải bằng không - có nghĩa là nó không thể được thực thi. Tuy nhiên, một số hợp đồng đặc biệt có độ dài mã bằng không nhưng vẫn có thể thực hiện các lệnh: hợp đồng được biên dịch trước. - Kẻ tấn công đã sử dụng hợp đồng pre-compiled 0x4 Identity, được thiết kế để sao chép dữ liệu giữa các phần bộ nhớ. Sau khi đánh cắp Bit bằng cách sử dụng gọi tùy ý, kẻ tấn công đã vượt qua kiểm tra chữ ký bằng cách sử dụng hợp đồng 0x4 làm _signer. Hợp đồng đã gọi IERC1271Wallet(0x4).isValidSignature mà không bị hoàn tác, hoàn thành thành công cuộc khai thác. Kết luận Khi xây dựng dự án của riêng bạn, đừng tin bất kỳ đầu vào người dùng nào. Bất kỳ tham số nào được cung cấp đều phải được mã hóa xác thực cẩn thận. Các cuộc gọi đến các hợp đồng không đáng tin cậy có thể giới thiệu nhiều rủi ro hoặc lỗi bất ngờ. Các cuộc gọi bên ngoài có thể kích hoạt mã độc, hoặc trong hợp đồng đích hoặc trong hệ sinh thái của nó. Mọi cuộc gọi bên ngoài phải được coi là một rủi ro bảo mật tiềm ẩn và phải được xử lý với cực kỳ thận trọng. Hãy rất cẩn thận khi sử dụng độ dài mã hợp đồng, vì điều này có thể giới thiệu các vấn đề thực sự với bộ khởi tạo hợp đồng và các hợp đồng được biên dịch trước. Các giao thức sử dụng ERC-6492 nên kiểm tra cẩn thận để giảm thiểu các rủi ro tương tự. Ngoài ra, rất khuyến nghị tiến hành kiểm định bảo mật, không chỉ đối với phiên bản phát hành đầu tiên mà còn đối với bất kỳ tính năng mới nào được thêm vào trong tương lai. Do quá trình nâng cấp có thể giới thiệu các vấn đề khác nhau, nó cũng nên được kiểm tra kỹ lưỡng.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận