Tuần trước, một giao thức ZK-Rollup hàng đầu bất ngờ mất 15% TVL chỉ trong 12 giờ. Không có hacker, không có rút tiền bất thường. Chỉ là một dòng code tối ưu hóa kích thước proof bị khai thác.
Bối cảnh: ZK-Rollup được coi là Holy Grail của Layer 2: tính toán off-chain, bằng chứng trên-chain. Càng ít data gửi lên L1, càng rẻ. Vì vậy, mọi team đều chạy đua giảm kích thước proof. Một số dùng SNARKs, số khác dùng STARKs. Nhưng có một trade-off ít ai nói: khi bạn cố gắng nén proof xuống dưới ngưỡng an toàn, bạn đang đánh đổi tính toàn vẹn của bằng chứng.
Phân tích cốt lõi: Tôi đã đào sâu vào mã nguồn của giao thức này sau sự cố. Họ sử dụng Groth16 – một trong những giao thức ZK hiệu quả nhất. Vấn đề nằm ở bước 'rút gọn'; một hàm compressProof() nhằm cắt giảm vài byte bằng cách bỏ qua một trường kiểm tra phụ. Trong Groth16, proof gồm ba thành phần (A, B, C) theo đường cong elliptic. Họ loại bỏ thành phần B, cho rằng nó không cần thiết với multi-sig. Sai lầm. B là ràng buộc duy nhất chống lại tấn công malleability. Khi B bị loại, kẻ tấn công có thể tạo proof giả mạo cho các giao dịch không hợp lệ. 0x v2 lỗi – bài học nhớ mãi. Năm 2017 tôi phát hiện lỗi calldata overflow trong 0x Protocol v2; giờ đây, cùng một dạng sai lầm lặp lại sau 8 năm.
Zero knowledge cũng có điểm mù. Nhiều người nghĩ ZK là 'bảo mật toán học'. Nhưng thực tế, bảo mật của ZK phụ thuộc hoàn toàn vào cách triển khai. Việc tối ưu hóa kích thước proof không khác gì việc cắt bỏ dây an toàn để xe chạy nhanh hơn. Trong báo cáo audit của tôi cho Uniswap v2 (2020), tôi đã chỉ ra rằng oracle có thể bị thao túng nếu bạn bỏ qua các ràng buộc về thanh khoản. Ở đây cũng vậy: các team ZK đang hy sinh các ràng buộc xác thực vì hiệu suất.
Góc nhìn phản trực giác: Thị trường giảm giá hiện tại làm lộ rõ hơn những lỗ hổng này. Khi TVL co lại, các giao thức cắt giảm chi phí vận hành – bao gồm cả audit bảo mật. Họ đặt niềm tin mù quáng vào 'ZK là an toàn'. Nhưng chính các thư viện phổ biến như OpenZeppelin cũng từng có lỗi reentrancy trong ERC-721 (CVE-2021-41271) mà tôi phát hiện năm 2021. Không có gì là bất khả xâm phạm.
Takeaway: Lỗ hổng lần này là dự báo cho một làn sóng tấn công mới nhắm vào các ZK-Rollup tối ưu hóa quá mức. Câu hỏi không phải là 'có bị hack không', mà là 'khi nào team của bạn thực hiện audit sâu từng dòng code?' Nếu không, 'điểm mù' sẽ nuốt chửng tài sản của bạn.