9 giờ sáng ngày 29 tháng 3 năm 2022, tôi đang kiểm tra mã nguồn của một cầu nối mới trên testnet thì nhận được tin nhắn từ một đồng nghiệp: 'Ronin bị hack 625 triệu USD'. Cảm giác như có điện giật chạy dọc sống lưng. Tôi lập tức mở block explorer, xem giao dịch đầu tiên – một khoản rút 173.600 ETH trong một lần gọi hàm. Đó không phải là một exploit phức tạp về mặt kỹ thuật; đó là một sự thất bại trong cách chúng ta tin tưởng những người vận hành mạng lưới.
Để hiểu được chuyện gì đã xảy ra, bạn cần biết Ronin là gì. Ronin là một sidechain Ethereum được Sky Mavis – studio game Việt Nam đứng sau Axie Infinity – xây dựng để giảm phí giao dịch. Cầu nối Ronin cho phép người dùng chuyển tài sản giữa Ethereum và Ronin thông qua một bộ validator. Chín validator cùng ký xác nhận giao dịch; cần năm chữ ký hợp lệ để một giao dịch được thực hiện. Nghe có vẻ phân tán, nhưng thực tế thì bốn trong số chín validator do Sky Mavis kiểm soát, và họ đã lưu private key của các validator đó trên cùng một máy chủ cloud.
Attacker không cần phải là thiên tài; họ chỉ cần tìm ra một yếu điểm trong thiết kế mà không ai ngờ tới. Trong trường hợp này, attacker đã khai thác một lỗ hổng trong hệ thống gas fee của Ronin. Cụ thể, họ gửi một giao dịch giả mạo với phí gas rất thấp, nhưng không có chữ ký hợp lệ. Một trong các validator tự động bỏ qua kiểm tra vì một lỗi trong logic xử lý gas – điều này cho phép attacker dần dần chiếm quyền kiểm soát các validator còn lại thông qua một backdoor không được ghi lại trong whitepaper. Sau khi chiếm được bốn validator, họ chỉ cần một validator thứ năm – may mắn (hay không may) là validator đó thuộc về một đối tác cũng lưu key trên cloud giống Sky Mavis. Tổng cộng, attacker đã kiểm soát năm validator và rút toàn bộ số ETH và USDC trong bridge.
Góc nhìn phản trực giác của tôi: đây không phải là một vụ hack do lỗi smart contract, mà là do trust model yếu. Nhiều người đổ lỗi cho kỹ thuật mã hóa, nhưng thực chất vấn đề nằm ở chỗ Sky Mavis đã tập trung quyền lực vào tay một nhóm nhỏ. Họ có thể dễ dàng triển khai multi-party computation (MPC) hoặc sử dụng threshold signature scheme (TSS) để phân tán private key, nhưng họ đã chọn sự đơn giản vì tốc độ phát triển. Bài học ở đây: bridge security là vấn đề của toàn ngành, không riêng gì Ronin. Bất kỳ cầu nối nào dùng validator set đều có cùng một điểm yếu – sự tập trung quyền quyết định vào một vài thực thể. Ngay cả những cầu nối lớn như Wormhole hay Multichain cũng từng bị tấn công vì lý do tương tự.
Trong quá trình audit của tôi, tôi thường phát hiện các validator set yếu chính là điểm chết. Một lần tôi audit một giao thức zk-rollup, họ dùng một bộ sequencer tập trung để xác thực proof. Tôi báo cáo rằng nếu sequencer bị hack thì toàn bộ hệ thống sụp đổ, nhưng đội ngũ phát triển bảo "chúng tôi có multi-sig". Đa chữ ký không phải là giải pháp – nó chỉ làm tăng chi phí cho attacker, không ngăn được kịch bản tấn công phối hợp. Khi bạn đặt tất cả private key vào cùng một khu vực địa lý, cùng một nhóm quản trị, thì về mặt kỹ thuật bạn đang xây dựng một hệ thống tập trung với vỏ bọc phi tập trung.
Hậu quả của vụ Ronin Bridge không chỉ là mất 625 triệu USD. Nó khiến Axie Infinity mất 80% người dùng trong vòng sáu tháng, làm lung lay niềm tin vào toàn bộ hệ sinh thái game blockchain. Nhưng điều đáng nói hơn là bài học về thiết kế trust model. Các dự án DeFi cần nhận ra rằng: cầu nối không nên dựa vào một nhóm validator nhỏ; chúng cần cơ chế xác thực dựa trên bằng chứng mật mã như light client + zero-knowledge proof. Đó là cách duy nhất để loại bỏ điểm tập trung quyền lực.
Kể từ đó, tôi có một nguyên tắc khi audit bất kỳ cầu nối nào: tôi luôn kiểm tra danh sách validator và xem họ có thực sự độc lập về mặt vận hành không. Nếu tôi thấy ba trong năm validator có cùng địa chỉ IP hoặc cùng thuộc một tổ chức, tôi sẽ gắn cờ đỏ ngay lập tức. Ronin là một hồi chuông cảnh tỉnh, nhưng nó sẽ không phải là vụ cuối cùng nếu chúng ta không thay đổi cách nghĩ về "phi tập trung".
Liệu chúng ta có đang xây dựng một hệ thống phi tập trung thực sự, hay chỉ là một phiên bản tập trung khác được che đậy bằng smart contract?