Ngày 1 tháng 8 năm 2022, cầu cross-chain Nomad bị tấn công. Kết quả: 190,7 triệu USD biến mất khỏi hợp đồng thông minh trong vòng 2 giờ 15 phút. Đây là vụ hack cầu lớn thứ hai trong lịch sử, chỉ sau Ronin (620 triệu USD). Tuy nhiên, điều khiến vụ này khác biệt không phải số tiền, mà là cơ chế khai thác: không cần kỹ năng cao, chỉ cần sao chép giao dịch từ kẻ tấn công đầu tiên. Một lỗ hổng lười biếng, nhưng mang tính hệ thống.
Bối cảnh: Nomad là cầu nối cho phép chuyển tài sản giữa các chuỗi tương thích EVM và các chuỗi khác. Ra mắt tháng 4 năm 2022, nó huy động 22,4 triệu USD từ Polychain Capital, Coinbase Ventures, và những tên tuổi lớn khác. Cầu này sử dụng mô hình “Optimistic Bridge” – một biến thể của optimistic rollup, với giả định rằng giao dịch được coi là hợp lệ trừ khi bị thách thức trong một cửa sổ thời gian. Nomad đã được audit bởi Quantstamp và Zellic, nhưng cả hai đều bỏ sót lỗi chết người: hàm process trong hợp đồng chính cho phép bất kỳ ai gửi giao dịch với bất kỳ message nào, miễn là message đó đã được ký bởi “root” hợp lệ. Vấn đề: do một lỗi trong quá trình nâng cấp proxy, hàm process không kiểm tra rằng message thực sự được ký bởi trusted root. Nó trực tiếp sử dụng message được gửi vào, mà không xác minh chữ ký.
Cốt lõi của vấn đề nằm ở chi tiết kỹ thuật. Hợp đồng Nomad có một biến message lưu trữ dữ liệu tạm thời. Trong bản cập nhật ngày 8 tháng 7 năm 2022, đội ngũ đã vô tình xóa một dòng kiểm tra: require(message.length == 52, “Trojan”); – dòng này đảm bảo rằng message được gửi vào thực sự khớp với root của block đã được xác nhận. Sau khi xóa, kẻ tấn công có thể gửi message giả mạo với bất kỳ giá trị nào. Bước khai thác: kẻ đầu tiên (địa chỉ 0x5567… ) gửi một message có nội dung chuyển nhượng WETH từ cầu về chuỗi đích, nhưng không có chữ ký hợp lệ. Hợp đồng chấp nhận. Sau đó, hàng trăm kẻ khác sao chép cùng một giao dịch, chỉ thay đổi địa chỉ nhận. Kết quả: 41 địa chỉ khai thác, mỗi địa chỉ rút trung bình 4,6 triệu USD. Dữ liệu on-chain cho thấy giao dịch đầu tiên chỉ rút 0,2 ETH – thử nghiệm. Chỉ 10 phút sau, dòng tiền lớn. Điều thú vị: kẻ tấn công đầu tiên đã trả lại toàn bộ số tiền (khoảng 130 ETH) vài ngày sau đó, nhưng điều đó không ngăn được tổng thiệt hại.
Phần nghịch lý: phe bò sẽ nói rằng cầu cross-chain vẫn là giải pháp duy nhất cho tương lai đa chuỗi. Họ đúng. Không có cầu, không có interoperability. Nhưng họ sai ở chỗ tin rằng vấn đề chỉ là kỹ thuật. Thực tế, vấn đề là văn hóa. Ngành này chấp nhận rủi ro như một phần của thiết kế. Nomad đã được audit bởi hai công ty hàng đầu, nhưng không ai phát hiện lỗi. Tại sao? Vì audit tập trung vào logic kinh doanh, không phải quản lý trạng thái. Hàm process đã được viết lại nhiều lần, nhưng thay đổi cuối cùng không được review kỹ. Đây là vấn đề quy trình, không phải code. Một lỗi ngớ ngẩn do thiếu quy trình kiểm soát phiên bản. Không có ai đứng ra chịu trách nhiệm. Đội ngũ Nomad tuyên bố “họ đã học được bài học”, nhưng 190 triệu USD là cái giá quá đắt cho một bài học về quản lý cấu hình hợp đồng.
Kết luận: Trong rủi ro, không có ai là vô tội – chỉ có những con số và lỗ hổng. Vụ Nomad không phải là ngoại lệ. Tính đến tháng 5 năm 2024, tổng thiệt hại từ các cầu cross-chain đã vượt 2,5 tỷ USD. Mỗi vụ hack đều có một lý do kỹ thuật riêng, nhưng điểm chung là sự tự mãn. Bạn có dám đặt tài sản của mình vào một hệ thống mà chỉ cần một lỗi cập nhật có thể phá hủy toàn bộ không? Câu trả lời nằm ở số liệu: 2,5 tỷ USD nói rõ hơn bất kỳ whitepaper nào.