Nền tảng hợp đồng thông minh NEAR protocol đã từng có một lỗ hổng có thể khiến kẻ tấn công xoá sổ mọi nút trên hệ thống mạng, dẫn đến tình trạng tê liệt hoàn toàn.
Theo báo cáo ngày 26 tháng 9 từ công ty bảo mật blockchain Zellic, đơn vị đã phát hiện vấn đề này, lỗ hổng đã được âm thầm loại bỏ qua một bản vá vào tháng 1, nhưng một số mạng lưới khác vẫn có thể còn tồn tại những lỗi tương tự.
Trong báo cáo, Zellic đề cập đến lỗ hổng như một “Web3 Ping of Death,” do khả năng làm sập toàn bộ mạng lưới “trong nháy mắt.”
Các nhà nghiên cứu đã phát hiện lỗ hổng này khi điều tra giao thức mạng ngang hàng của NEAR cho các nút xác thực, cho phép các nút xác thực giao tiếp hiệu quả với nhau. NEAR sử dụng một “cơ chế bắt tay” để thiết lập kết nối giữa các nút và đảm bảo rằng các nút không hành động một cách độc hại.
“Peer từ xa,” tức là máy ngang hàng muốn kết nối, gửi một thông điệp bắt tay đến peer cục bộ. Đáp lại, peer cục bộ gửi lại một thông điệp xác nhận.
Trong quá trình này, peer từ xa phải chứng minh danh tính của mình bằng cách cung cấp khóa công khai và ký một thông điệp để chứng minh rằng nó là chủ sở hữu của khóa công khai đó.
Quá trình xác minh danh tính này nhằm ngăn chặn các nút độc hại đã biết kết nối với mạng.
Khi các nhà nghiên cứu xem xét chức năng xác minh chữ ký, họ đã phát hiện ra một sự thật đáng báo động. Các nút cho phép hai loại chữ ký mật mã được chấp nhận.
Loại đầu tiên, dựa trên Thuật toán Chữ ký Kỹ thuật số trên Đường cong Twisted Edwards 25519 (Ed25519), có thể được xác minh một cách an toàn bởi các nút.
Tuy nhiên, khi cố gắng xác minh loại thứ 2, dựa trên Đường cong 256K1 của Tiêu chuẩn Mật mã Hiệu quả (SECP256K1), sẽ dẫn đến phản ứng “hoảng loạn” làm sập nút.
Chức năng xác minh cho loại chữ ký mật mã này chứa hai lỗ hổng khác nhau. Đầu tiên, nó gọi hàm “expect” và yêu cầu câu trả lời không được chứa quá 32 byte dữ liệu.
Tuy nhiên, câu trả lời đưa ra bởi chức năng này không bao giờ có độ dài 32 byte. Điều này có nghĩa là nút sẽ sập bất cứ khi nào nó cố gắng xác minh chữ ký SECP256K1.
thứ 2, nếu byte cuối cùng của chữ ký không nằm trong khoảng từ không đến ba, hàm “from_i32()” được gọi là một phần của quá trình xác minh sẽ tạo ra một lỗi.
Lỗi này sẽ khiến hàm “unwrap()” cuối cùng trong quá trình bị dừng lại, làm sập nút. Điều này có nghĩa là ngay cả khi đã sửa lỗ hổng đầu tiên, kẻ tấn công có thể cố ý tạo một chữ ký độc hại để sập nút bằng lỗ hổng thứ 2.
Sau khi phát hiện ra lỗ hổng này, các nhà nghiên cứu đã ngạc nhiên khi nó chưa từng bị phát hiện trước đây trong các bài kiểm tra hoặc đã làm sập mạng.
Tuy nhiên, họ phát hiện rằng phần mềm nút NEAR không có “đường dẫn mã nào cho phép nút NEAR tạo ra các khóa kiểu SECP256K1”.
Nói cách khác, mặc dù phần mềm cho phép các nút chấp nhận chữ ký SECP256K, nó không cho phép chúng tạo ra các chữ ký như vậy.
Do đó, chưa có nút nào từng vô tình làm sập mạng bằng cách tạo ra các khóa SECP256K và cố gắng kết nối với một nút khác.
Dù vậy, một nút độc hại có thể sửa đổi phần mềm để cho phép tạo ra các khóa SECP256K. Và một khi điều đó được thực hiện, chúng sẽ có khả năng làm sập bất kỳ nút NEAR nào chỉ đơn giản bằng cách cố gắng kết nối với nó. Kết quả có thể hủy hoại toàn bộ mạng, cấu thành một “Web3 Ping of Death”.
Để chứng minh lỗ hổng là có thật, các nhà nghiên cứu đã tạo ra một phiên bản phần mềm NEAR có chứa một bản vá độc hại cho phép tạo ra các khóa SECP256K.
Họ sau đó triển khai hai nút trên phiên bản thử nghiệm riêng của NEAR. Nút đầu tiên chạy phần mềm hợp pháp được các nhà phát triển cung cấp, trong khi nút thứ 2 chạy phiên bản độc hại.
Sau khi nút đầu tiên bắt đầu sản xuất các khối, nút thứ 2 cố gắng làm sập nút đầu tiên bằng cách khai thác hai lỗ hổng. Họ phát hiện ra rằng nút độc hại luôn thành công trong việc làm sập nút hợp pháp.
Zellic đã bí mật báo cáo lỗ hổng này cho nhóm NEAR vào tháng 12, sử dụng nền tảng thưởng lỗi bảo mật HackenProof để thuận tiện trong việc thông báo.
Đáp lại, nhóm đã trả cho Zellic 150,000 USD tiền thưởng và vá phần mềm nút vào tháng 1.
Trong khoảng thời gian từ khi phát hiện đến khi vá, không có kẻ tấn công nào phát hiện ra lỗ hổng, và mạng vẫn hoạt động bình thường.
Việc phát hiện ra lỗ hổng đã đem lại một kết thúc có hậu cho điều có thể đã là một câu chuyện khủng hoảng.
Các blockchain khác không may mắn tránh khỏi các lỗi dẫn đến những cuộc sập mạng. Vào tháng 12, mạng Arbitrum đã ngừng hoạt động hơn 78 phút, khiến người dùng không thể thực hiện giao dịch.
Các nhà phát triển sau đó tiết lộ rằng thời gian ngừng hoạt động này do một sự gia tăng ghi nhận chạm khắc, mà mạng không đủ chuẩn bị để xử lý.
Theo các nhà phát triển, vào tháng 1, khoảng 50% các nút của Cardano đã ngừng hoạt động do một “điểm bất thường”.
Sự gián đoạn này gây chậm trễ trong việc sản xuất khối, dẫn đến thời gian xác nhận giao dịch kéo dài lâu hơn. Dù vậy, nó không làm sập hoàn toàn mạng lưới.
Vào tháng 2, mạng Solana đã không thể sản xuất khối trong hơn 25 phút. Đây là lần sập mạng gần đây nhất trong một chuỗi các lần sập của Solana, đã nhận phải nhiều chỉ trích từ người dùng.