Lỗi kịch bản nâng cấp gây ra vụ hack cầu Ronin — Verichains

Lỗi kịch bản nâng cấp gây ra vụ hack cầu Ronin — Verichains

Vụ hack cầu Ronin trị giá 10 triệu đô la vào ngày 6 tháng 8 là do một kịch bản nâng cấp bị lỗi, theo báo cáo từ công ty bảo mật blockchain Verichains.

Nâng cấp này đã giảm ngưỡng bỏ phiếu cho các validator xuống còn không, về cơ bản cho phép bất kỳ người dùng nào rút tiền từ cầu mà không cần chữ ký, Verichains cho biết.

Chủ sở hữu của bot sau đó đã trả lại phần lớn số tiền cho đội ngũ Ronin.

Phân tích của Verichains cho thấy rõ những rủi ro mà người dùng phải đối mặt khi tương tác với các hợp đồng thông minh có thể nâng cấp. Giao thức có thể đã mất toàn bộ số tiền nếu kẻ tấn công trả nhiều phí gas hơn và do đó tránh được frontrunner.

Ronin là một mạng blockchain dành riêng cho việc lưu trữ các trò chơi Web3. Nó nổi tiếng nhất là nơi lưu trữ Axie Infinity, một trò chơi nuôi quái vật để kiếm tiền đã tuyên bố có hơn 2 triệu người chơi trong thời kỳ đỉnh cao vào năm 2022. Người chơi game Ronin sử dụng cầu để chuyển tiền giữa Ethereum và Ronin.

Theo báo cáo của Verichains, cầu này dựa vào biến số minimumVoteWeight để ngăn người dùng rút tiền không thuộc về họ. Mỗi giao dịch phải được ủy quyền bởi một số lượng tối thiểu các validator được đặt bởi biến số này. Khi minimumVoteWeight được tính toán, nó sử dụng một biến khác, totalWeight, làm đầu vào.

TotalWeight trong phiên bản trước của Ronin

Trong các phiên bản trước của cầu, totalWeight tồn tại trên một hợp đồng riêng biệt, gọi là “MainchainBridgeManager.” Khi các nhà phát triển tạo ra bản nâng cấp mới, họ muốn chuyển biến số này vào bộ nhớ nội bộ của cầu, thay vì để nó trong hợp đồng khác. Điều này có nghĩa là họ cần khởi tạo biến số tại thời điểm triển khai, đặt TotalWeight vào giá trị mà nó đã có trong phiên bản trước.

Thật không may, đây là nơi mà nâng cấp đã sai lầm nghiêm trọng. Theo Verichains, các nhà phát triển Ronin đã viết nhiều hàm “initialize” khác nhau mà đáng lẽ phải được gọi tại thời điểm triển khai. Mỗi hàm này có một số phiên bản khác nhau. Phiên bản thứ ba chứa khởi tạo totalWeight quan trọng. Nhưng khi các nhà phát triển viết kịch bản triển khai, họ chỉ gọi phiên bản 4, để lại totalWeight ở giá trị mặc định là không.

Nguồn: Verichains

Sau nâng cấp này, người dùng không còn cần phải nộp chữ ký cho các validator để chứng minh quyền rút tiền của họ. Họ có thể rút tiền “mà không cần chữ ký,” vì “nó đáp ứng điều kiện minimumVoteWeight (là 0 do chưa được khởi tạo).”

Trong một bài đăng ngày 7 tháng 8 trên X, kiểm toán viên hợp đồng thông minh của Composable Security, Damian Rusinek, đã cung cấp thêm chi tiết về những gì đã cho phép cuộc tấn công xảy ra. Theo Rusinek, kẻ tấn công đã cung cấp một chữ ký từ một địa chỉ kết thúc bằng B849f. Tuy nhiên, địa chỉ này “không có trong danh sách các nhà vận hành cầu.” Nó không cần phải có trong danh sách các nhà vận hành cầu vì “số phiếu tối thiểu của các nhà vận hành là 0.” Do đó, “chỉ cần MỘT chữ ký và nó có thể là BẤT KỲ chữ ký hợp lệ nào.”

Mặc dù không đi vào chi tiết như Verichains hay Rusinek, Ronin đã xác nhận trong một bài đăng ngày 6 tháng 8 trên X rằng vụ khai thác xảy ra khi nâng cấp “đã giới thiệu một vấn đề dẫn đến cầu hiểu sai ngưỡng bỏ phiếu của các nhà vận hành cầu cần thiết để rút tiền.”

Dữ liệu blockchain cho thấy giao dịch tấn công này đã bị frontrun bởi một bot MEV gọi là “Frontrunner Yoink,” người đã thành công rút hơn 10 triệu đô la tiền điện tử từ cầu. Theo Rusinek, bot này có khả năng “mô phỏng việc thay đổi địa chỉ và số tiền và sử dụng chữ ký của riêng họ.” Sau đó, nó đã nộp giao dịch khi mô phỏng này chứng minh rằng vụ khai thác sẽ thành công.

Chủ sở hữu của Frontrunner Yoink đã trả lại phần lớn số tiền trong cùng ngày, và đội ngũ Ronin thông báo rằng họ sẽ được phép giữ lại 500.000 đô la như một phần thưởng lỗi.

Người dùng Ronin đã gặp một tình huống nguy hiểm với vụ khai thác ngày 6 tháng 8. May mắn thay, cuộc tấn công đã bị frontrun bởi một bot MEV mà chủ sở hữu là một nhà vận hành mũ trắng trung thực. Tuy nhiên, thực tế rằng cuộc tấn công đã gần như thành công cho thấy tính chất rủi ro của các cầu nối chuỗi chéo có thể nâng cấp.

Một số mạng lưới tuyên bố rằng vấn đề này sẽ được loại bỏ khi các lớp 2 của Ethereum đạt đến “giai đoạn 2” và tất cả các nâng cấp bị trì hoãn ít nhất bảy ngày sau khi khởi tạo. Tuy nhiên, các nhà phê bình cho rằng quá trình đạt đến giai đoạn này đang mất quá nhiều thời gian và có thể không bao giờ hoàn thành.

Chain Việt Nam